1+ #include " ../shared/assert.h"
2+ #include " ../shared/test.h"
3+
4+ #include < bitstream/stream/bit_reader.h>
5+ #include < bitstream/stream/bit_writer.h>
6+
7+ #include < bitstream/traits/integral_traits.h>
8+
9+ namespace bitstream ::test::multi_serialize
10+ {
11+ BS_ADD_TEST (test_serialize_multi)
12+ {
13+ // Test serializing multiple values at once
14+ uint32_t in_value1 = 511 ;
15+ uint32_t in_value2 = 99 ;
16+
17+ // Write some values
18+ byte_buffer<16 > buffer;
19+ fixed_bit_writer writer (buffer);
20+
21+ BS_TEST_ASSERT (writer.serialize (
22+ multi<uint32_t >(in_value1, 328 , 611 ),
23+ multi<uint32_t >(in_value2, 11 , 111 )
24+ ));
25+
26+ uint32_t num_bits = writer.flush ();
27+
28+ BS_TEST_ASSERT (num_bits == 16 );
29+
30+ // Read the values back and validate
31+ uint32_t out_value1;
32+ uint32_t out_value2;
33+ fixed_bit_reader reader (buffer, num_bits);
34+
35+ BS_TEST_ASSERT (reader.serialize (
36+ multi<uint32_t >(out_value1, 328U , 611U ),
37+ multi<uint32_t >(out_value2, 11U , 111U )
38+ ));
39+
40+ BS_TEST_ASSERT (out_value1 == in_value1);
41+ BS_TEST_ASSERT (out_value2 == in_value2);
42+ }
43+ }
0 commit comments