MCPcopy Create free account
hub / github.com/apache/arrow / TEST

Function TEST

cpp/src/arrow/ipc/message_internal_test.cc:41–80  ·  view source on GitHub ↗

GH-40361: Test that Flatbuffer serialization matches a known output byte-for-byte. Our Flatbuffers code should not depend on argument evaluation order as it's undefined (https://en.cppreference.com/w/cpp/language/eval_order) and may lead to unnecessary platform- or toolchain-specific differences in serialization.

Source from the content-addressed store, hash-verified

39// lead to unnecessary platform- or toolchain-specific differences in
40// serialization.
41TEST(TestMessageInternal, TestByteIdentical) {
42 DictionaryFieldMapper mapper;
43
44 // Create a simple Schema with just two metadata KVPs
45 auto f0 = field("f0", int64());
46 auto f1 = field("f1", int64());
47 std::vector<std::shared_ptr<Field>> fields = {f0, f1};
48 std::shared_ptr<KeyValueMetadata> metadata =
49 KeyValueMetadata::Make({"key_1", "key_2"}, {"key_1_value", "key_2_value"});
50 auto schema = ::arrow::schema({f0}, Endianness::Little, metadata);
51
52 // Serialize the Schema to a Buffer
53 std::shared_ptr<Buffer> out_buffer;
54 ASSERT_OK(
55 WriteSchemaMessage(*schema, mapper, IpcWriteOptions::Defaults(), &out_buffer));
56
57 // This is example output from macOS+ARM+LLVM
58 const uint8_t expected[] = {
59 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x05, 0x00,
60 0x08, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00,
61 0x00, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0A, 0x00,
62 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
63 0x38, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xD8, 0xFF, 0xFF, 0xFF, 0x18, 0x00,
64 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x79, 0x5F,
65 0x32, 0x5F, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6B, 0x65,
66 0x79, 0x5F, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00,
67 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x00,
68 0x00, 0x00, 0x6B, 0x65, 0x79, 0x5F, 0x31, 0x5F, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00,
69 0x05, 0x00, 0x00, 0x00, 0x6B, 0x65, 0x79, 0x5F, 0x31, 0x00, 0x00, 0x00, 0x01, 0x00,
70 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0x08, 0x00, 0x06, 0x00,
71 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
72 0x01, 0x02, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
73 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x30, 0x00, 0x00, 0x08, 0x00,
74 0x0C, 0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
75 0x40, 0x00, 0x00, 0x00};
76
77 Buffer expected_buffer(expected, sizeof(expected));
78
79 AssertBufferEqual(expected_buffer, *out_buffer);
80}
81
82TEST(TestMessageInternal, TestEndiannessRoundtrip) {
83 DictionaryFieldMapper mapper;

Callers

nothing calls this directly

Calls 6

WriteSchemaMessageFunction · 0.85
AssertBufferEqualFunction · 0.85
schemaFunction · 0.70
fieldFunction · 0.50
MakeFunction · 0.50
DefaultsFunction · 0.50

Tested by

no test coverage detected