mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-13 14:45:38 +02:00
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
This commit is contained in:
161
cpp/test.cpp
161
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)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
);
|
||||
}
|
||||
|
||||
{ // 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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user