1--TEST--
2unpack of template converter: multiple variable: class unpacker (array: object)
3--SKIPIF--
4<?php
5if (version_compare(PHP_VERSION, '5.2.0') < 0) {
6    echo "skip tests in PHP 5.2 or newer";
7}
8--FILE--
9<?php
10if(!extension_loaded('msgpack'))
11{
12    dl('msgpack.' . PHP_SHLIB_SUFFIX);
13}
14
15//error_reporting(0);
16
17function test($type, $variable, $object, $result = null)
18{
19    $msgpack = new MessagePack();
20
21    $serialized = $msgpack->pack($variable);
22
23    $unserialized = $msgpack->unpack($serialized, $object);
24
25    var_dump($unserialized);
26    if ($result)
27    {
28        echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
29    }
30    else
31    {
32        echo 'SKIP', PHP_EOL;
33    }
34}
35
36class MyObj
37{
38    private $data = null;
39    private $priv = "privdata";
40    public  $pdata = null;
41    public $subary = null;
42
43    function __construct()
44    {
45        $this->data = "datadata";
46        $this->subary = new SubObj();
47    }
48}
49
50class SubObj
51{
52    private $subdata = null;
53    private $subpriv = "subprivdata";
54    public  $subpdata = null;
55
56    function __construct()
57    {
58        $this->subdata = "subdatadata";
59    }
60}
61
62$obj0 = new MyObj();
63$obj0->pdata = "pubdata0";
64$obj0->subary->subpdata = "subpubdata0";
65$obj1 = new MyObj();
66$obj1->pdata = "pubdata1";
67$obj1->subary->subpdata = "subpubdata1";
68
69$ary = array($obj0, $obj1);
70
71$tpl = array(new MyObj());
72
73test("recursive object list /w instance", $ary, $tpl, $ary);
74
75--EXPECTF--
76array(2) {
77  [0]=>
78  object(MyObj)#%d (4) {
79    [%r"?data"?:("MyObj":)?private"?%r]=>
80    string(8) "datadata"
81    [%r"?priv"?:("MyObj":)?private"?%r]=>
82    string(8) "privdata"
83    ["pdata"]=>
84    string(8) "pubdata0"
85    ["subary"]=>
86    object(SubObj)#%d (3) {
87      [%r"?subdata"?:("SubObj":)?private"?%r]=>
88      string(11) "subdatadata"
89      [%r"?subpriv"?:("SubObj":)?private"?%r]=>
90      string(11) "subprivdata"
91      ["subpdata"]=>
92      string(11) "subpubdata0"
93    }
94  }
95  [1]=>
96  object(MyObj)#%d (4) {
97    [%r"?data"?:("MyObj":)?private"?%r]=>
98    string(8) "datadata"
99    [%r"?priv"?:("MyObj":)?private"?%r]=>
100    string(8) "privdata"
101    ["pdata"]=>
102    string(8) "pubdata1"
103    ["subary"]=>
104    object(SubObj)#%d (3) {
105      [%r"?subdata"?:("SubObj":)?private"?%r]=>
106      string(11) "subdatadata"
107      [%r"?subpriv"?:("SubObj":)?private"?%r]=>
108      string(11) "subprivdata"
109      ["subpdata"]=>
110      string(11) "subpubdata1"
111    }
112  }
113}
114OK
115