sparse-array/test/sparse_array/extract_test.clj

114 lines
4 KiB
Clojure

(ns sparse-array.extract-test
(:require [clojure.test :refer :all]
[sparse-array.core :refer [dense-to-sparse get]]
[sparse-array.extract :refer :all]))
(deftest sparse-tests
(testing "extraction from sparse array"
(let [dense [[[1 2 3][:one :two :three]["one" "two" "three"]]
[[1 :two "three"]["one" 2 :three][:one "two" 3]]
[[1.0 2.0 3.0][2/2 4/2 6/2]["I" "II" "III"]]]
sparse (dense-to-sparse dense '(:a :b :c))
integers (extract sparse integer?)
strings (extract sparse string?)
keywords (extract sparse keyword?)
threes (extract sparse #(if
(number? %)
(= % 3)
(= (name %) "three")))]
(map
#(let [expected nil
actual (get (extract sparse map?) %1 %2 %3)]
(is (= actual expected) "there are no cells of which `map?` is true"))
(range 3)
(range 3)
(range 3))
(let [expected 1
actual (get integers 0 0 0)]
(is (= actual expected)))
(let [expected nil
actual (get keywords 0 0 0)]
(is (= actual expected)))
(let [expected nil
actual (get strings 0 0 0)]
(is (= actual expected)))
(let [expected nil
actual (get threes 0 0 0)]
(is (= actual expected)))
(let [expected 3
actual (get integers 0 0 2)]
(is (= actual expected)))
(let [expected nil
actual (get keywords 0 0 2)]
(is (= actual expected)))
(let [expected :three
actual (get keywords 0 1 2)]
(is (= actual expected)))
(let [expected nil
actual (get strings 0 0 2)]
(is (= actual expected)))
(let [expected 3
actual (get threes 0 0 2)]
(is (= actual expected)))
(let [expected :three
actual (get threes 0 1 2)]
(is (= actual expected)))
(let [expected "three"
actual (get threes 0 2 2)]
(is (= actual expected)))
)))
(deftest dense-tests
(testing "extraction from dense array"
(let [dense [[[1 2 3][:one :two :three]["one" "two" "three"]]
[[1 :two "three"]["one" 2 :three][:one "two" 3]]
[[1.0 2.0 3.0][2/2 4/2 6/2]["I" "II" "III"]]]
integers (extract dense integer?)
strings (extract dense string?)
keywords (extract dense keyword?)
threes (extract dense #(if
(number? %)
(= % 3)
(= (name %) "three")))]
(map
#(let [expected nil
actual (get (extract dense map?) %1 %2 %3)]
(is (= actual expected) "there are no cells of which `map?` is true"))
(range 3)
(range 3)
(range 3))
(let [expected 1
actual (get integers 0 0 0)]
(is (= actual expected)))
(let [expected nil
actual (get keywords 0 0 0)]
(is (= actual expected)))
(let [expected nil
actual (get strings 0 0 0)]
(is (= actual expected)))
(let [expected nil
actual (get threes 0 0 0)]
(is (= actual expected)))
(let [expected 3
actual (get integers 0 0 2)]
(is (= actual expected)))
(let [expected nil
actual (get keywords 0 0 2)]
(is (= actual expected)))
(let [expected :three
actual (get keywords 0 1 2)]
(is (= actual expected)))
(let [expected nil
actual (get strings 0 0 2)]
(is (= actual expected)))
(let [expected 3
actual (get threes 0 0 2)]
(is (= actual expected)))
(let [expected :three
actual (get threes 0 1 2)]
(is (= actual expected)))
(let [expected "three"
actual (get threes 0 2 2)]
(is (= actual expected))))))