1--TEST--
2unpack of template converter: class unpacker (string: OPT_PHPONLY=false)
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    $msgpack->setOption(MessagePack::OPT_PHPONLY, false);
21
22    $serialized = $msgpack->pack($variable);
23
24    $unserialized = $msgpack->unpack($serialized, $object);
25
26    var_dump($unserialized);
27    if ($result)
28    {
29        echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
30    }
31    else
32    {
33        echo 'SKIP', PHP_EOL;
34    }
35}
36
37class MyObj
38{
39    private $data = null;
40    private $priv = "privdata";
41    public  $pdata = null;
42    public $subary = null;
43
44    function __construct()
45    {
46        $this->data = "datadata";
47        $this->subary = new SubObj();
48    }
49}
50
51class SubObj {
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$obj = new MyObj();
63$obj->pdata = "pubdata";
64$obj->subary->subpdata = "subpubdata";
65
66$tpl = "MyObj";
67
68test("recursive object /w string", $obj, $tpl, $obj);
69
70--EXPECTF--
71object(MyObj)#%d (4) {
72  [%r"?data"?:("MyObj":)?private"?%r]=>
73  string(8) "datadata"
74  [%r"?priv"?:("MyObj":)?private"?%r]=>
75  string(8) "privdata"
76  ["pdata"]=>
77  string(7) "pubdata"
78  ["subary"]=>
79  object(SubObj)#%d (3) {
80    [%r"?subdata"?:("SubObj":)?private"?%r]=>
81    string(11) "subdatadata"
82    [%r"?subpriv"?:("SubObj":)?private"?%r]=>
83    string(11) "subprivdata"
84    ["subpdata"]=>
85    string(10) "subpubdata"
86  }
87}
88OK
89