diff options
| author | Taylan Kammer <taylan.kammer@gmail.com> | 2025-02-22 01:48:33 +0100 |
|---|---|---|
| committer | Taylan Kammer <taylan.kammer@gmail.com> | 2025-02-22 01:48:33 +0100 |
| commit | 2d52864265e06a4d863dba84e1d20c8d52d8c5dd (patch) | |
| tree | 5ea340bae20237a93fde76434eaff416f7772e97 /src/libzisp.zig | |
| parent | c49d02d893b0819f526fa7ee925510be79b913e5 (diff) | |
update
Diffstat (limited to 'src/libzisp.zig')
| -rw-r--r-- | src/libzisp.zig | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/src/libzisp.zig b/src/libzisp.zig index af9d77f..be8b8b7 100644 --- a/src/libzisp.zig +++ b/src/libzisp.zig @@ -254,12 +254,16 @@ test "parse" { const val = parser.parse("\"foo\""); const r, const rl = value.rune.unpack(value.pair.car(val)); const s, const sl = value.sstr.unpack(value.pair.cdr(val)); - try std.testing.expectEqualStrings("QUOTE", r[0..rl]); + try std.testing.expectEqualStrings("STRING", r[0..rl]); try std.testing.expectEqualStrings("foo", s[0..sl]); } test "parse2" { - const val = parser.parse("#\"foo\""); + const val = parser.parse( + \\ ;; Testing some crazy datum comments + \\ ##;"bar"#;([x #"y"]{##`,'z})"foo" + \\ ;; end + ); const r, const rl = value.rune.unpack(value.pair.car(val)); try std.testing.expectEqualStrings("HASH", r[0..rl]); @@ -267,10 +271,32 @@ test "parse2" { const cdr = value.pair.cdr(val); const s, const sl = value.rune.unpack(value.pair.car(cdr)); - try std.testing.expectEqualStrings("QUOTE", s[0..sl]); + try std.testing.expectEqualStrings("STRING", s[0..sl]); const f, const fl = value.sstr.unpack(value.pair.cdr(cdr)); try std.testing.expectEqualStrings("foo", f[0..fl]); +} + +test "parse3" { + const val = parser.parse("(foo #;x #;(x y) #;x #bar [#x #\"baz\"] 'bat)"); + + const car = value.pair.car; + const cdr = value.pair.cdr; + + // const e1 = car(val); + const e2 = car(cdr(val)); + // const e3 = car(cdr(cdr(val))); + // const e4 = car(cdr(cdr(cdr(val)))); + + try std.testing.expect(value.rune.check(e2)); +} + +test "parse4" { + const val = parser.parse("(foo . #;x bar #;y)"); + + const s, const sl = value.sstr.unpack(value.pair.car(val)); + try std.testing.expectEqualStrings("foo", s[0..sl]); - _ = parser.parse("(foo \"bar\" [#x #\"baz\"] 'bat)"); + const f, const fl = value.sstr.unpack(value.pair.cdr(val)); + try std.testing.expectEqualStrings("bar", f[0..fl]); } |
