mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-20 22:31:33 +02:00
php: fiexed unpacker
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
Check for reference serialization
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -74,13 +74,7 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,13 +85,7 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,13 +95,7 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for reference serialization
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -74,7 +74,13 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,7 +91,13 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -95,7 +107,13 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Recursive objects
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -160,11 +160,6 @@ object(Obj4)#%d (2) {
|
||||
[%r"?a"?:("Obj4":)?private"?%r]=>
|
||||
int(100)
|
||||
[%r"?obj"?:("Obj4":)?private"?%r]=>
|
||||
object(Obj4)#%d (2) {
|
||||
[%r"?a"?:("Obj4":)?private"?%r]=>
|
||||
int(100)
|
||||
[%r"?obj"?:("Obj4":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
OK
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Recursive objects
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -160,6 +160,11 @@ object(Obj4)#%d (2) {
|
||||
[%r"?a"?:("Obj4":)?private"?%r]=>
|
||||
int(100)
|
||||
[%r"?obj"?:("Obj4":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
object(Obj4)#%d (2) {
|
||||
[%r"?a"?:("Obj4":)?private"?%r]=>
|
||||
int(100)
|
||||
[%r"?obj"?:("Obj4":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
OK
|
||||
|
@@ -3,8 +3,8 @@ Cyclic array test
|
||||
--INI--
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -62,17 +62,7 @@ array(2) {
|
||||
string(1) "e"
|
||||
}
|
||||
["f"]=>
|
||||
&array(2) {
|
||||
["a"]=>
|
||||
array(2) {
|
||||
["b"]=>
|
||||
string(1) "c"
|
||||
["d"]=>
|
||||
string(1) "e"
|
||||
}
|
||||
["f"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
OK
|
||||
@@ -84,17 +74,7 @@ array(1) {
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
&array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
array(1) {
|
||||
@@ -107,17 +87,7 @@ array(1) {
|
||||
[2]=>
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
&array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -131,17 +101,7 @@ array(1) {
|
||||
[2]=>
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
&array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
string(1) "b"
|
||||
[2]=>
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,8 +3,8 @@ Cyclic array test
|
||||
--INI--
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -62,7 +62,17 @@ array(2) {
|
||||
string(1) "e"
|
||||
}
|
||||
["f"]=>
|
||||
*RECURSION*
|
||||
&array(2) {
|
||||
["a"]=>
|
||||
array(2) {
|
||||
["b"]=>
|
||||
string(1) "c"
|
||||
["d"]=>
|
||||
string(1) "e"
|
||||
}
|
||||
["f"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
||||
@@ -74,7 +84,17 @@ array(1) {
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
*RECURSION*
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
&array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
array(1) {
|
||||
@@ -87,7 +107,17 @@ array(1) {
|
||||
[2]=>
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
*RECURSION*
|
||||
&array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -101,7 +131,17 @@ array(1) {
|
||||
[2]=>
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
*RECURSION*
|
||||
&array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
string(1) "b"
|
||||
[2]=>
|
||||
array(1) {
|
||||
["foo"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Serialize object into session, full set
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -107,281 +107,29 @@ array(3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
["test"]=>
|
||||
@@ -391,281 +139,29 @@ array(3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Serialize object into session, full set
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -107,29 +107,281 @@ array(3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
object(Foo)#3 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
["d3"]=>
|
||||
object(Bar)#4 (3) {
|
||||
["d1"]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
["test"]=>
|
||||
@@ -139,29 +391,281 @@ array(3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
object(Bar)#5 (3) {
|
||||
["d1"]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d2"?:("Bar":)?private"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
[%r"?d3"?:protected"?%r]=>
|
||||
object(Foo)#6 (3) {
|
||||
[%r"?d1"?:("Foo":)?private"?%r]=>
|
||||
*RECURSION*
|
||||
[%r"?d2"?:protected"?%r]=>
|
||||
*RECURSION*
|
||||
["d3"]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@ Closure
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.0') < 0) {
|
||||
echo "skip closures only for PHP 5.3.0+";
|
||||
echo "skip closures only for PHP 5.3.0 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for buffered streaming unserialization
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -240,13 +240,7 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for buffered streaming unserialization
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -240,7 +240,13 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for unbuffered streaming unserialization
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -245,13 +245,7 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for unbuffered streaming unserialization
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -245,7 +245,13 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
315
php/tests/064.phpt
Normal file
315
php/tests/064.phpt
Normal file
@@ -0,0 +1,315 @@
|
||||
--TEST--
|
||||
Check for buffered streaming unserialization (single)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack')) {
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
$unpacker = new MessagePackUnpacker();
|
||||
|
||||
function test($type, $variable, $test = null) {
|
||||
$serialized = msgpack_serialize($variable);
|
||||
|
||||
global $unpacker;
|
||||
|
||||
$length = strlen($serialized);
|
||||
|
||||
for ($i = 0; $i < $length;) {
|
||||
$len = rand(1, 10);
|
||||
$str = substr($serialized, $i, $len);
|
||||
|
||||
$unpacker->feed($str);
|
||||
if ($unpacker->execute())
|
||||
{
|
||||
$unserialized = $unpacker->data();
|
||||
var_dump($unserialized);
|
||||
$unpacker->reset();
|
||||
}
|
||||
|
||||
$i += $len;
|
||||
}
|
||||
|
||||
if (!is_bool($test))
|
||||
{
|
||||
echo $unserialized === $variable ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $test || $unserialized == $variable ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
test('null', null);
|
||||
|
||||
test('bool: true', true);
|
||||
test('bool: false', false);
|
||||
|
||||
test('zero: 0', 0);
|
||||
test('small: 1', 1);
|
||||
test('small: -1', -1);
|
||||
test('medium: 1000', 1000);
|
||||
test('medium: -1000', -1000);
|
||||
test('large: 100000', 100000);
|
||||
test('large: -100000', -100000);
|
||||
|
||||
test('double: 123.456', 123.456);
|
||||
|
||||
test('empty: ""', "");
|
||||
test('string: "foobar"', "foobar");
|
||||
|
||||
test('array', array(), false);
|
||||
test('array(1, 2, 3)', array(1, 2, 3), false);
|
||||
test('array(array(1, 2, 3), arr...', array(array(1, 2, 3), array(4, 5, 6), array(7, 8, 9)), false);
|
||||
|
||||
test('array("foo", "foo", "foo")', array("foo", "foo", "foo"), false);
|
||||
test('array("one" => 1, "two" => 2))', array("one" => 1, "two" => 2), false);
|
||||
test('array("kek" => "lol", "lol" => "kek")', array("kek" => "lol", "lol" => "kek"), false);
|
||||
test('array("" => "empty")', array("" => "empty"), false);
|
||||
|
||||
$a = array('foo');
|
||||
test('array($a, $a)', array($a, $a), false);
|
||||
test('array(&$a, &$a)', array(&$a, &$a), false);
|
||||
|
||||
$a = array(null);
|
||||
$b = array(&$a);
|
||||
$a[0] = &$b;
|
||||
|
||||
test('cyclic', $a, true);
|
||||
|
||||
$a = array(
|
||||
'a' => array(
|
||||
'b' => 'c',
|
||||
'd' => 'e'
|
||||
),
|
||||
'f' => array(
|
||||
'g' => 'h'
|
||||
)
|
||||
);
|
||||
|
||||
test('array', $a, false);
|
||||
|
||||
class Obj {
|
||||
public $a;
|
||||
protected $b;
|
||||
private $c;
|
||||
|
||||
function __construct($a, $b, $c) {
|
||||
$this->a = $a;
|
||||
$this->b = $b;
|
||||
$this->c = $c;
|
||||
}
|
||||
}
|
||||
|
||||
test('object', new Obj(1, 2, 3), false);
|
||||
|
||||
test('object', array(new Obj(1, 2, 3), new Obj(4, 5, 6)), false);
|
||||
|
||||
$o = new Obj(1, 2, 3);
|
||||
|
||||
test('object', array(&$o, &$o), false);
|
||||
--EXPECTF--
|
||||
NULL
|
||||
OK
|
||||
bool(true)
|
||||
OK
|
||||
bool(false)
|
||||
OK
|
||||
int(0)
|
||||
OK
|
||||
int(1)
|
||||
OK
|
||||
int(-1)
|
||||
OK
|
||||
int(1000)
|
||||
OK
|
||||
int(-1000)
|
||||
OK
|
||||
int(100000)
|
||||
OK
|
||||
int(-100000)
|
||||
OK
|
||||
float(123.456)
|
||||
OK
|
||||
string(0) ""
|
||||
OK
|
||||
string(6) "foobar"
|
||||
OK
|
||||
array(0) {
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(4)
|
||||
[1]=>
|
||||
int(5)
|
||||
[2]=>
|
||||
int(6)
|
||||
}
|
||||
[2]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(7)
|
||||
[1]=>
|
||||
int(8)
|
||||
[2]=>
|
||||
int(9)
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
[1]=>
|
||||
string(3) "foo"
|
||||
[2]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["one"]=>
|
||||
int(1)
|
||||
["two"]=>
|
||||
int(2)
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["kek"]=>
|
||||
string(3) "lol"
|
||||
["lol"]=>
|
||||
string(3) "kek"
|
||||
}
|
||||
OK
|
||||
array(1) {
|
||||
[""]=>
|
||||
string(5) "empty"
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
[1]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
[1]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["a"]=>
|
||||
array(2) {
|
||||
["b"]=>
|
||||
string(1) "c"
|
||||
["d"]=>
|
||||
string(1) "e"
|
||||
}
|
||||
["f"]=>
|
||||
array(1) {
|
||||
["g"]=>
|
||||
string(1) "h"
|
||||
}
|
||||
}
|
||||
OK
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(4)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(5)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(6)
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
&object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
&object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
}
|
||||
OK
|
321
php/tests/064b.phpt
Normal file
321
php/tests/064b.phpt
Normal file
@@ -0,0 +1,321 @@
|
||||
--TEST--
|
||||
Check for buffered streaming unserialization (single)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack')) {
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
$unpacker = new MessagePackUnpacker();
|
||||
|
||||
function test($type, $variable, $test = null) {
|
||||
$serialized = msgpack_serialize($variable);
|
||||
|
||||
global $unpacker;
|
||||
|
||||
$length = strlen($serialized);
|
||||
|
||||
for ($i = 0; $i < $length;) {
|
||||
$len = rand(1, 10);
|
||||
$str = substr($serialized, $i, $len);
|
||||
|
||||
$unpacker->feed($str);
|
||||
if ($unpacker->execute())
|
||||
{
|
||||
$unserialized = $unpacker->data();
|
||||
var_dump($unserialized);
|
||||
$unpacker->reset();
|
||||
}
|
||||
|
||||
$i += $len;
|
||||
}
|
||||
|
||||
if (!is_bool($test))
|
||||
{
|
||||
echo $unserialized === $variable ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $test || $unserialized == $variable ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
test('null', null);
|
||||
|
||||
test('bool: true', true);
|
||||
test('bool: false', false);
|
||||
|
||||
test('zero: 0', 0);
|
||||
test('small: 1', 1);
|
||||
test('small: -1', -1);
|
||||
test('medium: 1000', 1000);
|
||||
test('medium: -1000', -1000);
|
||||
test('large: 100000', 100000);
|
||||
test('large: -100000', -100000);
|
||||
|
||||
test('double: 123.456', 123.456);
|
||||
|
||||
test('empty: ""', "");
|
||||
test('string: "foobar"', "foobar");
|
||||
|
||||
test('array', array(), false);
|
||||
test('array(1, 2, 3)', array(1, 2, 3), false);
|
||||
test('array(array(1, 2, 3), arr...', array(array(1, 2, 3), array(4, 5, 6), array(7, 8, 9)), false);
|
||||
|
||||
test('array("foo", "foo", "foo")', array("foo", "foo", "foo"), false);
|
||||
test('array("one" => 1, "two" => 2))', array("one" => 1, "two" => 2), false);
|
||||
test('array("kek" => "lol", "lol" => "kek")', array("kek" => "lol", "lol" => "kek"), false);
|
||||
test('array("" => "empty")', array("" => "empty"), false);
|
||||
|
||||
$a = array('foo');
|
||||
test('array($a, $a)', array($a, $a), false);
|
||||
test('array(&$a, &$a)', array(&$a, &$a), false);
|
||||
|
||||
$a = array(null);
|
||||
$b = array(&$a);
|
||||
$a[0] = &$b;
|
||||
|
||||
test('cyclic', $a, true);
|
||||
|
||||
$a = array(
|
||||
'a' => array(
|
||||
'b' => 'c',
|
||||
'd' => 'e'
|
||||
),
|
||||
'f' => array(
|
||||
'g' => 'h'
|
||||
)
|
||||
);
|
||||
|
||||
test('array', $a, false);
|
||||
|
||||
class Obj {
|
||||
public $a;
|
||||
protected $b;
|
||||
private $c;
|
||||
|
||||
function __construct($a, $b, $c) {
|
||||
$this->a = $a;
|
||||
$this->b = $b;
|
||||
$this->c = $c;
|
||||
}
|
||||
}
|
||||
|
||||
test('object', new Obj(1, 2, 3), false);
|
||||
|
||||
test('object', array(new Obj(1, 2, 3), new Obj(4, 5, 6)), false);
|
||||
|
||||
$o = new Obj(1, 2, 3);
|
||||
|
||||
test('object', array(&$o, &$o), false);
|
||||
--EXPECTF--
|
||||
NULL
|
||||
OK
|
||||
bool(true)
|
||||
OK
|
||||
bool(false)
|
||||
OK
|
||||
int(0)
|
||||
OK
|
||||
int(1)
|
||||
OK
|
||||
int(-1)
|
||||
OK
|
||||
int(1000)
|
||||
OK
|
||||
int(-1000)
|
||||
OK
|
||||
int(100000)
|
||||
OK
|
||||
int(-100000)
|
||||
OK
|
||||
float(123.456)
|
||||
OK
|
||||
string(0) ""
|
||||
OK
|
||||
string(6) "foobar"
|
||||
OK
|
||||
array(0) {
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(4)
|
||||
[1]=>
|
||||
int(5)
|
||||
[2]=>
|
||||
int(6)
|
||||
}
|
||||
[2]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(7)
|
||||
[1]=>
|
||||
int(8)
|
||||
[2]=>
|
||||
int(9)
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
[1]=>
|
||||
string(3) "foo"
|
||||
[2]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["one"]=>
|
||||
int(1)
|
||||
["two"]=>
|
||||
int(2)
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["kek"]=>
|
||||
string(3) "lol"
|
||||
["lol"]=>
|
||||
string(3) "kek"
|
||||
}
|
||||
OK
|
||||
array(1) {
|
||||
[""]=>
|
||||
string(5) "empty"
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
[1]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
[1]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["a"]=>
|
||||
array(2) {
|
||||
["b"]=>
|
||||
string(1) "c"
|
||||
["d"]=>
|
||||
string(1) "e"
|
||||
}
|
||||
["f"]=>
|
||||
array(1) {
|
||||
["g"]=>
|
||||
string(1) "h"
|
||||
}
|
||||
}
|
||||
OK
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(4)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(5)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(6)
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
&object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
&object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
}
|
||||
OK
|
320
php/tests/065.phpt
Normal file
320
php/tests/065.phpt
Normal file
@@ -0,0 +1,320 @@
|
||||
--TEST--
|
||||
Check for unbuffered streaming unserialization (single)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack')) {
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
$unpacker = new MessagePackUnpacker();
|
||||
|
||||
function test($type, $variable, $test = null) {
|
||||
$serialized = msgpack_serialize($variable);
|
||||
|
||||
global $unpacker;
|
||||
|
||||
$length = strlen($serialized);
|
||||
|
||||
$str = "";
|
||||
$offset = 0;
|
||||
|
||||
for ($i = 0; $i < $length;) {
|
||||
$len = rand(1, 10);
|
||||
$str .= substr($serialized, $i, $len);
|
||||
|
||||
if ($unpacker->execute($str, $offset))
|
||||
{
|
||||
$unserialized = $unpacker->data();
|
||||
var_dump($unserialized);
|
||||
|
||||
$unpacker->reset();
|
||||
$str = "";
|
||||
$offset = 0;
|
||||
}
|
||||
|
||||
$i += $len;
|
||||
}
|
||||
|
||||
if (!is_bool($test))
|
||||
{
|
||||
echo $unserialized === $variable ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $test || $unserialized == $variable ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
test('null', null);
|
||||
|
||||
test('boo:l true', true);
|
||||
test('bool: true', false);
|
||||
|
||||
test('zero: 0', 0);
|
||||
test('small: 1', 1);
|
||||
test('small: -1', -1);
|
||||
test('medium: 1000', 1000);
|
||||
test('medium: -1000', -1000);
|
||||
test('large: 100000', 100000);
|
||||
test('large: -100000', -100000);
|
||||
|
||||
test('double: 123.456', 123.456);
|
||||
|
||||
test('empty: ""', "");
|
||||
test('string: "foobar"', "foobar");
|
||||
|
||||
test('empty: array', array(), false);
|
||||
test('empty: array(1, 2, 3)', array(1, 2, 3), false);
|
||||
test('empty: array(array(1, 2, 3), arr...', array(array(1, 2, 3), array(4, 5, 6), array(7, 8, 9)), false);
|
||||
|
||||
test('array("foo", "foo", "foo")', array("foo", "foo", "foo"), false);
|
||||
test('array("one" => 1, "two" => 2))', array("one" => 1, "two" => 2), false);
|
||||
test('array("kek" => "lol", "lol" => "kek")', array("kek" => "lol", "lol" => "kek"), false);
|
||||
test('array("" => "empty")', array("" => "empty"), false);
|
||||
|
||||
$a = array('foo');
|
||||
test('array($a, $a)', array($a, $a), false);
|
||||
test('array(&$a, &$a)', array(&$a, &$a), false);
|
||||
|
||||
$a = array(null);
|
||||
$b = array(&$a);
|
||||
$a[0] = &$b;
|
||||
|
||||
test('cyclic', $a, true);
|
||||
|
||||
$a = array(
|
||||
'a' => array(
|
||||
'b' => 'c',
|
||||
'd' => 'e'
|
||||
),
|
||||
'f' => array(
|
||||
'g' => 'h'
|
||||
)
|
||||
);
|
||||
|
||||
test('array', $a, false);
|
||||
|
||||
class Obj {
|
||||
public $a;
|
||||
protected $b;
|
||||
private $c;
|
||||
|
||||
function __construct($a, $b, $c) {
|
||||
$this->a = $a;
|
||||
$this->b = $b;
|
||||
$this->c = $c;
|
||||
}
|
||||
}
|
||||
|
||||
test('object', new Obj(1, 2, 3), false);
|
||||
|
||||
test('object', array(new Obj(1, 2, 3), new Obj(4, 5, 6)), false);
|
||||
|
||||
$o = new Obj(1, 2, 3);
|
||||
|
||||
test('object', array(&$o, &$o), false);
|
||||
--EXPECTF--
|
||||
NULL
|
||||
OK
|
||||
bool(true)
|
||||
OK
|
||||
bool(false)
|
||||
OK
|
||||
int(0)
|
||||
OK
|
||||
int(1)
|
||||
OK
|
||||
int(-1)
|
||||
OK
|
||||
int(1000)
|
||||
OK
|
||||
int(-1000)
|
||||
OK
|
||||
int(100000)
|
||||
OK
|
||||
int(-100000)
|
||||
OK
|
||||
float(123.456)
|
||||
OK
|
||||
string(0) ""
|
||||
OK
|
||||
string(6) "foobar"
|
||||
OK
|
||||
array(0) {
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(4)
|
||||
[1]=>
|
||||
int(5)
|
||||
[2]=>
|
||||
int(6)
|
||||
}
|
||||
[2]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(7)
|
||||
[1]=>
|
||||
int(8)
|
||||
[2]=>
|
||||
int(9)
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
[1]=>
|
||||
string(3) "foo"
|
||||
[2]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["one"]=>
|
||||
int(1)
|
||||
["two"]=>
|
||||
int(2)
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["kek"]=>
|
||||
string(3) "lol"
|
||||
["lol"]=>
|
||||
string(3) "kek"
|
||||
}
|
||||
OK
|
||||
array(1) {
|
||||
[""]=>
|
||||
string(5) "empty"
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
[1]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
[1]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["a"]=>
|
||||
array(2) {
|
||||
["b"]=>
|
||||
string(1) "c"
|
||||
["d"]=>
|
||||
string(1) "e"
|
||||
}
|
||||
["f"]=>
|
||||
array(1) {
|
||||
["g"]=>
|
||||
string(1) "h"
|
||||
}
|
||||
}
|
||||
OK
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(4)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(5)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(6)
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
&object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
&object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
}
|
||||
OK
|
326
php/tests/065b.phpt
Normal file
326
php/tests/065b.phpt
Normal file
@@ -0,0 +1,326 @@
|
||||
--TEST--
|
||||
Check for unbuffered streaming unserialization (single)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack')) {
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
$unpacker = new MessagePackUnpacker();
|
||||
|
||||
function test($type, $variable, $test = null) {
|
||||
$serialized = msgpack_serialize($variable);
|
||||
|
||||
global $unpacker;
|
||||
|
||||
$length = strlen($serialized);
|
||||
|
||||
$str = "";
|
||||
$offset = 0;
|
||||
|
||||
for ($i = 0; $i < $length;) {
|
||||
$len = rand(1, 10);
|
||||
$str .= substr($serialized, $i, $len);
|
||||
|
||||
if ($unpacker->execute($str, $offset))
|
||||
{
|
||||
$unserialized = $unpacker->data();
|
||||
var_dump($unserialized);
|
||||
|
||||
$unpacker->reset();
|
||||
$str = "";
|
||||
$offset = 0;
|
||||
}
|
||||
|
||||
$i += $len;
|
||||
}
|
||||
|
||||
if (!is_bool($test))
|
||||
{
|
||||
echo $unserialized === $variable ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $test || $unserialized == $variable ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
test('null', null);
|
||||
|
||||
test('boo:l true', true);
|
||||
test('bool: true', false);
|
||||
|
||||
test('zero: 0', 0);
|
||||
test('small: 1', 1);
|
||||
test('small: -1', -1);
|
||||
test('medium: 1000', 1000);
|
||||
test('medium: -1000', -1000);
|
||||
test('large: 100000', 100000);
|
||||
test('large: -100000', -100000);
|
||||
|
||||
test('double: 123.456', 123.456);
|
||||
|
||||
test('empty: ""', "");
|
||||
test('string: "foobar"', "foobar");
|
||||
|
||||
test('empty: array', array(), false);
|
||||
test('empty: array(1, 2, 3)', array(1, 2, 3), false);
|
||||
test('empty: array(array(1, 2, 3), arr...', array(array(1, 2, 3), array(4, 5, 6), array(7, 8, 9)), false);
|
||||
|
||||
test('array("foo", "foo", "foo")', array("foo", "foo", "foo"), false);
|
||||
test('array("one" => 1, "two" => 2))', array("one" => 1, "two" => 2), false);
|
||||
test('array("kek" => "lol", "lol" => "kek")', array("kek" => "lol", "lol" => "kek"), false);
|
||||
test('array("" => "empty")', array("" => "empty"), false);
|
||||
|
||||
$a = array('foo');
|
||||
test('array($a, $a)', array($a, $a), false);
|
||||
test('array(&$a, &$a)', array(&$a, &$a), false);
|
||||
|
||||
$a = array(null);
|
||||
$b = array(&$a);
|
||||
$a[0] = &$b;
|
||||
|
||||
test('cyclic', $a, true);
|
||||
|
||||
$a = array(
|
||||
'a' => array(
|
||||
'b' => 'c',
|
||||
'd' => 'e'
|
||||
),
|
||||
'f' => array(
|
||||
'g' => 'h'
|
||||
)
|
||||
);
|
||||
|
||||
test('array', $a, false);
|
||||
|
||||
class Obj {
|
||||
public $a;
|
||||
protected $b;
|
||||
private $c;
|
||||
|
||||
function __construct($a, $b, $c) {
|
||||
$this->a = $a;
|
||||
$this->b = $b;
|
||||
$this->c = $c;
|
||||
}
|
||||
}
|
||||
|
||||
test('object', new Obj(1, 2, 3), false);
|
||||
|
||||
test('object', array(new Obj(1, 2, 3), new Obj(4, 5, 6)), false);
|
||||
|
||||
$o = new Obj(1, 2, 3);
|
||||
|
||||
test('object', array(&$o, &$o), false);
|
||||
--EXPECTF--
|
||||
NULL
|
||||
OK
|
||||
bool(true)
|
||||
OK
|
||||
bool(false)
|
||||
OK
|
||||
int(0)
|
||||
OK
|
||||
int(1)
|
||||
OK
|
||||
int(-1)
|
||||
OK
|
||||
int(1000)
|
||||
OK
|
||||
int(-1000)
|
||||
OK
|
||||
int(100000)
|
||||
OK
|
||||
int(-100000)
|
||||
OK
|
||||
float(123.456)
|
||||
OK
|
||||
string(0) ""
|
||||
OK
|
||||
string(6) "foobar"
|
||||
OK
|
||||
array(0) {
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(4)
|
||||
[1]=>
|
||||
int(5)
|
||||
[2]=>
|
||||
int(6)
|
||||
}
|
||||
[2]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(7)
|
||||
[1]=>
|
||||
int(8)
|
||||
[2]=>
|
||||
int(9)
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(3) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
[1]=>
|
||||
string(3) "foo"
|
||||
[2]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["one"]=>
|
||||
int(1)
|
||||
["two"]=>
|
||||
int(2)
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["kek"]=>
|
||||
string(3) "lol"
|
||||
["lol"]=>
|
||||
string(3) "kek"
|
||||
}
|
||||
OK
|
||||
array(1) {
|
||||
[""]=>
|
||||
string(5) "empty"
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
[1]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
[1]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
string(3) "foo"
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
["a"]=>
|
||||
array(2) {
|
||||
["b"]=>
|
||||
string(1) "c"
|
||||
["d"]=>
|
||||
string(1) "e"
|
||||
}
|
||||
["f"]=>
|
||||
array(1) {
|
||||
["g"]=>
|
||||
string(1) "h"
|
||||
}
|
||||
}
|
||||
OK
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(4)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(5)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(6)
|
||||
}
|
||||
}
|
||||
OK
|
||||
array(2) {
|
||||
[0]=>
|
||||
&object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
&object(Obj)#%d (3) {
|
||||
["a"]=>
|
||||
int(1)
|
||||
[%r"?b"?:protected"?%r]=>
|
||||
int(2)
|
||||
[%r"?c"?:("Obj":)?private"?%r]=>
|
||||
int(3)
|
||||
}
|
||||
}
|
||||
OK
|
70
php/tests/066.phpt
Normal file
70
php/tests/066.phpt
Normal file
@@ -0,0 +1,70 @@
|
||||
--TEST--
|
||||
Extra bytes buffered streaming unserialization (single)
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack')) {
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
$unpacker = new MessagePackUnpacker();
|
||||
|
||||
function test($type, $variable, $test = null) {
|
||||
global $unpacker;
|
||||
|
||||
foreach ($variable as $var)
|
||||
{
|
||||
$serialized = pack('H*', $var);
|
||||
|
||||
$length = strlen($serialized);
|
||||
|
||||
for ($i = 0; $i < $length;) {
|
||||
$len = rand(1, 10);
|
||||
$str = substr($serialized, $i, $len);
|
||||
|
||||
$unpacker->feed($str);
|
||||
|
||||
while (true) {
|
||||
if ($unpacker->execute()) {
|
||||
$unserialized = $unpacker->data();
|
||||
var_dump($unserialized);
|
||||
$unpacker->reset();
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
$i += $len;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test('array(1, 2, 3)', array('9301020392'));
|
||||
test('array(1, 2, 3), array(3, 9), 4', array('9301020392', '030904'));
|
||||
--EXPECTF--
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
int(3)
|
||||
[1]=>
|
||||
int(9)
|
||||
}
|
||||
}
|
||||
int(4)
|
74
php/tests/067.phpt
Normal file
74
php/tests/067.phpt
Normal file
@@ -0,0 +1,74 @@
|
||||
--TEST--
|
||||
Extra bytes unbuffered streaming unserialization (single)
|
||||
--SKIPIF--
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack')) {
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
$unpacker = new MessagePackUnpacker();
|
||||
|
||||
function test($type, $variable, $test = null) {
|
||||
global $unpacker;
|
||||
|
||||
$str = "";
|
||||
$offset = 0;
|
||||
|
||||
foreach ($variable as $var)
|
||||
{
|
||||
$serialized = pack('H*', $var);
|
||||
|
||||
$length = strlen($serialized);
|
||||
|
||||
for ($i = 0; $i < $length;) {
|
||||
$len = rand(1, 10);
|
||||
$str .= substr($serialized, $i, $len);
|
||||
|
||||
while (true) {
|
||||
if ($unpacker->execute($str, $offset)) {
|
||||
$unserialized = $unpacker->data();
|
||||
var_dump($unserialized);
|
||||
|
||||
$unpacker->reset();
|
||||
$str = substr($str, $offset);
|
||||
$offset = 0;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
$i += $len;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test('array(1, 2, 3)', array('9301020392'));
|
||||
test('array(1, 2, 3), array(3, 9), 4', array('9301020392', '030904'));
|
||||
--EXPECTF--
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
[0]=>
|
||||
int(1)
|
||||
[1]=>
|
||||
int(2)
|
||||
[2]=>
|
||||
int(3)
|
||||
}
|
||||
[1]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
int(3)
|
||||
[1]=>
|
||||
int(9)
|
||||
}
|
||||
}
|
||||
int(4)
|
@@ -2,8 +2,8 @@
|
||||
Check for alias functions
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -224,13 +224,7 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for alias functions
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -224,7 +224,13 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for class methods
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -226,13 +226,7 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for class methods
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -226,7 +226,13 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for class methods unpacker
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -266,13 +266,7 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for class methods unpacker
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -266,7 +266,13 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for class unpacker
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 and lower";
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -267,13 +267,7 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Check for class unpacker
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.3.2') <= 0) {
|
||||
echo "skip tests in PHP 5.3.3";
|
||||
if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
|
||||
echo "skip tests in PHP 5.3.2 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -267,7 +267,13 @@ array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
&array(1) {
|
||||
[0]=>
|
||||
&array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user