const std = @import("std"); const app = @import("./main.zig"); test "expect neighbors to index 0 to have two valid indices" { std.testing.log_level = .debug; const raw_input: []const u8 = \\012 \\345 \\678 \\ ; var stream = std.io.fixedBufferStream(raw_input); var input = try app.readInput(std.testing.allocator, stream.reader()); defer input.deinit(); const expected = [4]u32{ app.invalid_index, 1, app.invalid_index, 3, }; try std.testing.expect(std.mem.eql(u32, &input.neighbors(0), &expected)); } test "expect neighbors to index 8 to have two valid indices" { std.testing.log_level = .debug; const raw_input: []const u8 = \\012 \\345 \\678 \\ ; var stream = std.io.fixedBufferStream(raw_input); var input = try app.readInput(std.testing.allocator, stream.reader()); defer input.deinit(); const expected = [4]u32{ 7, app.invalid_index, 5, app.invalid_index, }; try std.testing.expect(std.mem.eql(u32, &input.neighbors(8), &expected)); } test "expect neighbors to index 4 to have four valid indices" { std.testing.log_level = .debug; const raw_input: []const u8 = \\012 \\345 \\678 \\ ; var stream = std.io.fixedBufferStream(raw_input); var input = try app.readInput(std.testing.allocator, stream.reader()); defer input.deinit(); const expected = [4]u32{ 3, 5, 1, 7, }; try std.testing.expect(std.mem.eql(u32, &input.neighbors(4), &expected)); } test "expect expand to loop values correctly" { std.testing.log_level = .debug; const raw_input: []const u8 = \\123 \\456 \\789 \\ ; var stream = std.io.fixedBufferStream(raw_input); var input = try app.readInput(std.testing.allocator, stream.reader()); defer input.deinit(); try input.expand(3); const expected: u32 = 4; try std.testing.expect(input.risk_levels[(input.width * input.height) - 1] == expected); } test "expect task 1 to result in 40" { std.testing.log_level = .debug; const raw_input: []const u8 = \\1163751742 \\1381373672 \\2136511328 \\3694931569 \\7463417111 \\1319128137 \\1359912421 \\3125421639 \\1293138521 \\2311944581 \\ ; var stream = std.io.fixedBufferStream(raw_input); var input = try app.readInput(std.testing.allocator, stream.reader()); defer input.deinit(); const expected: u32 = 40; try std.testing.expect((try app.task1(&input)) == expected); } test "expect task 2 to result in 315" { std.testing.log_level = .debug; const raw_input: []const u8 = \\1163751742 \\1381373672 \\2136511328 \\3694931569 \\7463417111 \\1319128137 \\1359912421 \\3125421639 \\1293138521 \\2311944581 \\ ; var stream = std.io.fixedBufferStream(raw_input); var input = try app.readInput(std.testing.allocator, stream.reader()); defer input.deinit(); const expected: u32 = 315; try std.testing.expect((try app.task2(&input)) == expected); }