1--TEST--
2Extra bytes unbuffered 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    $str = "";
14    $offset = 0;
15
16    foreach ($variable as $var)
17    {
18        $serialized = pack('H*', $var);
19
20        $length = strlen($serialized);
21
22        for ($i = 0; $i < $length;) {
23            $len = rand(1, 10);
24            $str .= substr($serialized, $i, $len);
25
26            while (true) {
27                if ($unpacker->execute($str, $offset)) {
28                    $unserialized = $unpacker->data();
29                    var_dump($unserialized);
30
31                    $unpacker->reset();
32                    $str = substr($str, $offset);
33                    $offset = 0;
34                } else {
35                    break;
36                }
37            }
38            $i += $len;
39        }
40    }
41}
42
43test('array(1, 2, 3)', array('9301020392'));
44test('array(1, 2, 3), array(3, 9), 4', array('9301020392', '030904'));
45--EXPECTF--
46array(3) {
47  [0]=>
48  int(1)
49  [1]=>
50  int(2)
51  [2]=>
52  int(3)
53}
54array(3) {
55  [0]=>
56  int(1)
57  [1]=>
58  int(2)
59  [2]=>
60  int(3)
61}
62array(2) {
63  [0]=>
64  int(3)
65  [1]=>
66  int(9)
67}
68int(4)
69