aboutsummaryrefslogtreecommitdiff
path: root/src/non-terminal.zig
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2025-05-21 19:44:11 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2025-05-21 19:47:36 +0200
commit2ee78f3c3884a315baffee7d5e9244f52c59c10b (patch)
tree65919d8a6f54be7b67be9c12b108a47c645f3275 /src/non-terminal.zig
parente28bda801c1d7b9953298993b56408ce4202084f (diff)
fix unit tests
Diffstat (limited to 'src/non-terminal.zig')
-rw-r--r--src/non-terminal.zig54
1 files changed, 38 insertions, 16 deletions
diff --git a/src/non-terminal.zig b/src/non-terminal.zig
index fdab32a..6eaf068 100644
--- a/src/non-terminal.zig
+++ b/src/non-terminal.zig
@@ -155,9 +155,10 @@ test "single-non-terminal" {
try non_terminal.parse_and_add_variants("main -> one", &names);
- try std.testing.expectEqualDeep(&[_][]const Character{
- &[_] Character { Character { .non_terminal = 1 } }
- }, non_terminal.rules());
+ try std.testing.expectEqualDeep(
+ &[_] Character { Character { .non_terminal = 1 } },
+ non_terminal.rules()[0].items
+ );
}
test "multiple-non-terminal" {
@@ -174,11 +175,12 @@ test "multiple-non-terminal" {
try non_terminal.parse_and_add_variants("main -> one | two | three", &names);
- try std.testing.expectEqualDeep(&[_][]const Character{
- &[_] Character { Character { .non_terminal = 1 } },
- &[_] Character { Character { .non_terminal = 2 } },
- &[_] Character { Character { .non_terminal = 3 } },
- }, non_terminal.rules());
+ inline for (0..3) |i| {
+ try std.testing.expectEqualDeep(
+ &[_] Character { Character { .non_terminal = i + 1 } },
+ non_terminal.rules()[i].items
+ );
+ }
}
test "multiple-non-terminal-sequence" {
@@ -195,11 +197,20 @@ test "multiple-non-terminal-sequence" {
try non_terminal.parse_and_add_variants("main -> one two | two | three", &names);
- try std.testing.expectEqualDeep(&[_][]const Character{
+ try std.testing.expectEqualDeep(
&[_] Character { Character { .non_terminal = 1 }, Character { .non_terminal = 2 }, },
+ non_terminal.rules()[0].items
+ );
+
+ try std.testing.expectEqualDeep(
&[_] Character { Character { .non_terminal = 2 } },
+ non_terminal.rules()[1].items
+ );
+
+ try std.testing.expectEqualDeep(
&[_] Character { Character { .non_terminal = 3 } },
- }, non_terminal.rules());
+ non_terminal.rules()[2].items
+ );
}
test "single-terminal" {
@@ -214,13 +225,14 @@ test "single-terminal" {
try non_terminal.parse_and_add_variants("main -> 'one'", &names);
- try std.testing.expectEqualDeep(&[_][]const Character{
+ try std.testing.expectEqualDeep(
&[_] Character {
Character { .terminal = 'o' },
Character { .terminal = 'n' },
Character { .terminal = 'e' }
},
- }, non_terminal.rules());
+ non_terminal.rules()[0].items
+ );
}
test "single-terminal-with-escapes" {
@@ -234,7 +246,7 @@ test "single-terminal-with-escapes" {
try non_terminal.parse_and_add_variants("main -> 'o\\r\\nn\\'e\\\\'", &names);
- try std.testing.expectEqualDeep(&[_][]const Character{
+ try std.testing.expectEqualDeep(
&[_] Character {
Character { .terminal = 'o' },
Character { .terminal = '\r' },
@@ -244,7 +256,8 @@ test "single-terminal-with-escapes" {
Character { .terminal = 'e' },
Character { .terminal = '\\' },
},
- }, non_terminal.rules());
+ non_terminal.rules()[0].items
+ );
}
test "mix" {
@@ -260,19 +273,28 @@ test "mix" {
try non_terminal.parse_and_add_variants("main -> 'ab' other | other some 'a' | main", &names);
- try std.testing.expectEqualDeep(&[_][]const Character{
+ try std.testing.expectEqualDeep(
&[_] Character {
Character { .terminal = 'a' },
Character { .terminal = 'b' },
Character { .non_terminal = 1 },
},
+ non_terminal.rules()[0].items,
+ );
+
+ try std.testing.expectEqualDeep(
&[_] Character {
Character { .non_terminal = 1 },
Character { .non_terminal = 2 },
Character { .terminal = 'a' },
},
+ non_terminal.rules()[1].items,
+ );
+
+ try std.testing.expectEqualDeep(
&[_] Character {
Character { .non_terminal = 0 },
},
- }, non_terminal.rules());
+ non_terminal.rules()[2].items,
+ );
}