summaryrefslogtreecommitdiff
path: root/cpp/test.cpp
diff options
context:
space:
mode:
authorfrsyuki <frsyuki@5a5092ae-2292-43ba-b2d5-dcab9c1a2731>2009-02-15 09:09:56 +0000
committerfrsyuki <frsyuki@5a5092ae-2292-43ba-b2d5-dcab9c1a2731>2009-02-15 09:09:56 +0000
commitf41c20a2503411393012d01e3f3c3ea0e9c7dde8 (patch)
tree32260b706400e4359bb707a690ade418185857e9 /cpp/test.cpp
parent9b95875d85fb802f6dd0fc1fe0544bef4be1fbc5 (diff)
downloadmsgpack-python-f41c20a2503411393012d01e3f3c3ea0e9c7dde8.tar.gz
lang/c/msgpack: added C++ binding msgpack::pack
git-svn-id: file:///Users/frsyuki/project/msgpack-git/svn/x@53 5a5092ae-2292-43ba-b2d5-dcab9c1a2731
Diffstat (limited to 'cpp/test.cpp')
-rw-r--r--cpp/test.cpp155
1 files changed, 86 insertions, 69 deletions
diff --git a/cpp/test.cpp b/cpp/test.cpp
index 423a6bd..12e9150 100644
--- a/cpp/test.cpp
+++ b/cpp/test.cpp
@@ -1,12 +1,16 @@
#include <iostream>
+#include <string>
#include <msgpack/unpack.hpp>
+#include <msgpack/pack.hpp>
class checker {
public:
void check(const char* d, size_t len, msgpack::object should) {
+ using msgpack::object;
try {
std::cout << "----" << std::endl;
- msgpack::object o;
+
+ object o;
try {
o = msgpack::unpack(d, len, m_zone);
} catch (std::runtime_error& e) {
@@ -14,10 +18,25 @@ public:
std::cout << "**" << e.what() << "**" << std::endl;
return;
}
+
std::cout << o << std::endl;
if(o != should) {
std::cout << "** TEST FAILED **" << std::endl;
}
+
+ try {
+ std::string s;
+ msgpack::pack(s, o);
+ object ro = msgpack::unpack(s.data(), s.size(), m_zone);
+ if(ro != o) { throw std::runtime_error("NOT MATCH"); }
+ } catch (std::runtime_error& e) {
+ std::cout << "** REUNPACK FAILED **" << std::endl;
+ std::cout << e.what() << std::endl;
+ } catch (...) {
+ std::cout << "** REUNPACK FAILED **" << std::endl;
+ std::cout << "unknown error" << std::endl;
+ }
+
} catch (...) { m_zone.clear(); throw; }
m_zone.clear();
}
@@ -27,84 +46,82 @@ private:
int main(void)
{
+ checker c;
-checker c;
-
-{ // SimpleValue
- msgpack::zone z;
- const char d[] = {
- 0x93, 0xc0, 0xc2, 0xc3,
- };
- c.check(d, sizeof(d),
- z.narray(
- z.nnil(), z.nfalse(), z.ntrue()
- )
- );
-}
-
-{ // Fixnum
- msgpack::zone z;
- const char d[] = {
- 0x92,
- 0x93, 0x00, 0x40, 0x7f,
- 0x93, 0xe0, 0xf0, 0xff,
- };
- c.check(d, sizeof(d),
- z.narray(
+ { // SimpleValue
+ msgpack::zone z;
+ const char d[] = {
+ 0x93, 0xc0, 0xc2, 0xc3,
+ };
+ c.check(d, sizeof(d),
z.narray(
- z.nu8(0),
- z.nu8(64),
- z.nu8(127)
- ),
- z.narray(
- z.ni8(-32),
- z.ni8(-16),
- z.ni8(-1)
+ z.nnil(), z.nfalse(), z.ntrue()
)
- )
- );
-}
+ );
+ }
-{ // FixArray
- msgpack::zone z;
- const char d[] = {
- 0x92,
- 0x90,
- 0x91,
- 0x91, 0xc0,
- };
- c.check(d, sizeof(d),
- z.narray(
- z.narray(),
+ { // Fixnum
+ msgpack::zone z;
+ const char d[] = {
+ 0x92,
+ 0x93, 0x00, 0x40, 0x7f,
+ 0x93, 0xe0, 0xf0, 0xff,
+ };
+ c.check(d, sizeof(d),
z.narray(
z.narray(
- z.nnil()
+ z.nu8(0),
+ z.nu8(64),
+ z.nu8(127)
+ ),
+ z.narray(
+ z.ni8(-32),
+ z.ni8(-16),
+ z.ni8(-1)
)
)
- )
- );
-}
+ );
+ }
-{ // FixRaw
- msgpack::zone z;
- const char d[] = {
- 0x94,
- 0xa0,
- 0xa1, 'a',
- 0xa2, 'b', 'c',
- 0xa3, 'd', 'e', 'f',
- };
- c.check(d, sizeof(d),
- z.narray(
- z.nraw("", 0),
- z.nraw("a", 1),
- z.nraw("bc", 2),
- z.nraw("def", 3)
- )
- );
-}
+ { // FixArray
+ msgpack::zone z;
+ const char d[] = {
+ 0x92,
+ 0x90,
+ 0x91,
+ 0x91, 0xc0,
+ };
+ c.check(d, sizeof(d),
+ z.narray(
+ z.narray(),
+ z.narray(
+ z.narray(
+ z.nnil()
+ )
+ )
+ )
+ );
+ }
+ { // FixRaw
+ msgpack::zone z;
+ const char d[] = {
+ 0x94,
+ 0xa0,
+ 0xa1, 'a',
+ 0xa2, 'b', 'c',
+ 0xa3, 'd', 'e', 'f',
+ };
+ c.check(d, sizeof(d),
+ z.narray(
+ z.nraw("", 0),
+ z.nraw("a", 1),
+ z.nraw("bc", 2),
+ z.nraw("def", 3)
+ )
+ );
+ }
-return 0;
+ return 0;
}