<?php
/**
* Copyright (c) 2009, PHPServer
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the Cesar Rodas nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY CESAR RODAS ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL CESAR RODAS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
include("bserialize.php");
if (!is_callable("file_put_contents")) {
function file_put_contents($f,$v) {
$fp = fopen($f,"wb");
fwrite($fp,$v);
fclose($fp);
}
}
$c = new bserialize;
$data = array(
/* signed/unsigned 1-byte number */
1,-5,9,4,66,-99,565,
/* signed/unsigned 2-bytes number */
1024,-8363,-43433,-9463,17345,
/* signed/unsigned 4-bytes number */
18978897,-645590,4290392,
/* signed/unsigned float number */
5.99,6.88,-99787.456,
/* boolean */
true,false,
/* string */
" ","some weird test",str_repeat("php rules",100000) /* large text */
);
/* object */
$o->data = $data; /* array into object */
$data[] = $o;
$data[] = new bserialize;
/* array */
$data[] = $data;
$data[] = array();
$data[] = array(array(array(1,array())));
/**/
foreach($data as $i=>$element) {
$test = $c->unserialize($c->serialize($element));
if($element == $test) {
echo "Test $i (".gettype($element).") [PASSED]\n";
} else {
if (is_object($element)) {
/* php4 fails while comparing objects, so I compares its properties */
$test = array_diff(get_object_vars($element),get_object_vars($test));
if ($test==array()) {
echo "Test $i (".gettype($element).") [PASSED]\n";
continue;
}
}
echo "Test $i (".gettype($element).") [FAILED]\n";
}
}
?>
|