Kibitised, and improved test coverage. Cloverage currently failing, don't
know why.
This commit is contained in:
parent
3b1d28d3cd
commit
1030ece3ff
|
@ -40,7 +40,7 @@
|
|||
"Set the `gradient` property of this `cell` of this `world` to the difference in
|
||||
altitude between its highest and lowest neghbours."
|
||||
[world cell]
|
||||
(let [heights (remove nil? (map #(:altitude %) (get-neighbours world cell)))
|
||||
(let [heights (remove nil? (map :altitude (get-neighbours world cell)))
|
||||
highest (cond (empty? heights) 0 ;; shouldn't happen
|
||||
true (apply max heights))
|
||||
lowest (cond (empty? heights) 0 ;; shouldn't
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
* `n` a number, on the set of real numbers."
|
||||
[n]
|
||||
(cond (< n 0) (- 0 n) true n))
|
||||
(cond (neg? n) (- 0 n) true n))
|
||||
|
||||
(defn member?
|
||||
"True if elt is a member of col."
|
||||
|
@ -161,7 +161,7 @@
|
|||
(or (property downstream) default)) (first cells)
|
||||
true downstream))))
|
||||
([cells property]
|
||||
(get-least-cell cells property (. Integer MAX_VALUE))))
|
||||
(get-least-cell cells property (Integer/MAX_VALUE))))
|
||||
|
||||
|
||||
(defn- set-cell-property
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
;; that every cell's :x and :y properties reflect its place in the matrix.
|
||||
|
||||
(ns mw-engine.world
|
||||
(:use mw-engine.utils))
|
||||
(:use mw-engine.utils)
|
||||
(:require [clojure.string :as string :only [join]]))
|
||||
|
||||
(defn- make-cell
|
||||
"Create a minimal default cell at x, y
|
||||
|
@ -27,7 +28,7 @@
|
|||
[index width height]
|
||||
(cond (= index width) nil
|
||||
true (cons (make-cell index height)
|
||||
(make-world-row (+ index 1) width height))))
|
||||
(make-world-row (inc index) width height))))
|
||||
|
||||
(defn- make-world-rows [index width height]
|
||||
"Make the (remaining) rows in a world of this width and height, from this
|
||||
|
@ -38,7 +39,7 @@
|
|||
* `height` total height of the matrix, in cells."
|
||||
(cond (= index height) nil
|
||||
true (cons (apply vector (make-world-row 0 width index))
|
||||
(make-world-rows (+ index 1) width height))))
|
||||
(make-world-rows (inc index) width height))))
|
||||
|
||||
(defn make-world
|
||||
"Make a world width cells from east to west, and height cells from north to
|
||||
|
@ -53,7 +54,7 @@
|
|||
"Truncate the print name of the state of this cell to at most limit characters."
|
||||
[cell limit]
|
||||
(let [s (:state cell)]
|
||||
(cond (> (count (.toString s)) 10) (subs s 0 10)
|
||||
(cond (> (count (str s)) limit) (subs s 0 limit)
|
||||
true s)))
|
||||
|
||||
(defn format-cell
|
||||
|
@ -67,8 +68,7 @@
|
|||
(defn- format-world-row
|
||||
"Format one row in the state of a world for printing."
|
||||
[row]
|
||||
(apply str
|
||||
(map format-cell row)))
|
||||
(string/join (map format-cell row)))
|
||||
|
||||
(defn print-world
|
||||
"Print the current state of this world, and return nil.
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
(:use clojure.java.io)
|
||||
(:require [clojure.test :refer :all]
|
||||
[mw-engine.heightmap :refer :all]
|
||||
[mw-engine.world :as world :only [make-world]]
|
||||
[clojure.math.combinatorics :as combo]))
|
||||
|
||||
(deftest apply-heightmap-test
|
||||
|
@ -11,6 +12,21 @@
|
|||
gradients (map #(:gradient %) (flatten world))]
|
||||
(is (= (count world) 9) "World should be 9x9")
|
||||
(is (= (count (first world)) 9) "World should be 9x9")
|
||||
(is (= (count (remove nil? altitudes)) 81)
|
||||
"All cells should have altitude")
|
||||
(is (= (count (remove nil? gradients)) 81)
|
||||
"All cells should have gradient")
|
||||
(is (> (apply max altitudes)
|
||||
(apply min altitudes))
|
||||
"There should be a range of altitudes")
|
||||
(is (> (apply + gradients) 0)
|
||||
"At least some gradients must be positive, none should be negative"))
|
||||
;; alternate means of making the world, same tests.
|
||||
(let [world (apply-heightmap (world/make-world 9 9) (as-file "resources/heightmaps/test9x9.png"))
|
||||
altitudes (map #(:altitude %) (flatten world))
|
||||
gradients (map #(:gradient %) (flatten world))]
|
||||
(is (= (count world) 9) "World should be 9x9")
|
||||
(is (= (count (first world)) 9) "World should be 9x9")
|
||||
(is (= (count (remove nil? altitudes)) 81)
|
||||
"All cells should have altitude")
|
||||
(is (= (count (remove nil? gradients)) 81)
|
||||
|
|
|
@ -4,6 +4,14 @@
|
|||
[clojure.math.combinatorics :as combo]
|
||||
[mw-engine.utils :refer :all]))
|
||||
|
||||
(deftest abs-test
|
||||
(testing "Absolute value function"
|
||||
(is (= (abs 0) 0) "Corner case: nothing comes of nothing, nothing ever could.")
|
||||
(is (= (abs 1) 1) "Corner case: one is one and all alone and ever more shall be so.")
|
||||
(is (= (abs -1) 1) "Corner case: when others are cast down and afflicted, thou shalt be able to raise them up.")
|
||||
(is (= (abs -90371) 90371) "Random check")
|
||||
(is (= (abs 30971) 30971) "Another random check")))
|
||||
|
||||
(deftest get-neighbours-test
|
||||
(testing "Gross functionality of get-neighbours: checks the right number of
|
||||
neighbours returned, doesn't actually check they're the right ones."
|
||||
|
|
Loading…
Reference in a new issue