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