aboutsummaryrefslogtreecommitdiff
path: root/src/testing.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/testing.zig')
-rw-r--r--src/testing.zig23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/testing.zig b/src/testing.zig
new file mode 100644
index 0000000..ecf6eb3
--- /dev/null
+++ b/src/testing.zig
@@ -0,0 +1,23 @@
+const std = @import("std");
+const Allocator = std.mem.Allocator;
+const Lexer = @import("lexer/Lexer.zig");
+const Element = @import("dom/Element.zig");
+const parser = @import("parser.zig");
+
+pub fn do(comptime parse: fn(Allocator, *Lexer) parser.Error!Element, alloc: Allocator, t: []const u8, v: []const u8) !void {
+ var l = try Lexer.init(t);
+ var p = try parse(alloc, &l);
+ defer p.deinit();
+ const g = try p.render(alloc);
+ defer alloc.free(g);
+ std.testing.expect(std.mem.eql(u8, g, v)) catch |err| {
+ std.debug.print("{s}\n", .{g});
+ return err;
+ };
+}
+
+pub fn doError(comptime parse: fn(Allocator, *Lexer) parser.Error!Element, alloc: Allocator, t: []const u8, err: parser.Error) !void {
+ var l = try Lexer.init(t);
+ _ = parse(alloc, &l) catch |e| return std.testing.expect(err == e);
+ return std.testing.expect(false);
+}