summaryrefslogtreecommitdiff
path: root/src/Graphemes.zig
diff options
context:
space:
mode:
authorGravatar Sam Atman2025-05-12 15:22:37 -0400
committerGravatar Sam Atman2025-05-15 15:31:16 -0400
commitcf8d8fe5d640511f6c4134fdaa36e930232ca7da (patch)
tree410a3c5195ea0780b637f740ebcb6e80e63db09c /src/Graphemes.zig
parentImplement Word iterator (diff)
downloadzg-cf8d8fe5d640511f6c4134fdaa36e930232ca7da.tar.gz
zg-cf8d8fe5d640511f6c4134fdaa36e930232ca7da.tar.xz
zg-cf8d8fe5d640511f6c4134fdaa36e930232ca7da.zip
Begin conformance test
I'm not sure the details of this strategy can actually be made to work. But, something can.
Diffstat (limited to 'src/Graphemes.zig')
-rw-r--r--src/Graphemes.zig22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/Graphemes.zig b/src/Graphemes.zig
index 1ce1ea6..1f67fc6 100644
--- a/src/Graphemes.zig
+++ b/src/Graphemes.zig
@@ -364,3 +364,25 @@ test "Segmentation ZWJ and ZWSP emoji sequences" {
364 try std.testing.expectEqual(@as(usize, 2), i); 364 try std.testing.expectEqual(@as(usize, 2), i);
365 } 365 }
366} 366}
367
368test "Iterator.peek" {
369 const peek_seq = "aΔ👨🏻‍🌾→";
370 const data = try Graphemes.init(std.testing.allocator);
371 defer data.deinit(std.testing.allocator);
372
373 var iter = data.iterator(peek_seq);
374 const peek_a = iter.peek().?;
375 const next_a = iter.next().?;
376 try std.testing.expectEqual(peek_a, next_a);
377 try std.testing.expectEqualStrings("a", peek_a.bytes(peek_seq));
378 const peek_d1 = iter.peek().?;
379 const peek_d2 = iter.peek().?;
380 try std.testing.expectEqual(peek_d1, peek_d2);
381 const next_d = iter.next().?;
382 try std.testing.expectEqual(peek_d2, next_d);
383 try std.testing.expectEqual(iter.peek(), iter.next());
384 try std.testing.expectEqual(iter.peek(), iter.next());
385 try std.testing.expectEqual(null, iter.peek());
386 try std.testing.expectEqual(null, iter.peek());
387 try std.testing.expectEqual(iter.peek(), iter.next());
388}