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