--- /dev/null
+(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################"
+ "########################"])))))