summaryrefslogtreecommitdiff
path: root/src/unicode_tests.zig
diff options
context:
space:
mode:
authorGravatar Sam Atman2024-11-02 10:31:28 -0400
committerGravatar Sam Atman2024-11-02 10:31:28 -0400
commitbf319e504e5476d9b0d2dec3e2f8d81ef6439ce4 (patch)
tree0424b9f9e54972837652042dc858dfe5ba12b5de /src/unicode_tests.zig
parentReplace deprecated uses of std.mem.split (diff)
downloadzg-bf319e504e5476d9b0d2dec3e2f8d81ef6439ce4.tar.gz
zg-bf319e504e5476d9b0d2dec3e2f8d81ef6439ce4.tar.xz
zg-bf319e504e5476d9b0d2dec3e2f8d81ef6439ce4.zip
Add peek() to Grapheme.Iterator
This does the expected thing: returns the next ?Grapheme without mutation of the iteration state.
Diffstat (limited to 'src/unicode_tests.zig')
-rw-r--r--src/unicode_tests.zig26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/unicode_tests.zig b/src/unicode_tests.zig
index 691ccfb..245c03f 100644
--- a/src/unicode_tests.zig
+++ b/src/unicode_tests.zig
@@ -7,11 +7,37 @@ const mem = std.mem;
7const testing = std.testing; 7const testing = std.testing;
8const unicode = std.unicode; 8const unicode = std.unicode;
9 9
10const grapheme = @import("grapheme");
10const Grapheme = @import("grapheme").Grapheme; 11const Grapheme = @import("grapheme").Grapheme;
11const GraphemeData = @import("grapheme").GraphemeData; 12const GraphemeData = @import("grapheme").GraphemeData;
12const GraphemeIterator = @import("grapheme").Iterator; 13const GraphemeIterator = @import("grapheme").Iterator;
13const Normalize = @import("Normalize"); 14const Normalize = @import("Normalize");
14 15
16comptime {
17 testing.refAllDecls(grapheme);
18}
19test "Iterator.peek" {
20 const peek_seq = "aΔ👨🏻‍🌾→";
21 const data = try GraphemeData.init(std.testing.allocator);
22 defer data.deinit();
23
24 var iter = grapheme.Iterator.init(peek_seq, &data);
25 const peek_a = iter.peek().?;
26 const next_a = iter.next().?;
27 try std.testing.expectEqual(peek_a, next_a);
28 try std.testing.expectEqualStrings("a", peek_a.bytes(peek_seq));
29 const peek_d1 = iter.peek().?;
30 const peek_d2 = iter.peek().?;
31 try std.testing.expectEqual(peek_d1, peek_d2);
32 const next_d = iter.next().?;
33 try std.testing.expectEqual(peek_d2, next_d);
34 try std.testing.expectEqual(iter.peek(), iter.next());
35 try std.testing.expectEqual(iter.peek(), iter.next());
36 try std.testing.expectEqual(null, iter.peek());
37 try std.testing.expectEqual(null, iter.peek());
38 try std.testing.expectEqual(iter.peek(), iter.next());
39}
40
15test "Unicode normalization tests" { 41test "Unicode normalization tests" {
16 var arena = heap.ArenaAllocator.init(testing.allocator); 42 var arena = heap.ArenaAllocator.init(testing.allocator);
17 defer arena.deinit(); 43 defer arena.deinit();