All tests pass again, with much more safety.
This commit is contained in:
parent
9d2b6da1cc
commit
dfd5728e57
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue