PageRenderTime 49ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/kata4/test/kata4/core_test.clj

https://github.com/bertschneider/GameOfLife
Clojure | 58 lines | 52 code | 6 blank | 0 comment | 11 complexity | f424c8acb2377c76d4cae86ba94be7cf MD5 | raw file
  1. (ns kata4.core-test
  2. (:use [kata4.core] :reload-all)
  3. (:use [clojure.test]))
  4. (deftest test-cell-at
  5. (let [world {:width 2 :height 2 :grid [1 2
  6. 3 4]}]
  7. (are [v x y] (= v (cell-at world x y))
  8. 1 0 0
  9. 2 1 0
  10. 3 0 1
  11. 4 1 1
  12. nil -1 -1
  13. nil -1 1
  14. nil 2 0)))
  15. (deftest test-neighbours
  16. (let [world {:width 3 :height 3 :grid [1 2 3
  17. 4 5 6
  18. 7 8 9]}]
  19. (are [v x y] (= v (neighbours world x y))
  20. [1 2 3 4 6 7 8 9] 1 1
  21. [2 4 5] 0 0
  22. [5 6 8] 2 2)))
  23. (deftest test-alive-neighbours
  24. (let [world {:width 3 :height 3 :grid [0 0 0
  25. 0 0 1
  26. 1 1 0]}]
  27. (are [v x y] (= v (alive-neighbours world x y))
  28. 0 0 0
  29. 1 1 0
  30. 2 0 1
  31. 3 1 1)))
  32. (deftest test-alive-grid
  33. (let [world {:width 3 :height 3 :grid [0 1 0
  34. 1 0 1
  35. 0 0 0]}]
  36. (is (= [2 2 2 1 3 1 1 2 1] (map :alives (alive-grid world))))))
  37. (deftest test-evolve-cell
  38. (is (= 0 (evolve-cell {:value 1 :alives 1})))
  39. (is (= 0 (evolve-cell {:value 1 :alives 4})))
  40. (is (= 1 (evolve-cell {:value 1 :alives 2})))
  41. (is (= 1 (evolve-cell {:value 1 :alives 3})))
  42. (is (= 1 (evolve-cell {:value 0 :alives 3})))
  43. (is (= 0 (evolve-cell {:value 0 :alives 2}))))
  44. (deftest test-evolve
  45. (let [world {:width 8 :height 4 :grid [0 0 0 0 0 0 0 0
  46. 0 0 0 0 1 0 0 0
  47. 0 0 0 1 1 0 0 0
  48. 0 0 0 0 0 0 0 0]}]
  49. (is (= (evolve world) (assoc world :grid [0 0 0 0 0 0 0 0
  50. 0 0 0 1 1 0 0 0
  51. 0 0 0 1 1 0 0 0
  52. 0 0 0 0 0 0 0 0])))))