(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]))) (is (= 28 (path-between ((build-world ["########################" "#...............@.C.D.f#" "#.######################" "#.......a...c.d.A.e.F.g#" "########################"]) :t) [16 1] [12 3])))) (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################" "########################"])))))