From cf8d8fe5d640511f6c4134fdaa36e930232ca7da Mon Sep 17 00:00:00 2001 From: Sam Atman Date: Mon, 12 May 2025 15:22:37 -0400 Subject: Begin conformance test I'm not sure the details of this strategy can actually be made to work. But, something can. --- src/Graphemes.zig | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/Graphemes.zig') 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" { try std.testing.expectEqual(@as(usize, 2), i); } } + +test "Iterator.peek" { + const peek_seq = "aΔ👨🏻‍🌾→"; + const data = try Graphemes.init(std.testing.allocator); + defer data.deinit(std.testing.allocator); + + var iter = data.iterator(peek_seq); + const peek_a = iter.peek().?; + const next_a = iter.next().?; + try std.testing.expectEqual(peek_a, next_a); + try std.testing.expectEqualStrings("a", peek_a.bytes(peek_seq)); + const peek_d1 = iter.peek().?; + const peek_d2 = iter.peek().?; + try std.testing.expectEqual(peek_d1, peek_d2); + const next_d = iter.next().?; + try std.testing.expectEqual(peek_d2, next_d); + try std.testing.expectEqual(iter.peek(), iter.next()); + try std.testing.expectEqual(iter.peek(), iter.next()); + try std.testing.expectEqual(null, iter.peek()); + try std.testing.expectEqual(null, iter.peek()); + try std.testing.expectEqual(iter.peek(), iter.next()); +} -- cgit v1.2.3