All tests pass again, with much more safety.

This commit is contained in:
Simon Brooke 2019-06-26 10:51:08 +01:00
parent 9d2b6da1cc
commit dfd5728e57
2 changed files with 36 additions and 5 deletions

View file

@ -32,17 +32,18 @@
([x & axes] ([x & axes]
(and (and
(map? x) (map? x)
(number? (:dimensions x))
(pos? (:dimensions x)) (pos? (:dimensions x))
(keyword? (:coord x)) (keyword? (:coord x))
(= (:coord x) (first axes)) (= (:coord x) (first axes))
(if (if
(rest axes) (empty? (rest axes))
(= (:content x) :data)
(and (and
(= (:content x) (rest axes)) (= (:content x) (rest axes))
(every? (every?
sparse-array? sparse-array?
(map #(x %) (filter integer? (keys x))))) (map #(x %) (filter integer? (keys x)))))))))
(= (:content x) :data)))))
(defn put (defn put
"Return a sparse array like this `array` but with this `value` at these "Return a sparse array like this `array` but with this `value` at these

View file

@ -16,8 +16,38 @@
:coord :y, :coord :y,
:content :data, :content :data,
3 "goodbye"}})) 3 "goodbye"}}))
(is-not (sparse-array? [])) (is (= (sparse-array? []) false))
(is-not (sparse-array? "hello")) (is (= (sparse-array? "hello") false))
(is (=
(sparse-array?
(dissoc (make-sparse-array :x :y :z) :dimensions))
false)
"All mandatory keywords must be present: dimensions")
(is (=
(sparse-array?
(dissoc (make-sparse-array :x :y :z) :coord))
false)
"All mandatory keywords must be present: coord")
(is (=
(sparse-array?
(dissoc (make-sparse-array :x :y :z) :content))
false)
"All mandatory keywords must be present: content")
(is (=
(sparse-array? {:dimensions 2,
:coord :x,
:content '(:y),
3 {:dimensions 1,
:coord :y,
:content :data,
4 "hello"},
4 {:dimensions 1,
:coord :y,
:content :data,
3 "goodbye"}
5 :foo})
false)
"Can't have data in a non-data layer")
)) ))
(deftest put-and-get (deftest put-and-get