mirror of
https://github.com/zoriya/zig-wayland.git
synced 2026-06-03 11:05:45 +00:00
Add trivial parsing test case
This commit is contained in:
@@ -4,12 +4,26 @@ pub fn build(b: *Builder) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const mode = b.standardReleaseOptions();
|
||||
|
||||
const scanner = b.addExecutable("scanner", "scanner.zig");
|
||||
scanner.setTarget(target);
|
||||
scanner.setBuildMode(mode);
|
||||
{
|
||||
const scanner = b.addExecutable("scanner", "scanner.zig");
|
||||
scanner.setTarget(target);
|
||||
scanner.setBuildMode(mode);
|
||||
|
||||
scanner.linkLibC();
|
||||
scanner.linkSystemLibrary("expat");
|
||||
scanner.linkLibC();
|
||||
scanner.linkSystemLibrary("expat");
|
||||
|
||||
scanner.install();
|
||||
scanner.install();
|
||||
}
|
||||
|
||||
{
|
||||
const scanner_test = b.addTest("scanner.zig");
|
||||
scanner_test.setTarget(target);
|
||||
scanner_test.setBuildMode(mode);
|
||||
|
||||
scanner_test.linkLibC();
|
||||
scanner_test.linkSystemLibrary("expat");
|
||||
|
||||
const test_step = b.step("test", "Run the tests");
|
||||
test_step.dependOn(&scanner_test.step);
|
||||
}
|
||||
}
|
||||
|
||||
+30
@@ -204,3 +204,33 @@ fn characterData(user_data: ?*c_void, s: ?[*]const u8, len: i32) callconv(.C) vo
|
||||
const ctx = @intToPtr(*Context, @ptrToInt(user_data));
|
||||
ctx.character_data.appendSlice(s.?[0..@intCast(usize, len)]) catch std.os.exit(1);
|
||||
}
|
||||
|
||||
test "parsing" {
|
||||
const testing = std.testing;
|
||||
|
||||
const parser = c.XML_ParserCreate(null) orelse return error.ParserCreateFailed;
|
||||
defer c.XML_ParserFree(parser);
|
||||
|
||||
var ctx = Context{
|
||||
.protocol = undefined,
|
||||
.interface = undefined,
|
||||
.message = undefined,
|
||||
.enumeration = undefined,
|
||||
};
|
||||
defer ctx.deinit();
|
||||
|
||||
c.XML_SetUserData(parser, &ctx);
|
||||
c.XML_SetElementHandler(parser, start, end);
|
||||
c.XML_SetCharacterDataHandler(parser, characterData);
|
||||
|
||||
const sample =
|
||||
\\<?xml version="1.0" encoding="UTF-8"?>
|
||||
\\<protocol name="sample">
|
||||
\\</protocol>
|
||||
;
|
||||
|
||||
if (c.XML_Parse(parser, sample, sample.len, 1) == .XML_STATUS_ERROR)
|
||||
return error.ParserError;
|
||||
|
||||
testing.expectEqualSlices(u8, ctx.protocol.name, "sample");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user