| 1 | (ns adventofcode2019.day14-test |
| 2 | (:require [clojure.test :refer :all] |
| 3 | [adventofcode2019.day14 :refer :all])) |
| 4 | |
| 5 | (deftest check-make-graph |
| 6 | (is (= (make-graph ["3 ORE => 2 ABC" |
| 7 | "3 ABC => 1 FUEL"]) |
| 8 | {"ABC" {{"ORE" 3/2} 1} |
| 9 | "FUEL" {{"ABC" 3} 1}}))) |
| 10 | |
| 11 | (deftest simple-exchange |
| 12 | (is (= 3 (find-lowest-exchange-rate {"FUEL" {{"ORE" 1, "ABC" 2, "DEF" 3} 1 |
| 13 | {"ORE" 3} 1 |
| 14 | {"GHI" 5/2} 1}} |
| 15 | "FUEL" "ORE")))) |
| 16 | |
| 17 | (deftest trading-up |
| 18 | (is (= 6 (find-lowest-exchange-rate (make-graph ["3 ORE => 2 ABC" |
| 19 | "3 ABC => 1 FUEL"]) |
| 20 | "FUEL" "ORE")))) |
| 21 | |
| 22 | (deftest complicated-exchange |
| 23 | (is (= 2 (find-lowest-exchange-rate (make-graph ["3 ORE => 2 ABC" |
| 24 | "3 ABC => 1 FUEL" |
| 25 | "2 ORE => 1 CDE" |
| 26 | "1 CDE => 1 FUEL"]) |
| 27 | "FUEL" "ORE")))) |
| 28 | |
| 29 | (deftest very-tricky-exchange |
| 30 | (is (= 3 (find-lowest-exchange-rate (make-graph ["3 ORE => 2 ABC" |
| 31 | "3 ABC => 1 FUEL" |
| 32 | "4 ORE => 1 CDE" |
| 33 | "1 CDE => 1 FUEL" |
| 34 | "3 ORE => 2 FGH" |
| 35 | "1 FGH => 1 IJK" |
| 36 | "1 IJK => 1 FUEL"]) |
| 37 | "FUEL" "ORE")))) |