@@ -77,6 +77,22 @@ TEST_CASE("random access arithmetic", "[byterator]") {
77
77
CHECK ((i == b));
78
78
}
79
79
80
+ TEST_CASE (" advance" , " [byterator]" ) {
81
+ auto const a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
82
+ stdx::to_be<std::uint16_t >(0x0304 )};
83
+ auto const b = stdx::byterator{std::begin (a)};
84
+ auto i = b;
85
+ CHECK ((i + 1 != b));
86
+ i.advance ();
87
+ CHECK ((i == b + 1 ));
88
+ CHECK (i - b == 1 );
89
+ CHECK ((i - 1 == b));
90
+ i.advance (-1 );
91
+ CHECK ((i == b));
92
+ static_assert (std::is_same_v<decltype (i.advance ()),
93
+ stdx::byterator<std::uint16_t const > &>);
94
+ }
95
+
80
96
TEST_CASE (" equality comparable" , " [byterator]" ) {
81
97
auto const a = std::array{1 , 2 , 3 , 4 };
82
98
auto x = stdx::byterator{std::begin (a)};
@@ -142,6 +158,15 @@ TEST_CASE("peek uint8_t", "[byterator]") {
142
158
CHECK ((i == std::begin (a)));
143
159
}
144
160
161
+ TEST_CASE (" advance uint8_t" , " [byterator]" ) {
162
+ auto const a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
163
+ stdx::to_be<std::uint16_t >(0x0304 )};
164
+ auto i = stdx::byterator{std::begin (a)};
165
+ auto j = std::next (i);
166
+ i.advanceu8 ();
167
+ CHECK ((i == j));
168
+ }
169
+
145
170
TEST_CASE (" read uint8_t" , " [byterator]" ) {
146
171
auto const a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
147
172
stdx::to_be<std::uint16_t >(0x0304 )};
@@ -171,6 +196,15 @@ TEST_CASE("peek uint16_t", "[byterator]") {
171
196
CHECK ((i == std::begin (a)));
172
197
}
173
198
199
+ TEST_CASE (" advance uint16_t" , " [byterator]" ) {
200
+ auto const a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
201
+ stdx::to_be<std::uint16_t >(0x0304 )};
202
+ auto i = stdx::byterator{std::begin (a)};
203
+ auto j = i + 2 ;
204
+ i.advanceu16 ();
205
+ CHECK ((i == j));
206
+ }
207
+
174
208
TEST_CASE (" read uint16_t" , " [byterator]" ) {
175
209
auto const a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
176
210
stdx::to_be<std::uint16_t >(0x0304 )};
@@ -200,6 +234,14 @@ TEST_CASE("peek uint32_t", "[byterator]") {
200
234
CHECK ((i == std::begin (a)));
201
235
}
202
236
237
+ TEST_CASE (" advance uint32_t" , " [byterator]" ) {
238
+ auto const a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
239
+ stdx::to_be<std::uint16_t >(0x0304 )};
240
+ auto i = stdx::byterator{std::begin (a)};
241
+ i.advanceu32 ();
242
+ CHECK ((i == std::end (a)));
243
+ }
244
+
203
245
TEST_CASE (" read uint32_t" , " [byterator]" ) {
204
246
auto const a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
205
247
stdx::to_be<std::uint16_t >(0x0304 )};
@@ -229,6 +271,15 @@ TEST_CASE("peek uint64_t", "[byterator]") {
229
271
CHECK ((i == std::begin (a)));
230
272
}
231
273
274
+ TEST_CASE (" advance uint64_t" , " [byterator]" ) {
275
+ auto const a = std::array{
276
+ stdx::to_be<std::uint16_t >(0x0102 ), stdx::to_be<std::uint16_t >(0x0304 ),
277
+ stdx::to_be<std::uint16_t >(0x0506 ), stdx::to_be<std::uint16_t >(0x0708 )};
278
+ auto i = stdx::byterator{std::begin (a)};
279
+ i.advanceu64 ();
280
+ CHECK ((i == std::end (a)));
281
+ }
282
+
232
283
TEST_CASE (" read uint64_t" , " [byterator]" ) {
233
284
auto const a = std::array{
234
285
stdx::to_be<std::uint16_t >(0x0102 ), stdx::to_be<std::uint16_t >(0x0304 ),
@@ -264,6 +315,15 @@ TEST_CASE("peek enum", "[byterator]") {
264
315
CHECK (i.peek <E>() == E::A);
265
316
}
266
317
318
+ TEST_CASE (" advance enum" , " [byterator]" ) {
319
+ auto const a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
320
+ stdx::to_be<std::uint16_t >(0x0304 )};
321
+ auto i = stdx::byterator{std::begin (a)};
322
+ auto j = std::next (i);
323
+ i.advance <E>();
324
+ CHECK (i == j);
325
+ }
326
+
267
327
TEST_CASE (" read enum" , " [byterator]" ) {
268
328
auto const a = std::array{stdx::to_be<std::uint16_t >(0x0102 ),
269
329
stdx::to_be<std::uint16_t >(0x0304 )};
0 commit comments