Skip to content

Commit 5d0e512

Browse files
simple tests for functional part of snake
1 parent f5b892a commit 5d0e512

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

examples/test.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
:sequences :index-of-any :life-without-multi :multimethods.default
1010
:macros :macros.chain-1 :macros.chain-2 :macros.chain-3 :macros.chain-4
1111
:macros.chain-5 :lazy-index-of-any :macros.bench-1
12-
:concurrency :functional]))
12+
:concurrency :functional :snake]))
1313

1414
(def lancet-tests
1515
(map #(symbol (str "lancet.test." (name %)))

examples/test/snake.clj

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
(ns examples.test.snake
2+
(:use clojure.contrib.test-is examples.snake))
3+
4+
(deftest test-add-points
5+
(is (= [2,0] (add-points [1,1] [1,-1])))
6+
)
7+
8+
(deftest test-point-to-screen-rect
9+
(is (= [20 50 10 10] (point-to-screen-rect [2,5])))
10+
)
11+
12+
(deftest test-create-apple
13+
(let [apple (create-apple)]
14+
(is (<= 0 (first (:location apple)) width))
15+
(is (<= 0 (second (:location apple)) height))
16+
(is (= (:apple (:type apple))))))
17+
18+
(let [snake (create-snake)]
19+
20+
(deftest test-move
21+
(is (= [[2 1]] (:body (move snake))))
22+
(is (= [[2 1] [1 1]] (:body (move snake :grow)))))
23+
24+
(deftest test-turn
25+
(is (= [-1 0] (:dir (turn snake [-1 0])))))
26+
27+
(deftest test-win
28+
(let [growing-snakes (iterate #(move %1 :grow) snake)]
29+
(is (= (take 4 (map win? growing-snakes))
30+
(replicate 4 false)))
31+
(is (= (take 10 (drop 4 (map win? growing-snakes)))
32+
(replicate 10 true)))))
33+
34+
(deftest test-lose
35+
(let [grow #(move %1 :grow)]
36+
(is (not (lose? snake)))
37+
(is (not (lose? (grow snake))))
38+
(is (not (lose? (-> snake grow grow))))
39+
(is (lose? (-> snake (turn [1 0]) grow (turn [-1 0]) grow)))))
40+
41+
(deftest test-eats
42+
(let [eat-me {:location (first (:body snake))}
43+
dont-eat {:location [-1 -1]}]
44+
(is (eats? snake eat-me))
45+
(is (not (eats? snake dont-eat)))))
46+
)

0 commit comments

Comments
 (0)