summaryrefslogtreecommitdiff
path: root/src/libzisp.zig
diff options
context:
space:
mode:
authorTaylan Kammer <taylan.kammer@gmail.com>2025-02-22 01:48:33 +0100
committerTaylan Kammer <taylan.kammer@gmail.com>2025-02-22 01:48:33 +0100
commit2d52864265e06a4d863dba84e1d20c8d52d8c5dd (patch)
tree5ea340bae20237a93fde76434eaff416f7772e97 /src/libzisp.zig
parentc49d02d893b0819f526fa7ee925510be79b913e5 (diff)
update
Diffstat (limited to 'src/libzisp.zig')
-rw-r--r--src/libzisp.zig34
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]);
}