Skip to content

Commit

Permalink
Move cvtres tests out of src
Browse files Browse the repository at this point in the history
Don't want to include these test cases in the Zig-shipped resinator since they can contain lots of test data, and moving them outside of src makes it easier to sync resinator downstream
  • Loading branch information
squeek502 committed Nov 25, 2024
1 parent 5448a57 commit 28b4772
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 77 deletions.
11 changes: 11 additions & 0 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,24 @@ pub fn build(b: *std.Build) void {
compiler_tests.root_module.addImport("resinator", resinator);
const run_compiler_tests = b.addRunArtifact(compiler_tests);

const cvtres_tests = b.addTest(.{
.name = "cvtres",
.root_source_file = b.path("test/cvtres.zig"),
.target = target,
.optimize = mode,
.filter = test_filter,
});
cvtres_tests.root_module.addImport("resinator", resinator);
const run_cvtres_tests = b.addRunArtifact(cvtres_tests);

const run_cli_tests_step = addCliTests(b, exe);

const test_step = b.step("test", "Run all tests");
test_step.dependOn(&run_exe_tests.step);
test_step.dependOn(&run_reference_tests.step);
test_step.dependOn(&run_parser_tests.step);
test_step.dependOn(&run_compiler_tests.step);
test_step.dependOn(&run_cvtres_tests.step);
test_step.dependOn(run_cli_tests_step);

const test_utils_module = b.createModule(.{
Expand Down
77 changes: 0 additions & 77 deletions src/cvtres.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1123,80 +1123,3 @@ pub const supported_targets = struct {
}
}
};

test writeCoff {
var buf = std.ArrayList(u8).init(std.testing.allocator);
defer buf.deinit();

{
buf.clearRetainingCapacity();

try writeCoff(std.testing.allocator, buf.writer(), &.{}, .{}, null);

try std.testing.expectEqualSlices(
u8,
"d\x86\x02\x00\x00\x00\x00\x00t\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x01.rsrc$01\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\xc0.rsrc$02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@feat.00\x11\x00\x00\x00\xff\xff\x00\x00\x03\x00.rsrc$01\x00\x00\x00\x00\x01\x00\x00\x00\x03\x01\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.rsrc$02\x00\x00\x00\x00\x02\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00",
buf.items,
);
}

{
buf.clearRetainingCapacity();

try writeCoff(std.testing.allocator, buf.writer(), &.{
.{
.type_value = .{ .ordinal = @intFromEnum(res.RT.RCDATA) },
.name_value = .{ .ordinal = 1 },
.data_version = 0,
.memory_flags = .{ .value = 0 },
.language = res.Language.fromInt(0x409),
.version = 0,
.characteristics = 0,
.data = "foo",
},
}, .{}, null);

try std.testing.expectEqualSlices(
u8,
"d\x86\x02\x00\x00\x00\x00\x00\xce\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x01.rsrc$01\x00\x00\x00\x00\x00\x00\x00\x00X\x00\x00\x00d\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00@\x00\x00\xc0.rsrc$02\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\n\x00\x00\x00\x18\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\x00\x000\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00H\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x05\x00\x00\x00\x03\x00foo\x00\x00\x00\x00\[email protected]\x11\x00\x00\x00\xff\xff\x00\x00\x03\x00.rsrc$01\x00\x00\x00\x00\x01\x00\x00\x00\x03\x01X\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.rsrc$02\x00\x00\x00\x00\x02\x00\x00\x00\x03\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$R000000\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x04\x00\x00\x00",
buf.items,
);
}
}

test "res to coff" {
{
const res_data = "\x00\x00\x00\x00 \x00\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x03\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00bar\x00\t\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x01\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00barbazfoo\x00\x00\x00\x03\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x02\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00foo\x00";
const coff = "d\x86\x02\x00\x00\x00\x00\x00Z\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x01.rsrc$01\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00d\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00@\x00\x00\xc0.rsrc$02\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00:\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\n\x00\x00\x00\x18\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x01\x00\x00\x00@\x00\x00\x80\x02\x00\x00\x00X\x00\x00\x80\x03\x00\x00\x00p\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x05\x00\x00\x00\x03\x00\x88\x00\x00\x00\x06\x00\x00\x00\x03\x00\x98\x00\x00\x00\x07\x00\x00\x00\x03\x00bar\x00\x00\x00\x00\x00barbazfoo\x00\x00\x00\x00\x00\x00\x00foo\x00\x00\x00\x00\[email protected]\x11\x00\x00\x00\xff\xff\x00\x00\x03\x00.rsrc$01\x00\x00\x00\x00\x01\x00\x00\x00\x03\x01\xb8\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.rsrc$02\x00\x00\x00\x00\x02\x00\x00\x00\x03\x01 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$R000000\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000008\x08\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000018\x18\x00\x00\x00\x02\x00\x00\x00\x03\x00\x04\x00\x00\x00";
try testResToCoff(res_data, coff);
}
{
const res_data = "\x00\x00\x00\x00 \x00\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x03\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00bar\x00\t\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x01\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00barbazfoo\x00\x00\x00\x03\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x02\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00foo\x00\x04\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x03\x00\x00\x00\x00\x000\x00\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00lbar\n\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x01\x00\x00\x00\x00\x000\x00\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00lbarbazfoo\x00\x00\x04\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x02\x00\x00\x00\x00\x000\x00\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00lfoo";
const coff = "d\x86\x02\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x01.rsrc$01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00d\x00\x00\x00d\x01\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00@\x00\x00\xc0.rsrc$02\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\n\x00\x00\x00\x18\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x01\x00\x00\x00@\x00\x00\x80\x02\x00\x00\x00`\x00\x00\x80\x03\x00\x00\x00\x80\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\t\x04\x00\x00\xa0\x00\x00\x00\x01\x08\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\t\x04\x00\x00\xc0\x00\x00\x00\x01\x08\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\t\x04\x00\x00\xe0\x00\x00\x00\x01\x08\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x05\x00\x00\x00\x03\x00\xa0\x00\x00\x00\x06\x00\x00\x00\x03\x00\xc0\x00\x00\x00\x07\x00\x00\x00\x03\x00\xf0\x00\x00\x00\x08\x00\x00\x00\x03\x00\xb0\x00\x00\x00\t\x00\x00\x00\x03\x00\xd0\x00\x00\x00\n\x00\x00\x00\x03\x00bar\x00\x00\x00\x00\x00barbazfoo\x00\x00\x00\x00\x00\x00\x00foo\x00\x00\x00\x00\x00lbar\x00\x00\x00\x00lbarbazfoo\x00\x00\x00\x00\x00\x00lfoo\x00\x00\x00\[email protected]\x11\x00\x00\x00\xff\xff\x00\x00\x03\x00.rsrc$01\x00\x00\x00\x00\x01\x00\x00\x00\x03\x01\x00\x01\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.rsrc$02\x00\x00\x00\x00\x02\x00\x00\x00\x03\x01@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$R000000\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000008\x08\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000018\x18\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000020 \x00\x00\x00\x02\x00\x00\x00\x03\x00$R000028(\x00\x00\x00\x02\x00\x00\x00\x03\x00$R0000388\x00\x00\x00\x02\x00\x00\x00\x03\x00\x04\x00\x00\x00";
try testResToCoff(res_data, coff);
}
{
const res_data = "\x00\x00\x00\x00 \x00\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00 \x00\x00\x00\xff\xffc\x00\xff\xff\x03\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00zbar\n\x00\x00\x00 \x00\x00\x00\xff\xffe\x00\xff\xff\x01\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00zbarbazfoo\x00\x00\x05\x00\x00\x00 \x00\x00\x00\xff\xffd\x00\xff\xff\x02\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00zfooz\x00\x00\x00\x05\x00\x00\x00 \x00\x00\x00\xff\xffd\x00\xff\xff\x01\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00zfooz\x00\x00\x00\x03\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x03\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00bar\x00\t\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x01\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00barbazfoo\x00\x00\x00\x03\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x02\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00foo\x00\x04\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x03\x00\x00\x00\x00\x000\x00\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00lbar\n\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x01\x00\x00\x00\x00\x000\x00\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00lbarbazfoo\x00\x00\x04\x00\x00\x00 \x00\x00\x00\xff\xff\n\x00\xff\xff\x02\x00\x00\x00\x00\x000\x00\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00lfoo";
const coff = "d\x86\x02\x00\x00\x00\x00\x008\x03\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x01.rsrc$01\x00\x00\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00d\x00\x00\x00l\x02\x00\x00\x00\x00\x00\x00\n\x00\x00\x00@\x00\x00\xc0.rsrc$02\x00\x00\x00\x00\x00\x00\x00\x00h\x00\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\n\x00\x00\x000\x00\x00\x80c\x00\x00\x00X\x00\x00\x80d\x00\x00\x00p\x00\x00\x80e\x00\x00\x00\x90\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x01\x00\x00\x00\xa8\x00\x00\x80\x02\x00\x00\x00\xc8\x00\x00\x80\x03\x00\x00\x00\xe8\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x03\x00\x00\x00\x08\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x01\x00\x00\x00 \x01\x00\x80\x02\x00\x00\x008\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00P\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\t\x04\x00\x00h\x01\x00\x00\x01\x08\x00\x00x\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\t\x04\x00\x00\x88\x01\x00\x00\x01\x08\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\t\x04\x00\x00\xa8\x01\x00\x00\x01\x08\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x05\x00\x00\x00\x03\x00\xf8\x01\x00\x00\x06\x00\x00\x00\x03\x00\xe8\x01\x00\x00\x07\x00\x00\x00\x03\x00\xd8\x01\x00\x00\x08\x00\x00\x00\x03\x00\xa8\x01\x00\x00\t\x00\x00\x00\x03\x00h\x01\x00\x00\n\x00\x00\x00\x03\x00\x88\x01\x00\x00\x0b\x00\x00\x00\x03\x00\xb8\x01\x00\x00\x0c\x00\x00\x00\x03\x00x\x01\x00\x00\r\x00\x00\x00\x03\x00\x98\x01\x00\x00\x0e\x00\x00\x00\x03\x00zbar\x00\x00\x00\x00zbarbazfoo\x00\x00\x00\x00\x00\x00zfooz\x00\x00\x00zfooz\x00\x00\x00bar\x00\x00\x00\x00\x00barbazfoo\x00\x00\x00\x00\x00\x00\x00foo\x00\x00\x00\x00\x00lbar\x00\x00\x00\x00lbarbazfoo\x00\x00\x00\x00\x00\x00lfoo\x00\x00\x00\[email protected]\x11\x00\x00\x00\xff\xff\x00\x00\x03\x00.rsrc$01\x00\x00\x00\x00\x01\x00\x00\x00\x03\x01\x08\x02\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.rsrc$02\x00\x00\x00\x00\x02\x00\x00\x00\x03\x01h\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$R000000\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000008\x08\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000018\x18\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000020 \x00\x00\x00\x02\x00\x00\x00\x03\x00$R000028(\x00\x00\x00\x02\x00\x00\x00\x03\x00$R0000300\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000040@\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000048H\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000050P\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000060`\x00\x00\x00\x02\x00\x00\x00\x03\x00\x04\x00\x00\x00";
try testResToCoff(res_data, coff);
}
{
const res_data = "\x00\x00\x00\x00 \x00\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00(\x00\x00\x00B\x00A\x00R\x00\x00\x00F\x00O\x00O\x00\x00\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00a\x00b\x00c\x00d\x00e\x00f\x00\n\x00\x00\x00(\x00\x00\x00B\x00A\x00R\x00\x00\x00A\x00O\x00O\x00\x00\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00a\x00b\x00c\x00d\x00e\x00\x00\x00\x04\x00\x00\x00(\x00\x00\x00B\x00A\x00R\x00\x00\x00\xac O\x00O\x00\x00\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00abcd\x03\x00\x00\x00(\x00\x00\x00B\x00A\x00R\x00\x00\x00\xc7\x00O\x00O\x00\x00\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00abc\x00\x02\x00\x00\x00(\x00\x00\x00B\x00A\x00R\x00\x00\x00\xe7\x00O\x00O\x00\x00\x00\x00\x00\x00\x000\x00\t\x04\x00\x00\x00\x00\x00\x00\x00\x00ab\x00\x00";
const coff = "d\x86\x02\x00\x00\x00\x00\x00\x16\x02\x00\x00\n\x00\x00\x00\x00\x00\x00\x01.rsrc$01\x00\x00\x00\x00\x00\x00\x00\x00H\x01\x00\x00d\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00@\x00\x00\xc0.rsrc$02\x00\x00\x00\x00\x00\x00\x00\x008\x00\x00\x00\xde\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x18\x01\x00\x80\x18\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00(\x01\x00\x80P\x00\x00\x80 \x01\x00\x80h\x00\x00\x808\x01\x00\x80\x80\x00\x00\x80@\x01\x00\x80\x98\x00\x00\x800\x01\x00\x80\xb0\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00B\x00A\x00R\x00\x03\x00F\x00O\x00O\x00\x03\x00A\x00O\x00O\x00\x03\x00\xac O\x00O\x00\x03\x00\xc7\x00O\x00O\x00\x03\x00\xe7\x00O\x00O\x00\xd8\x00\x00\x00\x05\x00\x00\x00\x03\x00\xc8\x00\x00\x00\x06\x00\x00\x00\x03\x00\x08\x01\x00\x00\x07\x00\x00\x00\x03\x00\xe8\x00\x00\x00\x08\x00\x00\x00\x03\x00\xf8\x00\x00\x00\t\x00\x00\x00\x03\x00a\x00b\x00c\x00d\x00e\x00f\x00\x00\x00\x00\x00a\x00b\x00c\x00d\x00e\x00\x00\x00\x00\x00\x00\x00abcd\x00\x00\x00\x00abc\x00\x00\x00\x00\x00ab\x00\x00\x00\x00\x00\[email protected]\x11\x00\x00\x00\xff\xff\x00\x00\x03\x00.rsrc$01\x00\x00\x00\x00\x01\x00\x00\x00\x03\x01H\x01\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.rsrc$02\x00\x00\x00\x00\x02\x00\x00\x00\x03\x018\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$R000000\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000010\x10\x00\x00\x00\x02\x00\x00\x00\x03\x00$R000020 \x00\x00\x00\x02\x00\x00\x00\x03\x00$R000028(\x00\x00\x00\x02\x00\x00\x00\x03\x00$R0000300\x00\x00\x00\x02\x00\x00\x00\x03\x00\x04\x00\x00\x00";
try testResToCoff(res_data, coff);
}
}

fn testResToCoff(res_data: []const u8, expected_coff: []const u8) !void {
var fbs = std.io.fixedBufferStream(res_data);

var resources = try parseRes(std.testing.allocator, fbs.reader(), .{ .max_size = res_data.len });
defer resources.deinit();

var buf = try std.ArrayList(u8).initCapacity(std.testing.allocator, expected_coff.len);
defer buf.deinit();

try writeCoff(std.testing.allocator, buf.writer(), resources.list.items, .{}, null);

try std.testing.expectEqualSlices(u8, expected_coff, buf.items);
}
Loading

0 comments on commit 28b4772

Please sign in to comment.