const std = @import("std"); const app = @import("./main.zig"); test "expect lines to be corrupt" { var input = [_][]const u8{ "(]", "{()()()>", "(((()))}", "<([]){()}[{}])", }; std.testing.log_level = .debug; var buffer: [2000]u8 = undefined; var fixed_buffer = std.heap.FixedBufferAllocator.init(&buffer); const allocator = fixed_buffer.allocator(); for (input) |line| { try std.testing.expect(try app.isLineCorrupt(allocator, line)); } } test "expect lines to be okay" { var input = [_][]const u8{ "{", "[]", "{}", "()", "<>", "([])", "{()()()}", "<([{}])>", "[<>({}){}[([])<>]]", "(((((((((())))))))))", }; std.testing.log_level = .debug; var buffer: [2000]u8 = undefined; var fixed_buffer = std.heap.FixedBufferAllocator.init(&buffer); const allocator = fixed_buffer.allocator(); for (input) |line| { try std.testing.expect(!(try app.isLineCorrupt(allocator, line))); } } test "expect task 1 to sum to 26397" { var input = [_][]const u8{ "[({(<(())[]>[[{[]{<()<>>", "[(()[<>])]({[<{<<[]>>(", "{([(<{}[<>[]}>{[]{[(<()>", "(((({<>}<{<{<>}{[]{[]{}", "[[<[([]))<([[{}[[()]]]", "[{[{({}]{}}([{[{{{}}([]", "{<[[]]>}<{[{[{[]{()[[[]", "[<(<(<(<{}))><([]([]()", "<{([([[(<>()){}]>(<<{{", "<{([{{}}[<[[[<>{}]]]>[]]", }; const expected: u32 = 26397; std.testing.log_level = .debug; var buffer: [2000]u8 = undefined; var fixed_buffer = std.heap.FixedBufferAllocator.init(&buffer); const allocator = fixed_buffer.allocator(); try std.testing.expect((try app.task1(allocator, &input)) == expected); } test "expect task 2 to result in 288957" { var input = [_][]const u8{ "[({(<(())[]>[[{[]{<()<>>", "[(()[<>])]({[<{<<[]>>(", "{([(<{}[<>[]}>{[]{[(<()>", "(((({<>}<{<{<>}{[]{[]{}", "[[<[([]))<([[{}[[()]]]", "[{[{({}]{}}([{[{{{}}([]", "{<[[]]>}<{[{[{[]{()[[[]", "[<(<(<(<{}))><([]([]()", "<{([([[(<>()){}]>(<<{{", "<{([{{}}[<[[[<>{}]]]>[]]", }; const expected: u64 = 288957; std.testing.log_level = .debug; var buffer: [2000]u8 = undefined; var fixed_buffer = std.heap.FixedBufferAllocator.init(&buffer); const allocator = fixed_buffer.allocator(); try std.testing.expect((try app.task2(allocator, &input)) == expected); }