diff options
| author | 2025-05-14 10:46:25 -0400 | |
|---|---|---|
| committer | 2025-05-15 15:32:43 -0400 | |
| commit | b1d67fab5c3dd3ed1d47ee63ab45a600b19f7a3c (patch) | |
| tree | fad51cb389f4dc012aa2e9c487f01a7f6da8c27c | |
| parent | ReverseWordIterator passes conformance test (diff) | |
| download | zg-b1d67fab5c3dd3ed1d47ee63ab45a600b19f7a3c.tar.gz zg-b1d67fab5c3dd3ed1d47ee63ab45a600b19f7a3c.tar.xz zg-b1d67fab5c3dd3ed1d47ee63ab45a600b19f7a3c.zip | |
Peek tests for word iterators
| -rw-r--r-- | src/unicode_tests.zig | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/unicode_tests.zig b/src/unicode_tests.zig index 8661bfd..ef459bf 100644 --- a/src/unicode_tests.zig +++ b/src/unicode_tests.zig | |||
| @@ -224,6 +224,7 @@ test "Segmentation Word Iterator" { | |||
| 224 | } | 224 | } |
| 225 | { | 225 | { |
| 226 | var iter = wb.iterator(all_bytes.items); | 226 | var iter = wb.iterator(all_bytes.items); |
| 227 | var peeked: ?Word = iter.peek(); | ||
| 227 | 228 | ||
| 228 | // Check. | 229 | // Check. |
| 229 | for (want.items, 1..) |want_word, i| { | 230 | for (want.items, 1..) |want_word, i| { |
| @@ -235,11 +236,21 @@ test "Segmentation Word Iterator" { | |||
| 235 | debug.print("Error on line {d}, #{d}\n", .{ line_iter.line, i }); | 236 | debug.print("Error on line {d}, #{d}\n", .{ line_iter.line, i }); |
| 236 | return err; | 237 | return err; |
| 237 | }; | 238 | }; |
| 239 | std.testing.expectEqualStrings( | ||
| 240 | peeked.?.bytes(all_bytes.items), | ||
| 241 | got_word.bytes(all_bytes.items), | ||
| 242 | ) catch |err| { | ||
| 243 | debug.print("Peek != word on line {d} #{d}\n", .{ line_iter.line, i }); | ||
| 244 | return err; | ||
| 245 | }; | ||
| 246 | peeked = iter.peek(); | ||
| 238 | } | 247 | } |
| 239 | } | 248 | } |
| 240 | { | 249 | { |
| 241 | var r_iter = wb.reverseIterator(all_bytes.items); | 250 | var r_iter = wb.reverseIterator(all_bytes.items); |
| 251 | var peeked: ?Word = r_iter.peek(); | ||
| 242 | var idx = want.items.len - 1; | 252 | var idx = want.items.len - 1; |
| 253 | |||
| 243 | while (true) : (idx -= 1) { | 254 | while (true) : (idx -= 1) { |
| 244 | const want_word = want.items[idx]; | 255 | const want_word = want.items[idx]; |
| 245 | const got_word = r_iter.prev().?; | 256 | const got_word = r_iter.prev().?; |
| @@ -251,6 +262,14 @@ test "Segmentation Word Iterator" { | |||
| 251 | debug.print("Error on line {d}, #{d}\n", .{ line_iter.line, idx + 1 }); | 262 | debug.print("Error on line {d}, #{d}\n", .{ line_iter.line, idx + 1 }); |
| 252 | return err; | 263 | return err; |
| 253 | }; | 264 | }; |
| 265 | std.testing.expectEqualStrings( | ||
| 266 | peeked.?.bytes(all_bytes.items), | ||
| 267 | got_word.bytes(all_bytes.items), | ||
| 268 | ) catch |err| { | ||
| 269 | debug.print("Peek != word on line {d} #{d}\n", .{ line_iter.line, idx + 1 }); | ||
| 270 | return err; | ||
| 271 | }; | ||
| 272 | peeked = r_iter.peek(); | ||
| 254 | if (idx == 0) break; | 273 | if (idx == 0) break; |
| 255 | } | 274 | } |
| 256 | } | 275 | } |