summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/data/parser-test-1.scm4
-rw-r--r--src/test/parse.zig61
-rw-r--r--src/test/strings.zig15
3 files changed, 44 insertions, 36 deletions
diff --git a/src/test/data/parser-test-1.scm b/src/test/data/parser-test-1.scm
index 87c41b5..374b4c6 100644
--- a/src/test/data/parser-test-1.scm
+++ b/src/test/data/parser-test-1.scm
@@ -149,7 +149,7 @@
(error "cannot"
value dscr)))))
-(define (bsrf/d bstr . indxs)
+(define (bsrf/d bstr & indxs)
(letvls (((bvec offset dscr)
(bsunwp bstr)))
(let loop ((bvec bvec)
@@ -166,7 +166,7 @@
dscr*
(cdr indxs)))))))
-(define (bst!/d bstr . args)
+(define (bst!/d bstr & args)
(letvls (((bvec offset dscr)
(bsunwp bstr)))
(let loop ((bvec bvec)
diff --git a/src/test/parse.zig b/src/test/parse.zig
index dd26098..8c44454 100644
--- a/src/test/parse.zig
+++ b/src/test/parse.zig
@@ -3,14 +3,16 @@ const std = @import("std");
const testing = std.testing;
const expect = testing.expect;
+const gstIo = std.Io.Threaded.global_single_threaded.io();
+
pub const io = @import("../zisp/io.zig");
pub const value = @import("../zisp/value.zig");
pub const Value = value.Value;
fn parse(str: []const u8) Value {
- var fbs = std.io.fixedBufferStream(str);
- return io.parser.parse(fbs.reader().any());
+ var fbs = std.Io.Reader.fixed(str);
+ return io.parser.parse(&fbs);
}
test "parse empty" {
@@ -42,7 +44,7 @@ test "parse short bare string" {
try expect(parse("|x()|").eq(str("x()")));
try expect(parse("|{\\|}|").eq(str("{|}")));
try expect(parse("foobar").eq(str("foobar")));
- try expect(parse("!$%&*+").eq(str("!$%&*+")));
+ try expect(parse("!$%.*+").eq(str("!$%.*+")));
try expect(parse("-/<=>?").eq(str("-/<=>?")));
try expect(parse("@^_~00").eq(str("@^_~00")));
}
@@ -54,7 +56,7 @@ test "parse long bare string" {
try expect(parse("+foo.bar.baz").eq(str("+foo.bar.baz")));
try expect(parse("-foo.bar.baz").eq(str("-foo.bar.baz")));
try expect(parse("0foo.bar.baz").eq(str("0foo.bar.baz")));
- try expect(parse("!$%&*+-/<=>?@^_~").eq(str("!$%&*+-/<=>?@^_~")));
+ try expect(parse("!$%*+-./<=>?@^_~").eq(str("!$%*+-./<=>?@^_~")));
try expect(parse("|foo\\x20;bar\\x0a;baz|").eq(str("foo bar\nbaz")));
}
@@ -104,7 +106,7 @@ test "parse3" {
}
test "parse4" {
- const val = parse("(foo . ;~x bar ;~y)");
+ const val = parse("(foo & ;~x bar ;~y)");
const s = value.sstr.unpack(value.pair.car(val));
try testing.expectEqualStrings("foo", s.slice());
@@ -114,33 +116,33 @@ test "parse4" {
}
test "unparse" {
- var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init;
- var out: std.ArrayList(u8) = .init(gpa.allocator());
-
- const w = out.writer();
+ var buf: [32]u8 = undefined;
+ var w = std.Io.Writer.fixed(&buf);
const v = parse("#foo");
- try io.unparser.unparse(w, v);
- try testing.expectEqualStrings("#foo", try out.toOwnedSlice());
+ try io.unparser.unparse(&w, v);
+ try testing.expectEqualStrings("#foo", buf[0..w.end]);
}
test "unparse2" {
- var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init;
- var out: std.ArrayList(u8) = .init(gpa.allocator());
-
- const w = out.writer();
+ var buf: [128]u8 = undefined;
+ var w = std.Io.Writer.fixed(&buf);
const v = parse("#{foo bar['x]}");
- try io.unparser.unparse(w, v);
+ try io.unparser.unparse(&w, v);
try testing.expectEqualStrings(
- "(#HASH #BRACE foo (#JOIN bar #SQUARE (#QUOTE . x)))",
- try out.toOwnedSlice(),
+ "(#HASH #BRACE foo (#JOIN bar #SQUARE (#QUOTE & x)))",
+ buf[0..w.end],
);
}
fn writeParseResult(str: []const u8) !void {
- const w = std.io.getStdErr().writer();
+ var buf: [64]u8 = undefined;
+ var fw = std.Io.File.stderr().writer(gstIo, &buf);
+ const w = &fw.interface;
+
const v = parse(str);
try io.unparser.unparse(w, v);
try w.writeByte('\n');
+ try w.flush();
}
test "unparse3" {
@@ -152,7 +154,7 @@ test "unparse4" {
}
test "unparse5" {
- try writeParseResult("(;~foo foo ;~bar . ;~bar bar ;~bar)");
+ try writeParseResult("(;~foo foo ;~bar & ;~bar bar ;~bar)");
}
test "unparse6" {
@@ -160,12 +162,12 @@ test "unparse6" {
}
test "unparse7" {
- try writeParseResult("#`(#,(->keyword (syntax->datum #'sym)) . in)");
+ try writeParseResult("#`(#,(->keyword (syntax->datum #'sym)) & in)");
}
fn parseBench(path: []const u8, iters: usize) !void {
- const file = try std.fs.cwd().openFile(path, .{});
- defer file.close();
+ const file = try std.Io.Dir.cwd().openFile(gstIo, path, .{});
+ defer file.close(gstIo);
var sfa = io.parser.DefaultSfa.init(std.heap.smp_allocator);
var parser = try io.parser.initSfa(&sfa);
@@ -174,24 +176,21 @@ fn parseBench(path: []const u8, iters: usize) !void {
var timer = try std.time.Timer.start();
for (0..iters) |i| {
_ = i;
- var br = std.io.bufferedReader(file.reader());
- const reader = br.reader().any();
- // const reader = file.reader().any();
+ var buf: [4096]u8 = undefined;
+ var reader = file.reader(gstIo, &buf);
var v: Value = undefined;
while (true) {
- // std.debug.print("hihi {s}\n", .{path});
- v = parser.run(reader) catch |e| {
+ v = parser.run(&reader.interface) catch |e| {
std.debug.print("\nfile pos: {}\n", .{
- try file.getPos(),
+ reader.logicalPos(),
});
return e;
};
- // try io.unparser.unparse(std.io.getStdOut().writer().any(), v);
if (value.eof.eq(v)) {
break;
}
}
- try file.seekTo(0);
+ try reader.seekTo(0);
}
const ns: f64 = @floatFromInt(timer.lap());
const secs = ns / 1_000_000_000;
diff --git a/src/test/strings.zig b/src/test/strings.zig
index 8f640f4..3a0585e 100644
--- a/src/test/strings.zig
+++ b/src/test/strings.zig
@@ -2,6 +2,8 @@ const std = @import("std");
const testing = std.testing;
+const gstIo = std.Io.Threaded.global_single_threaded.io();
+
pub const value = @import("../zisp/value.zig");
const istr = value.istr;
@@ -11,20 +13,27 @@ test "istr" {
const s1 = "foo bar baz";
const v1 = istr.intern(s1);
const v1_len: usize = @intCast(fx.unpack(istr.len(v1)));
+
try testing.expectEqualStrings(s1, istr.assert(v1).bytes());
try testing.expectEqual(s1.len, v1_len);
- const file = try std.fs.cwd().openFile("src/test/data/string.txt", .{});
- defer file.close();
+ const path = "src/test/data/string.txt";
+ var file = try std.Io.Dir.cwd().openFile(gstIo, path, .{});
+ defer file.close(gstIo);
+
var s2_buf: [4096]u8 = undefined;
- const s2_len = try file.readAll(&s2_buf);
+ const s2_len = try file.readStreaming(gstIo, &.{&s2_buf});
var s2: []u8 = s2_buf[0..s2_len];
+
const v2 = istr.intern(s2);
const v2_len: usize = @intCast(fx.unpack(istr.len(v2)));
+
var s2_orig_buf: [4096]u8 = undefined;
@memcpy(&s2_orig_buf, &s2_buf);
const s2_orig = s2_orig_buf[0..s2_len];
+
s2[0] = s2[0] +% 1;
+
try testing.expectEqualStrings(s2_orig, istr.assert(v2).bytes());
try testing.expectEqual(s2_len, v2_len);
}