1--TEST--
2unpack of template converter: multiple class: 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    private $subdata = null;
52    private $subpriv = "subprivdata";
53    public  $subpdata = null;
54
55    function __construct()
56    {
57        $this->subdata = "subdatadata";
58    }
59}
60
61$obj = new MyObj();
62$obj->pdata = "pubdata";
63$obj->subary->subpdata = "subpubdata";
64
65$ary = array($obj);
66
67$tpl = array(new MyObj());
68
69test("recursive object with object list /w instance", $ary, $tpl, $ary);
70
71--EXPECTF--
72array(1) {
73  [0]=>
74  object(MyObj)#%d (4) {
75    [%r"?data"?:("MyObj":)?private"?%r]=>
76    string(8) "datadata"
77    [%r"?priv"?:("MyObj":)?private"?%r]=>
78    string(8) "privdata"
79    ["pdata"]=>
80    string(7) "pubdata"
81    ["subary"]=>
82    object(SubObj)#%d (3) {
83      [%r"?subdata"?:("SubObj":)?private"?%r]=>
84      string(11) "subdatadata"
85      [%r"?subpriv"?:("SubObj":)?private"?%r]=>
86      string(11) "subprivdata"
87      ["subpdata"]=>
88      string(10) "subpubdata"
89    }
90  }
91}
92OK
93