diff --git a/src/backend/Assembly_test.zig b/src/backend/Assembly_test.zig new file mode 100644 index 0000000000000000000000000000000000000000..4457e1466a2042cedd30fcd85a70b9a48489b096 --- /dev/null +++ b/src/backend/Assembly_test.zig @@ -0,0 +1,62 @@ +const std = @import("std"); +const Assembly = @import("Assembly.zig").Assembly; + +test "writeToAllFile - empty data and empty text" { + const assembly = Assembly{ + .data = &.{}, + .text = &.{}, + }; + var buffer: [1024]u8 = undefined; + var fbs = std.io.FixedBufferStream(&buffer); + const file = try std.fs.File.openWriter(fbs.writer()); + try assembly.writeToAllFile(file); + try std.testing.expectEqualStrings("", fbs.getWritten()); +} + +test "writeToAllFile - only data, no text" { + const assembly = Assembly{ + .data = "hello data", + .text = &.{}; + }; + var buffer: [1024]u8 = undefined; + var fbs = std.io.FixedBufferStream(&buffer); + const file = try std.fs.File.openWriter(fbs.writer()); + try assembly.writeToAllFile(file); + try std.testing.expectEqualStrings("hello data", fbs.getWritten()); +} + +test "writeToAllFile - only text, no data" { + const assembly = Assembly{ + .data = &.{}, + .text = "hello text", + }; + var buffer: [1024]u8 = undefined; + var fbs = std.io.FixedBufferStream(&buffer); + const file = try std.fs.File.openWriter(fbs.writer()); + try assembly.writeToAllFile(file); + try std.testing.expectEqualStrings("hello text", fbs.getWritten()); +} + +test "writeToAllFile - both data and text" { + const assembly = Assembly{ + .data = "data content", + .text = " text content", + }; + var buffer: [1024]u8 = undefined; + var fbs = std.io.FixedBufferStream(&buffer); + const file = try std.fs.File.openWriter(fbs.writer()); + try assembly.writeToAllFile(file); + try std.testing.expectEqualStrings("data content text content", fbs.getWritten()); +} + +test "writeToAllFile - invalid file descriptor" { + const assembly = Assembly{ + .data = "test data", + .text = "test text", + }; + const invalid_file = std.fs.File{ + .handle = -1, + .mode = .read_write, + }; + try std.testing.expectError(error.InputOutput, assembly.writeToAllFile(invalid_file)); +}