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