@@ -219,6 +219,43 @@ TEST_CASE("write uint32_t", "[byterator]") {
219219 CHECK ((i == std::end (a)));
220220}
221221
222+ TEST_CASE (" peek uint64_t" , " [byterator]" ) {
223+ const auto a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
224+ stdx::to_be<std::uint16_t >(0x0304 ),
225+ stdx::to_be<std::uint16_t >(0x0506 ),
226+ stdx::to_be<std::uint16_t >(0x0708 )};
227+ auto i = stdx::byterator{std::begin (a)};
228+ static_assert (std::is_same_v<decltype (i.readu64 ()), std::uint64_t >);
229+ CHECK (i.peeku64 () == stdx::to_be<std::uint64_t >(0x0102030405060708 ));
230+ CHECK ((i == std::begin (a)));
231+ }
232+
233+ TEST_CASE (" read uint64_t" , " [byterator]" ) {
234+ const auto a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
235+ stdx::to_be<std::uint16_t >(0x0304 ),
236+ stdx::to_be<std::uint16_t >(0x0506 ),
237+ stdx::to_be<std::uint16_t >(0x0708 )};
238+ auto i = stdx::byterator{std::begin (a)};
239+ static_assert (std::is_same_v<decltype (i.readu64 ()), std::uint64_t >);
240+ CHECK (i.readu64 () == stdx::to_be<std::uint64_t >(0x0102030405060708 ));
241+ CHECK ((i == std::end (a)));
242+ }
243+
244+ TEST_CASE (" write uint64_t" , " [byterator]" ) {
245+ auto a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
246+ stdx::to_be<std::uint16_t >(0x0304 ),
247+ stdx::to_be<std::uint16_t >(0x0506 ),
248+ stdx::to_be<std::uint16_t >(0x0708 )};
249+ auto i = stdx::byterator{std::begin (a)};
250+ i.writeu64 (stdx::to_be<std::uint64_t >(0x05060708090A0B0C ));
251+ CHECK (a[0 ] == stdx::to_be<std::uint16_t >(0x0506 ));
252+ CHECK (a[1 ] == stdx::to_be<std::uint16_t >(0x0708 ));
253+ CHECK (a[2 ] == stdx::to_be<std::uint16_t >(0x090A ));
254+ CHECK (a[3 ] == stdx::to_be<std::uint16_t >(0x0B0C ));
255+ CHECK ((i == std::end (a)));
256+ }
257+
258+
222259namespace {
223260enum struct E : std::uint8_t { A = 1 , B = 2 , C = 3 };
224261}
0 commit comments