diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2026-04-19 19:02:17 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2026-04-19 19:02:17 +0200 |
| commit | 6aafc90f32d014390b29b77c6d53575793255847 (patch) | |
| tree | f72a3ed256e1b92757e3af53c9b5e9c639cb4c4c | |
| parent | c46957f44e8b5ba0639b7092a1c5abd9516b1b22 (diff) | |
refactor(tests): generalize doTest and doTestError
| -rw-r--r-- | src/paragraph.zig | 15 | ||||
| -rw-r--r-- | src/testing.zig | 23 | ||||
| -rw-r--r-- | src/title.zig | 15 |
3 files changed, 29 insertions, 24 deletions
diff --git a/src/paragraph.zig b/src/paragraph.zig index caee73e..a164b1d 100644 --- a/src/paragraph.zig +++ b/src/paragraph.zig @@ -4,6 +4,7 @@ const Lexed = @import("lexer/Lexed.zig"); const Lexer = @import("lexer/Lexer.zig"); const Element = @import("dom/Element.zig"); const parser = @import("parser.zig"); +const testing = @import("testing.zig"); pub const Error = error{ ModifierNotClosed, IllegalPlacement } || Lexer.Error; @@ -79,21 +80,11 @@ fn parseModifier(alloc: Allocator, l: *Lexer, knd: Lexed.Kind, tag: []const u8) } fn doTest(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; - }; + return testing.do(parse, alloc, t, v); } fn doTestError(alloc: Allocator, t: []const u8, err: Error) !void { - var l = try Lexer.init(t); - _ = parse(alloc, &l) catch |e| return std.testing.expect(err == e); - return std.testing.expect(false); + return testing.doError(parse, alloc, t, err); } test "parse paragraphs" { 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); +} diff --git a/src/title.zig b/src/title.zig index 62d7929..a29cece 100644 --- a/src/title.zig +++ b/src/title.zig @@ -4,6 +4,7 @@ const Lexed = @import("lexer/Lexed.zig"); const Lexer = @import("lexer/Lexer.zig"); const Element = @import("dom/Element.zig"); const paragraph = @import("paragraph.zig"); +const testing = @import("testing.zig"); pub const Error = error{InvalidTitleContent} || paragraph.Error || Lexer.Error; @@ -31,21 +32,11 @@ pub fn parse(alloc: Allocator, l: *Lexer) Error!Element { } fn doTest(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; - }; + return testing.do(parse, alloc, t, v); } fn doTestError(alloc: Allocator, t: []const u8, err: Error) !void { - var l = try Lexer.init(t); - _ = parse(alloc, &l) catch |e| return std.testing.expect(err == e); - return std.testing.expect(false); + return testing.doError(parse, alloc, t, err); } test "parse title" { |
