From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- .../thrift/lib/cpp/test/SpecializationTest.cpp | 103 +++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 src/jaegertracing/thrift/lib/cpp/test/SpecializationTest.cpp (limited to 'src/jaegertracing/thrift/lib/cpp/test/SpecializationTest.cpp') diff --git a/src/jaegertracing/thrift/lib/cpp/test/SpecializationTest.cpp b/src/jaegertracing/thrift/lib/cpp/test/SpecializationTest.cpp new file mode 100644 index 000000000..008837d31 --- /dev/null +++ b/src/jaegertracing/thrift/lib/cpp/test/SpecializationTest.cpp @@ -0,0 +1,103 @@ +#define _USE_MATH_DEFINES +#include +#include +#include +#include + +using namespace thrift::test::debug; +using namespace apache::thrift::transport; +using namespace apache::thrift::protocol; + +#define BOOST_TEST_MODULE SpecializationTest +#include + +typedef TBinaryProtocolT MyProtocol; +// typedef TBinaryProtocolT MyProtocol; + +BOOST_AUTO_TEST_CASE(test_specialization_1) { + OneOfEach ooe; + ooe.im_true = true; + ooe.im_false = false; + ooe.a_bite = 0x7f; + ooe.integer16 = 27000; + ooe.integer32 = 1 << 24; + ooe.integer64 = (uint64_t)6000 * 1000 * 1000; + ooe.double_precision = M_PI; + ooe.some_characters = "JSON THIS! \"\1"; + ooe.zomg_unicode = "\xd7\n\a\t"; + ooe.base64 = "\1\2\3\255"; + + Nesting n; + n.my_ooe = ooe; + n.my_ooe.integer16 = 16; + n.my_ooe.integer32 = 32; + n.my_ooe.integer64 = 64; + n.my_ooe.double_precision = (std::sqrt(5.0) + 1) / 2; + n.my_ooe.some_characters = ":R (me going \"rrrr\")"; + n.my_ooe.zomg_unicode = "\xd3\x80\xe2\x85\xae\xce\x9d\x20\xd0\x9d\xce" + "\xbf\xe2\x85\xbf\xd0\xbe\xc9\xa1\xd0\xb3\xd0" + "\xb0\xcf\x81\xe2\x84\x8e\x20\xce\x91\x74\x74" + "\xce\xb1\xe2\x85\xbd\xce\xba\xc7\x83\xe2\x80" + "\xbc"; + n.my_bonk.type = 31337; + n.my_bonk.message = "I am a bonk... xor!"; + + HolyMoley hm; + + hm.big.push_back(ooe); + hm.big.push_back(n.my_ooe); + hm.big[0].a_bite = 0x22; + hm.big[1].a_bite = 0x33; + + std::vector stage1; + stage1.push_back("and a one"); + stage1.push_back("and a two"); + hm.contain.insert(stage1); + stage1.clear(); + stage1.push_back("then a one, two"); + stage1.push_back("three!"); + stage1.push_back("FOUR!!"); + hm.contain.insert(stage1); + stage1.clear(); + hm.contain.insert(stage1); + + std::vector stage2; + hm.bonks["nothing"] = stage2; + stage2.resize(stage2.size() + 1); + stage2.back().type = 1; + stage2.back().message = "Wait."; + stage2.resize(stage2.size() + 1); + stage2.back().type = 2; + stage2.back().message = "What?"; + hm.bonks["something"] = stage2; + stage2.clear(); + stage2.resize(stage2.size() + 1); + stage2.back().type = 3; + stage2.back().message = "quoth"; + stage2.resize(stage2.size() + 1); + stage2.back().type = 4; + stage2.back().message = "the raven"; + stage2.resize(stage2.size() + 1); + stage2.back().type = 5; + stage2.back().message = "nevermore"; + hm.bonks["poe"] = stage2; + + std::shared_ptr buffer(new TMemoryBuffer()); + std::shared_ptr proto(new MyProtocol(buffer)); + + ooe.write(proto.get()); + OneOfEach ooe2; + ooe2.read(proto.get()); + + BOOST_CHECK(ooe == ooe2); + + hm.write(proto.get()); + HolyMoley hm2; + hm2.read(proto.get()); + + BOOST_CHECK(hm == hm2); + + hm2.big[0].a_bite = 0x00; + + BOOST_CHECK(hm != hm2); +} -- cgit v1.2.3