1--TEST--
2Extra bytes buffered streaming unserialization (single)
3--SKIPIF--
4--FILE--
5<?php
6if(!extension_loaded('msgpack')) {
7    dl('msgpack.' . PHP_SHLIB_SUFFIX);
8}
9
10$unpacker = new MessagePackUnpacker();
11
12function test($type, $variable, $test = null) {
13    global $unpacker;
14
15    foreach ($variable as $var)
16    {
17        $serialized = pack('H*', $var);
18
19        $length = strlen($serialized);
20
21        for ($i = 0; $i < $length;) {
22            $len = rand(1, 10);
23            $str = substr($serialized, $i, $len);
24
25            $unpacker->feed($str);
26
27            while (true) {
28                if ($unpacker->execute()) {
29                    $unserialized = $unpacker->data();
30                    var_dump($unserialized);
31                    $unpacker->reset();
32                } else {
33                    break;
34                }
35            }
36            $i += $len;
37        }
38    }
39}
40
41test('array(1, 2, 3)', array('9301020392'));
42test('array(1, 2, 3), array(3, 9), 4', array('9301020392', '030904'));
43--EXPECTF--
44array(3) {
45  [0]=>
46  int(1)
47  [1]=>
48  int(2)
49  [2]=>
50  int(3)
51}
52array(2) {
53  [0]=>
54  array(3) {
55    [0]=>
56    int(1)
57    [1]=>
58    int(2)
59    [2]=>
60    int(3)
61  }
62  [1]=>
63  array(2) {
64    [0]=>
65    int(3)
66    [1]=>
67    int(9)
68  }
69}
70int(4)
71