mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-19 04:52:59 +01:00

git-svn-id: file:///Users/frsyuki/project/msgpack-git/svn/x@54 5a5092ae-2292-43ba-b2d5-dcab9c1a2731
123 lines
2.2 KiB
Ruby
123 lines
2.2 KiB
Ruby
require 'msgpack'
|
|
|
|
@up = MessagePack::Unpacker.new
|
|
|
|
def check(bytes, should)
|
|
puts "----"
|
|
@up.reset
|
|
src = bytes.pack('C*')
|
|
ret = @up.execute(src, 0)
|
|
if ret != src.length
|
|
puts "** EXTRA BYTES **"
|
|
end
|
|
puts bytes.map{|x|"%x"%x}.join(' ')
|
|
data = @up.data
|
|
p data
|
|
if data != should
|
|
puts "** TEST FAILED **"
|
|
p should
|
|
end
|
|
end
|
|
|
|
# SimpleValue
|
|
check([
|
|
0x93, 0xc0, 0xc2, 0xc3,
|
|
], [nil,false,true])
|
|
|
|
# Fixnum
|
|
check([
|
|
0x92,
|
|
0x93, 0x00, 0x40, 0x7f,
|
|
0x93, 0xe0, 0xf0, 0xff,
|
|
], [[0,64,127], [-32,-16,-1]])
|
|
|
|
# FixArray
|
|
check([
|
|
0x92,
|
|
0x90,
|
|
0x91,
|
|
0x91, 0xc0,
|
|
], [[],[[nil]]])
|
|
|
|
|
|
# FixRaw
|
|
check([
|
|
0x94,
|
|
0xa0,
|
|
0xa1, ?a,
|
|
0xa2, ?b, ?c,
|
|
0xa3, ?d, ?e, ?f,
|
|
], ["","a","bc","def"])
|
|
|
|
# FixMap
|
|
check([
|
|
0x82,
|
|
0xc2, 0x81,
|
|
0xc0, 0xc0,
|
|
0xc3, 0x81,
|
|
0xc0, 0x80,
|
|
], {false=>{nil=>nil}, true=>{nil=>{}}})
|
|
|
|
# unsigned int
|
|
check([
|
|
0x99,
|
|
0xcc, 0,
|
|
0xcc, 128,
|
|
0xcc, 255,
|
|
0xcd, 0x00, 0x00,
|
|
0xcd, 0x80, 0x00,
|
|
0xcd, 0xff, 0xff,
|
|
0xce, 0x00, 0x00, 0x00, 0x00,
|
|
0xce, 0x80, 0x00, 0x00, 0x00,
|
|
0xce, 0xff, 0xff, 0xff, 0xff,
|
|
], [0, 128, 255, 0, 32768, 65535, 0, 2147483648, 4294967295])
|
|
|
|
# signed int
|
|
check([
|
|
0x99,
|
|
0xd0, 0,
|
|
0xd0, 128,
|
|
0xd0, 255,
|
|
0xd1, 0x00, 0x00,
|
|
0xd1, 0x80, 0x00,
|
|
0xd1, 0xff, 0xff,
|
|
0xd2, 0x00, 0x00, 0x00, 0x00,
|
|
0xd2, 0x80, 0x00, 0x00, 0x00,
|
|
0xd2, 0xff, 0xff, 0xff, 0xff,
|
|
], [0, -128, -1, 0, -32768, -1, 0, -2147483648, -1])
|
|
|
|
# raw
|
|
check([
|
|
0x96,
|
|
0xda, 0x00, 0x00,
|
|
0xda, 0x00, 0x01, ?a,
|
|
0xda, 0x00, 0x02, ?a, ?b,
|
|
0xdb, 0x00, 0x00, 0x00, 0x00,
|
|
0xdb, 0x00, 0x00, 0x00, 0x01, ?a,
|
|
0xdb, 0x00, 0x00, 0x00, 0x02, ?a, ?b,
|
|
], ["", "a", "ab", "", "a", "ab"])
|
|
|
|
# array
|
|
check([
|
|
0x96,
|
|
0xdc, 0x00, 0x00,
|
|
0xdc, 0x00, 0x01, 0xc0,
|
|
0xdc, 0x00, 0x02, 0xc2, 0xc3,
|
|
0xdd, 0x00, 0x00, 0x00, 0x00,
|
|
0xdd, 0x00, 0x00, 0x00, 0x01, 0xc0,
|
|
0xdd, 0x00, 0x00, 0x00, 0x02, 0xc2, 0xc3
|
|
], [[], [nil], [false,true], [], [nil], [false,true]])
|
|
|
|
# map
|
|
check([
|
|
0x96,
|
|
0xde, 0x00, 0x00,
|
|
0xde, 0x00, 0x01, 0xc0, 0xc2,
|
|
0xde, 0x00, 0x02, 0xc0, 0xc2, 0xc3, 0xc2,
|
|
0xdf, 0x00, 0x00, 0x00, 0x00,
|
|
0xdf, 0x00, 0x00, 0x00, 0x01, 0xc0, 0xc2,
|
|
0xdf, 0x00, 0x00, 0x00, 0x02, 0xc0, 0xc2, 0xc3, 0xc2,
|
|
], [{}, {nil=>false}, {true=>false, nil=>false}, {}, {nil=>false}, {true=>false, nil=>false}])
|
|
|
|
|