Add broken day18pt1
[adventofcode2019.git] / test / adventofcode2019 / day18_test.clj
diff --git a/test/adventofcode2019/day18_test.clj b/test/adventofcode2019/day18_test.clj
new file mode 100644 (file)
index 0000000..e962b49
--- /dev/null
@@ -0,0 +1,54 @@
+(ns adventofcode2019.day18-test
+  (:require [clojure.test :refer :all]
+            [adventofcode2019.day18 :refer :all]))
+
+(deftest test-build-world
+  (is (= {:p [5 1]
+          :t #{[1 1] [2 1] [4 1] [5 1] [6 1] [7 1]}
+          :k {\a [7 1], \b [1 1]}
+          :d {\A [3 1]}}
+         (build-world ["#########"
+                       "#b.A.@.a#"
+                       "#########"]))))
+
+(deftest test-pathing
+  (is (= 2 (path-between ((build-world ["#########"
+                                        "#b.A.@.a#"
+                                        "#########"]) :t)
+                         [5 1] [7 1]))))
+
+(deftest test-accessible
+  (is (= {\a 2}
+         (accessible (build-world ["#########"
+                                   "#b.A.@.a#"
+                                   "#########"])))))
+
+(deftest examples
+  (is (= 8 (acquire-all-keys (build-world ["#########"
+                                           "#b.A.@.a#"
+                                           "#########"]))))
+  (is (= 86 (acquire-all-keys (build-world ["########################"
+                                            "#f.D.E.e.C.b.A.@.a.B.c.#"
+                                            "######################.#"
+                                            "#d.....................#"
+                                            "########################"]))))
+  (is (= 132 (acquire-all-keys (build-world ["########################"
+                                             "#...............b.C.D.f#"
+                                             "#.######################"
+                                             "#.....@.a.B.c.d.A.e.F.g#"
+                                             "########################"]))))
+  #_(is (= 136 (acquire-all-keys (build-world ["#################"
+                                               "#i.G..c...e..H.p#"
+                                               "########.########"
+                                               "#j.A..b...f..D.o#"
+                                               "########@########"
+                                               "#k.E..a...g..B.n#"
+                                               "########.########"
+                                               "#l.F..d...h..C.m#"
+                                               "#################"]))))
+  (is (= 81 (acquire-all-keys (build-world ["########################"
+                                            "#@..............ac.GI.b#"
+                                            "###d#e#f################"
+                                            "###A#B#C################"
+                                            "###g#h#i################"
+                                            "########################"])))))