summaryrefslogtreecommitdiff
path: root/php/tests
diff options
context:
space:
mode:
authoradvect <advect@gmail.com>2010-10-30 16:06:50 +0900
committeradvect <advect@gmail.com>2010-10-30 16:06:50 +0900
commitbad69fd3977fca94d643a88d819badaca4839fd5 (patch)
tree87ca7d41a9d66fdef51e5b035d39ba44d62380c7 /php/tests
parentb4ae6bf82c8bcd6012c805a2206fcb81ad39dd0b (diff)
downloadmsgpack-python-bad69fd3977fca94d643a88d819badaca4839fd5.tar.gz
php: fiexed unpacker
Diffstat (limited to 'php/tests')
-rw-r--r--php/tests/009.phpt28
-rw-r--r--php/tests/009b.phpt28
-rw-r--r--php/tests/024.phpt11
-rw-r--r--php/tests/024b.phpt11
-rw-r--r--php/tests/026.phpt52
-rw-r--r--php/tests/026b.phpt52
-rw-r--r--php/tests/028.phpt544
-rw-r--r--php/tests/028b.phpt544
-rw-r--r--php/tests/042.phpt2
-rw-r--r--php/tests/060.phpt12
-rw-r--r--php/tests/060b.phpt12
-rw-r--r--php/tests/061.phpt12
-rw-r--r--php/tests/061b.phpt12
-rw-r--r--php/tests/064.phpt315
-rw-r--r--php/tests/064b.phpt321
-rw-r--r--php/tests/065.phpt320
-rw-r--r--php/tests/065b.phpt326
-rw-r--r--php/tests/066.phpt70
-rw-r--r--php/tests/067.phpt74
-rw-r--r--php/tests/070.phpt12
-rw-r--r--php/tests/070b.phpt12
-rw-r--r--php/tests/071.phpt12
-rw-r--r--php/tests/071b.phpt12
-rw-r--r--php/tests/072.phpt12
-rw-r--r--php/tests/072b.phpt12
-rw-r--r--php/tests/073.phpt12
-rw-r--r--php/tests/073b.phpt12
27 files changed, 2134 insertions, 708 deletions
diff --git a/php/tests/009.phpt b/php/tests/009.phpt
index 9992988..a1534c9 100644
--- a/php/tests/009.phpt
+++ b/php/tests/009.phpt
@@ -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*
}
}
}
diff --git a/php/tests/009b.phpt b/php/tests/009b.phpt
index 7765d62..10e7259 100644
--- a/php/tests/009b.phpt
+++ b/php/tests/009b.phpt
@@ -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*
+ }
+ }
}
}
}
diff --git a/php/tests/024.phpt b/php/tests/024.phpt
index 9b185f7..97db2a7 100644
--- a/php/tests/024.phpt
+++ b/php/tests/024.phpt
@@ -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
diff --git a/php/tests/024b.phpt b/php/tests/024b.phpt
index 7c691be..c7612d7 100644
--- a/php/tests/024b.phpt
+++ b/php/tests/024b.phpt
@@ -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
diff --git a/php/tests/026.phpt b/php/tests/026.phpt
index c243ef5..383289d 100644
--- a/php/tests/026.phpt
+++ b/php/tests/026.phpt
@@ -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*
}
}
}
diff --git a/php/tests/026b.phpt b/php/tests/026b.phpt
index f7a3381..9eef7cb 100644
--- a/php/tests/026b.phpt
+++ b/php/tests/026b.phpt
@@ -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*
+ }
+ }
}
}
}
diff --git a/php/tests/028.phpt b/php/tests/028.phpt
index 00db675..1d326ce 100644
--- a/php/tests/028.phpt
+++ b/php/tests/028.phpt
@@ -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*
}
}
}
diff --git a/php/tests/028b.phpt b/php/tests/028b.phpt
index 7331a57..0efba18 100644
--- a/php/tests/028b.phpt
+++ b/php/tests/028b.phpt
@@ -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*
+ }
+ }
}
}
}
diff --git a/php/tests/042.phpt b/php/tests/042.phpt
index 2ba73ac..83e8bc7 100644
--- a/php/tests/042.phpt
+++ b/php/tests/042.phpt
@@ -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
diff --git a/php/tests/060.phpt b/php/tests/060.phpt
index 649d788..3ea97eb 100644
--- a/php/tests/060.phpt
+++ b/php/tests/060.phpt
@@ -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*
}
}
}
diff --git a/php/tests/060b.phpt b/php/tests/060b.phpt
index 0b947c8..a2e50bc 100644
--- a/php/tests/060b.phpt
+++ b/php/tests/060b.phpt
@@ -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*
+ }
+ }
}
}
}
diff --git a/php/tests/061.phpt b/php/tests/061.phpt
index 7ecc0c9..2b42d31 100644
--- a/php/tests/061.phpt
+++ b/php/tests/061.phpt
@@ -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*
}
}
}
diff --git a/php/tests/061b.phpt b/php/tests/061b.phpt
index efb3a9b..21706db 100644
--- a/php/tests/061b.phpt
+++ b/php/tests/061b.phpt
@@ -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*
+ }
+ }
}
}
}
diff --git a/php/tests/064.phpt b/php/tests/064.phpt
new file mode 100644
index 0000000..a7a2f3b
--- /dev/null
+++ b/php/tests/064.phpt
@@ -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
diff --git a/php/tests/064b.phpt b/php/tests/064b.phpt
new file mode 100644
index 0000000..aba7a2d
--- /dev/null
+++ b/php/tests/064b.phpt
@@ -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
diff --git a/php/tests/065.phpt b/php/tests/065.phpt
new file mode 100644
index 0000000..c37ca12
--- /dev/null
+++ b/php/tests/065.phpt
@@ -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
diff --git a/php/tests/065b.phpt b/php/tests/065b.phpt
new file mode 100644
index 0000000..c623d9a
--- /dev/null
+++ b/php/tests/065b.phpt
@@ -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
diff --git a/php/tests/066.phpt b/php/tests/066.phpt
new file mode 100644
index 0000000..d2e430d
--- /dev/null
+++ b/php/tests/066.phpt
@@ -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)
diff --git a/php/tests/067.phpt b/php/tests/067.phpt
new file mode 100644
index 0000000..96c1442
--- /dev/null
+++ b/php/tests/067.phpt
@@ -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)
diff --git a/php/tests/070.phpt b/php/tests/070.phpt
index 893023b..affcc72 100644
--- a/php/tests/070.phpt
+++ b/php/tests/070.phpt
@@ -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*
}
}
}
diff --git a/php/tests/070b.phpt b/php/tests/070b.phpt
index 109ddc1..0aaa4e7 100644
--- a/php/tests/070b.phpt
+++ b/php/tests/070b.phpt
@@ -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*
+ }
+ }
}
}
}
diff --git a/php/tests/071.phpt b/php/tests/071.phpt
index 431303b..20041d4 100644
--- a/php/tests/071.phpt
+++ b/php/tests/071.phpt
@@ -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*
}
}
}
diff --git a/php/tests/071b.phpt b/php/tests/071b.phpt
index 770d06e..f663073 100644
--- a/php/tests/071b.phpt
+++ b/php/tests/071b.phpt
@@ -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*
+ }
+ }
}
}
}
diff --git a/php/tests/072.phpt b/php/tests/072.phpt
index ea79a56..0f89e0a 100644
--- a/php/tests/072.phpt
+++ b/php/tests/072.phpt
@@ -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*
}
}
}
diff --git a/php/tests/072b.phpt b/php/tests/072b.phpt
index c7b0c3c..05fe41e 100644
--- a/php/tests/072b.phpt
+++ b/php/tests/072b.phpt
@@ -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*
+ }
+ }
}
}
}
diff --git a/php/tests/073.phpt b/php/tests/073.phpt
index d3a7637..f6a91a6 100644
--- a/php/tests/073.phpt
+++ b/php/tests/073.phpt
@@ -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*
}
}
}
diff --git a/php/tests/073b.phpt b/php/tests/073b.phpt
index 131a534..065a2aa 100644
--- a/php/tests/073b.phpt
+++ b/php/tests/073b.phpt
@@ -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*
+ }
+ }
}
}
}