summaryrefslogtreecommitdiff
path: root/ruby/test_format.rb
diff options
context:
space:
mode:
authorfrsyuki <frsyuki@5a5092ae-2292-43ba-b2d5-dcab9c1a2731>2009-02-15 09:09:55 +0000
committerfrsyuki <frsyuki@5a5092ae-2292-43ba-b2d5-dcab9c1a2731>2009-02-15 09:09:55 +0000
commit269cda016dd6ea92b66e55ebe283965924e67bc1 (patch)
treefbfe2f8e3720be165a0180045b9be941d506417b /ruby/test_format.rb
downloadmsgpack-python-269cda016dd6ea92b66e55ebe283965924e67bc1.tar.gz
lang/c/msgpack: added Messagepack, a binary-based efficient data interchange format.
git-svn-id: file:///Users/frsyuki/project/msgpack-git/svn/x@48 5a5092ae-2292-43ba-b2d5-dcab9c1a2731
Diffstat (limited to 'ruby/test_format.rb')
-rw-r--r--ruby/test_format.rb128
1 files changed, 128 insertions, 0 deletions
diff --git a/ruby/test_format.rb b/ruby/test_format.rb
new file mode 100644
index 0000000..7c2e8fc
--- /dev/null
+++ b/ruby/test_format.rb
@@ -0,0 +1,128 @@
+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}])
+
+# string
+check([
+ 0x92,
+ 0xc1, 0x00,
+ 0xc1, ?a, ?b, ?c, 0x00,
+], ["", "abc"])
+