26#include "../../codec.h"
27#include "test/dccl_presence/test.pb.h"
33int main(
int argc,
char* argv[])
36 for (
int i = 1; i < argc; ++i)
38 if (argv[i] && argv[i][0] ==
'-' && argv[i][1] ==
'v' && argv[i][2] ==
'\0')
42 dccl::dlog.
connect(verbose ? dccl::logger::ALL :
dccl::logger::WARN_PLUS, &std::cerr);
45 codec.load<PresenceMsg>();
46 codec.info<PresenceMsg>(&dccl::dlog);
50 dccl::dlog.
is(dccl::logger::INFO) && dccl::dlog <<
"all tests passed" << std::endl;
58 msg_in.set_req_i32(-100);
59 msg_in.set_req_i64(65535);
60 msg_in.set_req_ui32(1022);
61 msg_in.set_req_ui64(101);
62 msg_in.set_req_float(900.12345);
63 msg_in.set_req_double(900.12345678);
64 msg_in.set_req_enum(ENUM2_C);
67 codec.encode(&encoded, msg_in);
69 assert(encoded.size() == 17);
72 codec.decode(encoded, &msg_out);
74 assert(msg_in.req_i32() == msg_out.req_i32());
75 assert(msg_in.req_i64() == msg_out.req_i64());
76 assert(msg_in.req_ui32() == msg_out.req_ui32());
77 assert(msg_in.req_ui64() == msg_out.req_ui64());
78 assert(fabsf(msg_in.req_float() - msg_out.req_float()) < 1e-4);
79 assert(fabs(msg_in.req_double() - msg_out.req_double()) < 1e-7);
80 assert(msg_in.req_enum() == msg_out.req_enum());
82 assert(!msg_out.has_opt_i32());
83 assert(!msg_out.has_opt_i64());
84 assert(!msg_out.has_opt_ui32());
85 assert(!msg_out.has_opt_ui64());
86 assert(!msg_out.has_opt_float());
87 assert(!msg_out.has_opt_double());
88 assert(!msg_out.has_opt_enum());
90 assert(msg_out.repeat_i32_size() == 0);
91 assert(msg_out.repeat_enum_size() == 0);
93 dccl::dlog.
is(dccl::logger::INFO) && dccl::dlog <<
"test1 passed" << std::endl;
101 msg_in.set_req_i32(500);
102 msg_in.set_req_i64(0);
103 msg_in.set_req_ui32(0);
104 msg_in.set_req_ui64(100);
105 msg_in.set_req_float(-900.12345);
106 msg_in.set_req_double(-900.12345678);
107 msg_in.set_req_enum(ENUM2_A);
109 msg_in.set_opt_i32(-100);
110 msg_in.set_opt_i64(65535);
111 msg_in.set_opt_ui32(0);
112 msg_in.set_opt_ui64(1123);
113 msg_in.set_opt_float(-900.12345);
114 msg_in.set_opt_double(900.12345678);
115 msg_in.set_opt_enum(ENUM2_A);
116 msg_in.set_opt_bool(
true);
117 msg_in.set_opt_str(
"ABCDE");
118 msg_in.set_opt_bytes(
"XY");
120 msg_in.add_repeat_i32(500);
121 msg_in.add_repeat_enum(ENUM2_A);
122 msg_in.add_repeat_enum(ENUM2_B);
123 msg_in.add_repeat_enum(ENUM2_C);
126 codec.encode(&encoded, msg_in);
128 assert(encoded.size() == 41);
131 codec.decode(encoded, &msg_out);
133 assert(msg_in.req_i32() == msg_out.req_i32());
134 assert(msg_in.req_i64() == msg_out.req_i64());
135 assert(msg_in.req_ui32() == msg_out.req_ui32());
136 assert(msg_in.req_ui64() == msg_out.req_ui64());
137 assert(fabsf(msg_in.req_float() - msg_out.req_float()) < 1e-4);
138 assert(fabs(msg_in.req_double() - msg_out.req_double()) < 1e-7);
139 assert(msg_in.req_enum() == msg_out.req_enum());
141 assert(msg_out.has_opt_i32());
142 assert(msg_out.has_opt_i64());
143 assert(msg_out.has_opt_ui32());
144 assert(msg_out.has_opt_ui64());
145 assert(msg_out.has_opt_float());
146 assert(msg_out.has_opt_double());
147 assert(msg_out.has_opt_enum());
149 assert(msg_in.opt_i32() == msg_out.opt_i32());
150 assert(msg_in.opt_i64() == msg_out.opt_i64());
151 assert(msg_in.opt_ui32() == msg_out.opt_ui32());
152 assert(msg_in.opt_ui64() == msg_out.opt_ui64());
153 assert(fabsf(msg_in.opt_float() - msg_out.opt_float()) < 1e-4);
154 assert(fabs(msg_in.opt_double() - msg_out.opt_double()) < 1e-7);
155 assert(msg_in.opt_enum() == msg_out.opt_enum());
157 assert(msg_in.repeat_i32_size() == msg_out.repeat_i32_size());
158 assert(std::equal(msg_in.repeat_i32().begin(), msg_in.repeat_i32().end(),
159 msg_out.repeat_i32().begin()));
160 assert(msg_in.repeat_enum_size() == msg_out.repeat_enum_size());
161 assert(std::equal(msg_in.repeat_enum().begin(), msg_in.repeat_enum().end(),
162 msg_out.repeat_enum().begin()));
164 dccl::dlog.
is(dccl::logger::INFO) && dccl::dlog <<
"test2 passed" << std::endl;
The Dynamic CCL enCODer/DECoder. This is the main class you will use to load, encode and decode DCCL ...
bool is(logger::Verbosity verbosity, logger::Group group=logger::GENERAL)
Indicates the verbosity of the Logger until the next std::flush or std::endl. The boolean return is u...
void connect(int verbosity_mask, Slot slot)
Connect the output of one or more given verbosities to a slot (function pointer or similar)
Dynamic Compact Control Language namespace.