diff options
Diffstat (limited to '09/test.scm')
-rw-r--r-- | 09/test.scm | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/09/test.scm b/09/test.scm new file mode 100644 index 0000000..6d232da --- /dev/null +++ b/09/test.scm @@ -0,0 +1,68 @@ +(import (chezscheme)) + +; Where the magic happens +(import (lib)) + +; My quick-and-dirty unit testing framework (copied for each day) +(define (run-test name proc input expected) + (let ((result (proc input))) + (if (equal? result expected) + (printf "\x1b;[32;1mPASS\x1b;[0m: ~a\n" + name) + (printf "\x1b;[31;1mFAIL\x1b;[0m: ~a: got ~a, expected ~a\n" + name result expected)))) + +(printf "Part 1 tests:\n") + +(define (test-part1 name input expected) + (run-test name solve-part1 input expected)) + +(test-part1 "part 1 example 1" + "{}" 1) + +(test-part1 "part 1 example 2" + "{{{}}}" 6) + +(test-part1 "part 1 example 3" + "{{},{}}" 5) + +(test-part1 "part 1 example 4" + "{{{},{},{{}}}}" 16) + +(test-part1 "part 1 example 5" + "{<a>,<a>,<a>,<a>}" 1) + +(test-part1 "part 1 example 6" + "{{<ab>},{<ab>},{<ab>},{<ab>}}" 9) + +(test-part1 "part 1 example 7" + "{{<!!>},{<!!>},{<!!>},{<!!>}}" 9) + +(test-part1 "part 1 example 8" + "{{<a!>},{<a!>},{<a!>},{<ab>}}" 3) + +(printf "Part 2 tests:\n") + +(define (test-part2 name input expected) + (run-test name solve-part2 input expected)) + +(test-part2 "part 2 example 1" + "{<>}" 0) + +(test-part2 "part 2 example 2" + "{<random characters>}" 17) + +(test-part2 "part 2 example 3" + "{<<<<>}" 3) + +(test-part2 "part 2 example 4" + "{<{!>}>}" 2) + +(test-part2 "part 2 example 5" + "{<!!>}" 0) + +(test-part2 "part 2 example 6" + "{<!!!>>}" 0) + +(test-part2 "part 2 example 7" + "{<{o\"i!a,<{i<a>}" 10) |