/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
- (ns advenjure.items-test
- (:require [clojure.test :refer :all]
- [advenjure.items :refer :all]))
- (def water (make ["amount of water" "water"]))
- (def bottle (make ["bottle"] "a bottle" :items #{water}))
- (def sack (make ["sack" "brown sack"] "a sack" :items #{bottle}))
- (def empty-sack (assoc sack :items #{}))
- (def closed-sack (assoc sack :closed true))
- (def sword (make ["sword" "silver sword"]))
- (def wsword (make ["sword" "wooden sword"]))
- (def book (make "Book" "It's a book" :unlock "It's bound" :open :unlock))
- (deftest describe-container-test
- (testing "describe lists items"
- (is (= (describe-container sack)
- "The sack contained a bottle")))
- (testing "describe empty container"
- (is (= (describe-container empty-sack)
- "The sack was empty.")))
- (testing "describe closed container"
- (is (= (describe-container closed-sack)
- "The sack was closed."))))
- (deftest get-from-test
- (testing "get top level item"
- (let [item-set #{sack sword}]
- (is (= (get-from item-set "sack") [sack]))
- (is (= (get-from item-set "brown sack") [sack]))
- (is (= (get-from item-set "silver sword") [sword]))))
- (testing "get inner items"
- (let [item-set #{sack sword}]
- (is (= (get-from item-set "bottle") [bottle]))
- (is (= (get-from item-set "water") [water]))))
- (testing "don't get from closed container"
- (let [item-set #{closed-sack sword}]
- (is (empty? (get-from item-set "bottle")))
- (is (empty? (get-from item-set "water")))))
- (testing "don't get from partial match"
- (let [item-set #{closed-sack sword}]
- (is (empty? (get-from item-set "silver")))))
- (testing "get multiple items"
- (let [item-set #{wsword sword}]
- (is (= (get-from item-set "silver sword") [sword]))
- (is (= (get-from item-set "wooden sword") [wsword]))
- (is (= (into #{} (get-from item-set "sword")) #{wsword sword})))))
- (deftest verb-synonym-test
- (testing "verb synonyms"
- (is (= (:open book) (:unlock book)))))