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