mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-23 09:14:00 +01:00
add test/cases.json
This commit is contained in:
parent
3d3af3284e
commit
fb3e11408c
51
test/README.md
Normal file
51
test/README.md
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
MessagePack cross-language test cases
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
## cases
|
||||||
|
|
||||||
|
Valid serialized data are stored in "cases.mpac" and "cases_compact.mpac".
|
||||||
|
These files describe same objects. And "cases.json" describes an array of the described objects.
|
||||||
|
|
||||||
|
Thus you can verify your implementations as comparing the objects.
|
||||||
|
|
||||||
|
|
||||||
|
## crosslang
|
||||||
|
|
||||||
|
The *crosslang* tool reads serialized data from stdin and writes re-serialize data to stdout.
|
||||||
|
|
||||||
|
There are C++ and Ruby implementation of crosslang tool. You can verify your implementation
|
||||||
|
as comparing that implementations.
|
||||||
|
|
||||||
|
### C++ version
|
||||||
|
|
||||||
|
$ cd ../cpp && ./configure && make && make install
|
||||||
|
or
|
||||||
|
$ port install msgpack # MacPorts
|
||||||
|
|
||||||
|
$ g++ -Wall -lmsgpack crosslang.cc
|
||||||
|
|
||||||
|
Usage: ./crosslang [in-file] [out-file]
|
||||||
|
|
||||||
|
This tool is for testing of MessagePack implementation.
|
||||||
|
This does following behavior:
|
||||||
|
|
||||||
|
1. Reads objects serialized by MessagePack from <in-file> (default: stdin)
|
||||||
|
2. Re-serializes the objects using C++ implementation of MessagePack (Note that C++ implementation is considered valid)
|
||||||
|
3. Writes the re-serialized objects into <out-file> (default: stdout)
|
||||||
|
|
||||||
|
### Ruby version
|
||||||
|
|
||||||
|
$ gem install msgpack
|
||||||
|
or
|
||||||
|
$ port install rb_msgpack # MacPorts
|
||||||
|
|
||||||
|
$ ruby crosslang.rb
|
||||||
|
Usage: crosslang.rb [in-file] [out-file]
|
||||||
|
|
||||||
|
This tool is for testing of MessagePack implementation.
|
||||||
|
This does following behavior:
|
||||||
|
|
||||||
|
1. Reads objects serialized by MessagePack from <in-file> (default: stdin)
|
||||||
|
2. Re-serializes the objects using Ruby implementation of MessagePack (Note that Ruby implementation is considered valid)
|
||||||
|
3. Writes the re-serialized objects into <out-file> (default: stdout)
|
||||||
|
|
1
test/cases.json
Normal file
1
test/cases.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
[false,true,null,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,127,127,255,65535,4294967295,-32,-32,-128,-32768,-2147483648,0.0,-0.0,1.0,-1.0,"a","a","a","","","",[0],[0],[0],[],[],[],{},{},{},{"a":97},{"a":97},{"a":97},[[]],[["a"]]]
|
@ -3,6 +3,7 @@
|
|||||||
#
|
#
|
||||||
require 'rubygems' rescue nil
|
require 'rubygems' rescue nil
|
||||||
require 'msgpack'
|
require 'msgpack'
|
||||||
|
require 'json'
|
||||||
|
|
||||||
source = <<EOF
|
source = <<EOF
|
||||||
c2 # false
|
c2 # false
|
||||||
@ -65,6 +66,7 @@ bytes = source.strip.split(/\s+/).map {|x| x.to_i(16) }.pack('C*')
|
|||||||
|
|
||||||
objs = []
|
objs = []
|
||||||
compact_bytes = ""
|
compact_bytes = ""
|
||||||
|
|
||||||
pac = MessagePack::Unpacker.new
|
pac = MessagePack::Unpacker.new
|
||||||
pac.feed(bytes)
|
pac.feed(bytes)
|
||||||
pac.each {|obj|
|
pac.each {|obj|
|
||||||
@ -73,6 +75,8 @@ pac.each {|obj|
|
|||||||
compact_bytes << obj.to_msgpack
|
compact_bytes << obj.to_msgpack
|
||||||
}
|
}
|
||||||
|
|
||||||
|
json = objs.to_json
|
||||||
|
|
||||||
# self check
|
# self check
|
||||||
cpac = MessagePack::Unpacker.new
|
cpac = MessagePack::Unpacker.new
|
||||||
cpac.feed(compact_bytes)
|
cpac.feed(compact_bytes)
|
||||||
@ -88,4 +92,5 @@ cpac.each {|cobj|
|
|||||||
|
|
||||||
File.open("cases.mpac","w") {|f| f.write(bytes) }
|
File.open("cases.mpac","w") {|f| f.write(bytes) }
|
||||||
File.open("cases_compact.mpac","w") {|f| f.write(compact_bytes) }
|
File.open("cases_compact.mpac","w") {|f| f.write(compact_bytes) }
|
||||||
|
File.open("cases.json","w") {|f| f.write(json) }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user