55#include < bitstream/stream/bit_writer.h>
66
77#include < bitstream/traits/integral_traits.h>
8+ #include < bitstream/traits/quantization_traits.h>
89
910namespace bitstream ::test::multi_serialize
1011{
1112 BS_ADD_TEST (test_serialize_multi)
1213 {
1314 // Test serializing multiple values at once
1415 uint32_t in_value1 = 511 ;
15- uint32_t in_value2 = 99 ;
16+ float in_value2 = 99 .12345f ;
17+
18+ bounded_range range (-1000 .0f , 1000 .0f , 0 .001f );
1619
1720 // Write some values
1821 byte_buffer<16 > buffer;
1922 fixed_bit_writer writer (buffer);
2023
2124 BS_TEST_ASSERT (writer.serialize (
2225 multi<uint32_t >(in_value1, 328 , 611 ),
23- multi<uint32_t >(in_value2, 11 , 111 )
26+ multi<bounded_range>(range, in_value2 )
2427 ));
2528
2629 uint32_t num_bits = writer.flush ();
2730
28- BS_TEST_ASSERT (num_bits == 16 );
31+ BS_TEST_ASSERT (num_bits == 30 );
2932
3033 // Read the values back and validate
3134 uint32_t out_value1;
32- uint32_t out_value2;
35+ float out_value2;
3336 fixed_bit_reader reader (buffer, num_bits);
3437
3538 BS_TEST_ASSERT (reader.serialize (
3639 multi<uint32_t >(out_value1, 328U , 611U ),
37- multi<uint32_t >(out_value2, 11U , 111U )
40+ multi<bounded_range>(range, out_value2 )
3841 ));
3942
4043 BS_TEST_ASSERT (out_value1 == in_value1);
41- BS_TEST_ASSERT (out_value2 == in_value2 );
44+ BS_TEST_ASSERT (std::abs (in_value2 - out_value2) <= range. get_precision () );
4245 }
4346}
0 commit comments