24 #include "dccl/codec.h"
25 #include "dccl/field_codec_id.h"
29 using dccl::operator<<;
72 static bool user_id_set;
80 UserCustomIdCodec::user_id = id;
81 UserCustomIdCodec::user_id_set =
true;
84 UserCustomIdCodec::user_id = 0;
85 UserCustomIdCodec::user_id_set =
false;
91 bool dccl::test::UserCustomIdCodec::user_id_set =
false;
94 int main(
int argc,
char *argv[]) {
95 dccl::dlog.
connect(dccl::logger::ALL, &std::cerr);
98 dccl::FieldCodecManager::add<dccl::test::UserCustomIdCodec>(
105 codec.load<TestMessageA>();
106 codec.info<TestMessageA>(&dccl::dlog);
111 codec.load<TestMessageA>();
112 codec.info<TestMessageA>(&dccl::dlog);
118 codec.load<TestMessageB>();
119 codec.info<TestMessageB>(&dccl::dlog);
124 codec.load<TestMessageA>();
125 codec.info<TestMessageA>(&dccl::dlog);
129 unsigned byte_size_user_specified = 1;
140 unsigned byte_size_default = 2;
141 TestMessageA a_default;
149 std::cout <<
"A1: " << a1.ShortDebugString() << std::endl;
150 assert(codec.size(a1) == byte_size_user_specified);
151 codec.encode(&bytes, a1);
152 assert(bytes.size() == byte_size_user_specified);
154 codec.decode(bytes, &a1_out);
155 std::cout <<
"A1 decoded: " << a1_out.ShortDebugString() << std::endl;
156 assert(a1_out.SerializeAsString() == a1.SerializeAsString());
162 std::cout <<
"A2: " << a2.ShortDebugString() << std::endl;
163 assert(codec.size(a2) == byte_size_user_specified);
164 codec.encode(&bytes, a2);
165 assert(bytes.size() == byte_size_user_specified);
167 codec.decode(bytes, &a2_out);
168 std::cout <<
"A2 decoded: " << a2_out.ShortDebugString() << std::endl;
169 assert(a2_out.SerializeAsString() == a2.SerializeAsString());
175 std::cout <<
"B: " << b.ShortDebugString() << std::endl;
176 assert(codec.size(b) == byte_size_user_specified);
177 codec.encode(&bytes, b);
178 assert(bytes.size() == byte_size_user_specified);
180 codec.decode(bytes, &b_out);
181 std::cout <<
"B decoded: " << b_out.ShortDebugString() << std::endl;
182 assert(b_out.SerializeAsString() == b.SerializeAsString());
189 std::cout <<
"A Default: " << a_default.ShortDebugString() << std::endl;
190 assert(codec.size(a_default) == byte_size_default);
191 codec.encode(&bytes, a_default);
192 assert(bytes.size() == byte_size_default);
193 TestMessageA a_default_out;
194 codec.decode(bytes, &a_default_out);
195 std::cout <<
"A Default decoded: " << a_default_out.ShortDebugString()
197 assert(a_default_out.SerializeAsString() ==
198 a_default.SerializeAsString());
202 std::cout <<
"all tests passed" << std::endl;