-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshould_live_test.clj
37 lines (26 loc) · 1.24 KB
/
should_live_test.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(ns life
(:use clojure.test))
(load "life")
(deftest any-live-cell-with-fewer-than-two-live-neighbors-dies--as-if-caused-by-underpopulation
(is (= :dead
(should-live? :alive (repeat 8 :dead)) ))
(is (= :dead
(should-live? :alive (conj [:alive] (repeat 7 :dead))) )) )
(deftest any-live-cell-with-two-or-three-live-neighbors-lives-on-to-the-next-generation
(is (= :alive
(should-live? :alive (conj [:alive :alive] (repeat 6 :dead))) ))
(is (= :alive
(should-live? :alive (conj [:alive :alive :alive] (repeat 5 :dead))) )) )
(deftest any-live-cell-with-more-than-three-live-neighbours-dies--as-if-by-overcrowding
(is (= :dead
(should-live? :alive (conj [:alive :alive :alive :alive] (repeat 4 :dead))) ))
(is (= :dead
(should-live? :alive (conj [:alive :alive :alive :alive :alive] (repeat 3 :dead))) )) )
(deftest any-dead-cell-with-exactly-three-live-neighbours-becomes-a-live-cell--as-if-by-reproduction
(is (= :dead
(should-live? :dead (conj [:alive :alive] (repeat 6 :dead))) ))
(is (= :alive
(should-live? :dead (conj [:alive :alive :alive] (repeat 5 :dead))) ))
(is (= :dead
(should-live? :dead (conj [:alive :alive :alive :alive] (repeat 4 :dead))) )))
(run-tests 'life)