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