mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-19 13:02:13 +01:00
cpp: add cases.mpac test
This commit is contained in:
parent
18fa2d1af4
commit
6056f93910
@ -25,4 +25,6 @@ cp -f ../msgpack/pack_define.h src/msgpack/
|
|||||||
cp -f ../msgpack/pack_template.h src/msgpack/
|
cp -f ../msgpack/pack_template.h src/msgpack/
|
||||||
cp -f ../msgpack/unpack_define.h src/msgpack/
|
cp -f ../msgpack/unpack_define.h src/msgpack/
|
||||||
cp -f ../msgpack/unpack_template.h src/msgpack/
|
cp -f ../msgpack/unpack_template.h src/msgpack/
|
||||||
|
cp -f ../test/cases.mpac test/
|
||||||
|
cp -f ../test/cases_compact.mpac test/
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ check_PROGRAMS = \
|
|||||||
object \
|
object \
|
||||||
convert \
|
convert \
|
||||||
buffer \
|
buffer \
|
||||||
|
cases \
|
||||||
msgpackc_test \
|
msgpackc_test \
|
||||||
msgpack_test
|
msgpack_test
|
||||||
|
|
||||||
@ -28,7 +29,11 @@ convert_SOURCES = convert.cc
|
|||||||
buffer_SOURCES = buffer.cc
|
buffer_SOURCES = buffer.cc
|
||||||
buffer_LDADD = -lz
|
buffer_LDADD = -lz
|
||||||
|
|
||||||
|
cases_SOURCES = cases.cc
|
||||||
|
|
||||||
msgpackc_test_SOURCES = msgpackc_test.cpp
|
msgpackc_test_SOURCES = msgpackc_test.cpp
|
||||||
|
|
||||||
msgpack_test_SOURCES = msgpack_test.cpp
|
msgpack_test_SOURCES = msgpack_test.cpp
|
||||||
|
|
||||||
|
EXTRA_DIST = cases.mpac cases_compact.mpac
|
||||||
|
|
||||||
|
36
cpp/test/cases.cc
Normal file
36
cpp/test/cases.cc
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include <msgpack.hpp>
|
||||||
|
#include <fstream>
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
static void feed_file(msgpack::unpacker& pac, const char* path)
|
||||||
|
{
|
||||||
|
std::ifstream fin(path);
|
||||||
|
while(true) {
|
||||||
|
pac.reserve_buffer(32*1024);
|
||||||
|
fin.read(pac.buffer(), pac.buffer_capacity());
|
||||||
|
if(fin.bad()) {
|
||||||
|
throw std::runtime_error("read failed");
|
||||||
|
}
|
||||||
|
pac.buffer_consumed(fin.gcount());
|
||||||
|
if(fin.fail()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(cases, format)
|
||||||
|
{
|
||||||
|
msgpack::unpacker pac;
|
||||||
|
msgpack::unpacker pac_compact;
|
||||||
|
|
||||||
|
feed_file(pac, "cases.mpac");
|
||||||
|
feed_file(pac_compact, "cases_compact.mpac");
|
||||||
|
|
||||||
|
msgpack::unpacked result;
|
||||||
|
while(pac.next(&result)) {
|
||||||
|
msgpack::unpacked result_compact;
|
||||||
|
EXPECT_TRUE( pac_compact.next(&result_compact) );
|
||||||
|
EXPECT_EQ(result_compact.get(), result.get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -63,14 +63,29 @@ EOF
|
|||||||
source.gsub!(/\#.+$/,'')
|
source.gsub!(/\#.+$/,'')
|
||||||
bytes = source.strip.split(/\s+/).map {|x| x.to_i(16) }.pack('C*')
|
bytes = source.strip.split(/\s+/).map {|x| x.to_i(16) }.pack('C*')
|
||||||
|
|
||||||
|
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|
|
||||||
p obj
|
p obj
|
||||||
|
objs << obj
|
||||||
compact_bytes << obj.to_msgpack
|
compact_bytes << obj.to_msgpack
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# self check
|
||||||
|
cpac = MessagePack::Unpacker.new
|
||||||
|
cpac.feed(compact_bytes)
|
||||||
|
cpac.each {|cobj|
|
||||||
|
obj = objs.shift
|
||||||
|
if obj != cobj
|
||||||
|
puts "** SELF CHECK FAILED **"
|
||||||
|
puts "expected: #{obj.inspect}"
|
||||||
|
puts "actual: #{cobj.inspect}"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
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) }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user