54 lines
2 KiB
Text
54 lines
2 KiB
Text
|
|
(ns minimallist.util-test
|
||
|
|
(:require [clojure.test :refer [deftest testing is are]]
|
||
|
|
[minimallist.util :as util]
|
||
|
|
[minimallist.helper :as h]))
|
||
|
|
|
||
|
|
(deftest reduce-update-test
|
||
|
|
(let [m {:a 1
|
||
|
|
:b 5}
|
||
|
|
f (fn [acc elm]
|
||
|
|
(let [elm10 (* elm 10)]
|
||
|
|
[(conj acc elm10) elm10]))]
|
||
|
|
(is (= (-> [[] m]
|
||
|
|
(util/reduce-update :a f)
|
||
|
|
(util/reduce-update :b f))
|
||
|
|
[[10 50] {:a 10, :b 50}]))))
|
||
|
|
|
||
|
|
(deftest reduce-update-in-test
|
||
|
|
(let [m {:a {:x 1, :y 2}
|
||
|
|
:b [3 4 5]}
|
||
|
|
f (fn [acc elm]
|
||
|
|
(let [elm10 (* elm 10)]
|
||
|
|
[(conj acc elm10) elm10]))]
|
||
|
|
(is (= (-> [[] m]
|
||
|
|
(util/reduce-update-in [:a :x] f)
|
||
|
|
(util/reduce-update-in [:b 2] f))
|
||
|
|
[[10 50] {:a {:x 10, :y 2}, :b [3 4 50]}]))))
|
||
|
|
|
||
|
|
(deftest reduce-mapv
|
||
|
|
(let [m {:a {:x 1, :y 2}
|
||
|
|
:b [3 4 5]}
|
||
|
|
f (fn [acc elm]
|
||
|
|
(let [elm10 (* elm 10)]
|
||
|
|
[(conj acc elm10) elm10]))]
|
||
|
|
(is (= (util/reduce-update [[] m] :b (partial util/reduce-mapv f))
|
||
|
|
[[30 40 50] {:a {:x 1, :y 2}, :b [30 40 50]}]))))
|
||
|
|
|
||
|
|
(deftest iterate-while-different-test
|
||
|
|
(let [inc-up-to-10 (fn [x] (cond-> x (< x 10) inc))]
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 0 0) 0))
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 0 5) 5))
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 0 10) 10))
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 0 15) 10))
|
||
|
|
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 7 2) 9))
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 7 3) 10))
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 7 4) 10))
|
||
|
|
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 12 0) 12))
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 12 3) 12))
|
||
|
|
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 0 ##Inf) 10))
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 10 ##Inf) 10))
|
||
|
|
(is (= (util/iterate-while-different inc-up-to-10 15 ##Inf) 15))))
|