(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"))))