Add untested day14pt1 (but it has tests!)
[adventofcode2019.git] / test / adventofcode2019 / day14_test.clj
diff --git a/test/adventofcode2019/day14_test.clj b/test/adventofcode2019/day14_test.clj
new file mode 100644 (file)
index 0000000..1a6bd86
--- /dev/null
@@ -0,0 +1,37 @@
+(ns adventofcode2019.day14-test
+  (:require [clojure.test :refer :all]
+            [adventofcode2019.day14 :refer :all]))
+
+(deftest check-make-graph
+  (is (= (make-graph ["3 ORE => 2 ABC" 
+                      "3 ABC => 1 FUEL"])
+         {"ABC"  {{"ORE" 3/2} 1}
+          "FUEL" {{"ABC" 3}   1}})))
+
+(deftest simple-exchange
+  (is (= 3 (find-lowest-exchange-rate {"FUEL" {{"ORE" 1, "ABC" 2, "DEF" 3} 1 
+                                               {"ORE" 3} 1 
+                                               {"GHI" 5/2} 1}} 
+                                      "FUEL" "ORE"))))
+
+(deftest trading-up
+  (is (= 6 (find-lowest-exchange-rate (make-graph ["3 ORE => 2 ABC"
+                                                   "3 ABC => 1 FUEL"])
+                                      "FUEL" "ORE"))))
+
+(deftest complicated-exchange
+  (is (= 2 (find-lowest-exchange-rate (make-graph ["3 ORE => 2 ABC"
+                                                   "3 ABC => 1 FUEL"
+                                                   "2 ORE => 1 CDE"
+                                                   "1 CDE => 1 FUEL"])
+                                      "FUEL" "ORE"))))
+
+(deftest very-tricky-exchange
+  (is (= 3 (find-lowest-exchange-rate (make-graph ["3 ORE => 2 ABC"
+                                                   "3 ABC => 1 FUEL"
+                                                   "4 ORE => 1 CDE"
+                                                   "1 CDE => 1 FUEL"
+                                                   "3 ORE => 2 FGH"
+                                                   "1 FGH => 1 IJK"
+                                                   "1 IJK => 1 FUEL"])
+                                      "FUEL" "ORE"))))