/test/advenjure/items_test.clj

https://github.com/facundoolano/advenjure · Clojure · 56 lines · 46 code · 10 blank · 0 comment · 12 complexity · 5e2b1b3187f50fc9642f536f2e4691fa MD5 · raw file

  1. (ns advenjure.items-test
  2. (:require [clojure.test :refer :all]
  3. [advenjure.items :refer :all]))
  4. (def water (make ["amount of water" "water"]))
  5. (def bottle (make ["bottle"] "a bottle" :items #{water}))
  6. (def sack (make ["sack" "brown sack"] "a sack" :items #{bottle}))
  7. (def empty-sack (assoc sack :items #{}))
  8. (def closed-sack (assoc sack :closed true))
  9. (def sword (make ["sword" "silver sword"]))
  10. (def wsword (make ["sword" "wooden sword"]))
  11. (def book (make "Book" "It's a book" :unlock "It's bound" :open :unlock))
  12. (deftest describe-container-test
  13. (testing "describe lists items"
  14. (is (= (describe-container sack)
  15. "The sack contained a bottle")))
  16. (testing "describe empty container"
  17. (is (= (describe-container empty-sack)
  18. "The sack was empty.")))
  19. (testing "describe closed container"
  20. (is (= (describe-container closed-sack)
  21. "The sack was closed."))))
  22. (deftest get-from-test
  23. (testing "get top level item"
  24. (let [item-set #{sack sword}]
  25. (is (= (get-from item-set "sack") [sack]))
  26. (is (= (get-from item-set "brown sack") [sack]))
  27. (is (= (get-from item-set "silver sword") [sword]))))
  28. (testing "get inner items"
  29. (let [item-set #{sack sword}]
  30. (is (= (get-from item-set "bottle") [bottle]))
  31. (is (= (get-from item-set "water") [water]))))
  32. (testing "don't get from closed container"
  33. (let [item-set #{closed-sack sword}]
  34. (is (empty? (get-from item-set "bottle")))
  35. (is (empty? (get-from item-set "water")))))
  36. (testing "don't get from partial match"
  37. (let [item-set #{closed-sack sword}]
  38. (is (empty? (get-from item-set "silver")))))
  39. (testing "get multiple items"
  40. (let [item-set #{wsword sword}]
  41. (is (= (get-from item-set "silver sword") [sword]))
  42. (is (= (get-from item-set "wooden sword") [wsword]))
  43. (is (= (into #{} (get-from item-set "sword")) #{wsword sword})))))
  44. (deftest verb-synonym-test
  45. (testing "verb synonyms"
  46. (is (= (:open book) (:unlock book)))))