I need to test function that requires std.net.Stream as a first argument and the second is error and it translates zig errors to errors for the client and then send it back. The problem is i don't know how to mock std.net.Stream
const std = @import("std");
const Args = struct {
command_name: ?[]const u8 = null,
};
pub fn handle(stream: std.net.Stream, err: anyerror, args: Args) !void {
const out = stream.writer();
_ = switch (err) {
error.BadRequest => try out.writeAll("-bad request\r\n"),
error.UnknownCommand => try handle_unknown_command(out, args),
else => try out.writeAll("-unexpected\r\n"),
};
}
fn handle_unknown_command(out: std.net.Stream.Writer, args: Args) !void {
if (args.command_name) |command_name| {
try out.print("-unknown command '{s}'\r\n", .{command_name});
} else {
try out.writeAll("-unknown command\r\n");
}
}
test "handle BadRequest" {
const buffer = std.net.Stream{ .handle = std.io.getStdOut() };
defer buffer.deinit();
// const out = buffer.writer();
// defer out.flush();
// try handle(buffer, error.BadRequest, Args{});
// std.testing.expectEqualStrings(buffer.toString(), "-bad request\r\n");
}