26 #include "../../codec.h"
30 int main(
int ,
char* [])
32 dccl::dlog.
connect(dccl::logger::ALL, &std::cerr);
36 codec.load<NumericMsg>();
37 codec.info<NumericMsg>(&dccl::dlog);
41 codec.load<TooBigNumericMsg>();
42 bool message_should_fail_load =
false;
43 assert(message_should_fail_load);
47 std::cout <<
"** Note: this error is expected during proper execution of this unit test "
48 "**: Field a failed validation: "
49 "[(dccl.field).max-(dccl.field).min]/(dccl.field).resolution must fit in a "
50 "double-precision floating point value. Please increase min, decrease max, or "
57 msg_in.set_a(10.12345678);
58 msg_in.set_b(11.42106);
59 msg_in.set_u1(18446744073709500000ull);
63 codec.encode(&encoded, msg_in);
66 codec.decode(encoded, &msg_out);
68 msg_in.set_b(11.4211);
69 assert(msg_in.SerializeAsString() == msg_out.SerializeAsString());
72 const int NUM_TESTS = 8;
73 int test_values[NUM_TESTS][4] = {
75 {20, 20, -500000, -500000}, {0, 0, 254000, 254000},
76 {10, 10, -257000, -257000}, {-10, -10, -499000, -499000},
77 {-20, -20, 500000, 500000}, {-19, -20, 499999, 500000},
78 {6, 10, -123400, -123000}, {0, 0, 0, 0},
80 for (
auto& test_value : test_values)
82 NegativePrecisionNumericMsg msg_in_neg, msg_out_neg;
84 msg_in_neg.set_a(test_value[0]);
85 msg_in_neg.set_b(test_value[2]);
87 codec.encode(&enc, msg_in_neg);
88 codec.decode(enc, &msg_out_neg);
90 std::cout <<
"msg_in: " << msg_in_neg.ShortDebugString() << std::endl;
91 std::cout <<
"msg_out: " << msg_out_neg.ShortDebugString() << std::endl;
93 assert(msg_out_neg.a() == test_value[1]);
94 assert(msg_out_neg.b() == test_value[3]);
97 std::cout <<
"all tests passed" << std::endl;