root/lang/c/msgpack/trunk/cpp/test.cpp @ 18599

Revision 18599, 1.5 kB (checked in by frsyuki, 6 years ago)

lang/c/msgpack: added C++ binding

Line 
1#include <iostream>
2#include <msgpack/unpack.hpp>
3
4class checker {
5public:
6        void check(const char* d, size_t len, msgpack::object should) {
7                try {
8                        std::cout << "----" << std::endl;
9                        msgpack::object o;
10                        try {
11                                o = msgpack::unpack(d, len, m_zone);
12                        } catch (std::runtime_error& e) {
13                                std::cout << should << std::endl;
14                                std::cout << "**" << e.what() << "**" << std::endl;
15                                return;
16                        }
17                        std::cout << o << std::endl;
18                        if(o != should) {
19                                std::cout << "** TEST FAILED **" << std::endl;
20                        }
21                } catch (...) { m_zone.clear(); throw; }
22                m_zone.clear();
23        }
24private:
25        msgpack::zone m_zone;
26};
27
28int main(void)
29{
30
31checker c;
32
33{  // SimpleValue
34        msgpack::zone z;
35        const char d[] = {
36                0x93, 0xc0, 0xc2, 0xc3,
37        };
38        c.check(d, sizeof(d),
39                z.narray(
40                        z.nnil(), z.nfalse(), z.ntrue()
41                )
42        );
43}
44
45{  // Fixnum
46        msgpack::zone z;
47        const char d[] = {
48                0x92,
49                        0x93, 0x00, 0x40, 0x7f,
50                        0x93, 0xe0, 0xf0, 0xff,
51        };
52        c.check(d, sizeof(d),
53                z.narray(
54                        z.narray(
55                                z.nu8(0),
56                                z.nu8(64),
57                                z.nu8(127)
58                        ),
59                        z.narray(
60                                z.ni8(-32),
61                                z.ni8(-16),
62                                z.ni8(-1)
63                        )
64                )
65        );
66}
67
68{  // FixArray
69        msgpack::zone z;
70        const char d[] = {
71                0x92,
72                        0x90,
73                        0x91,
74                                0x91, 0xc0,
75        };
76        c.check(d, sizeof(d),
77                z.narray(
78                        z.narray(),
79                        z.narray(
80                                z.narray(
81                                        z.nnil()
82                                )
83                        )
84                )
85        );
86}
87
88{  // FixRaw
89        msgpack::zone z;
90        const char d[] = {
91                0x94,
92                        0xa0,
93                        0xa1, 'a',
94                        0xa2, 'b', 'c',
95                        0xa3, 'd', 'e', 'f',
96        };
97        c.check(d, sizeof(d),
98                z.narray(
99                        z.nraw("", 0),
100                        z.nraw("a", 1),
101                        z.nraw("bc", 2),
102                        z.nraw("def", 3)
103                )
104        );
105}
106
107
108return 0;
109}
110
Note: See TracBrowser for help on using the browser.