simplify. remove tick
This commit is contained in:
+17
-17
@@ -127,29 +127,29 @@
|
||||
(testing "timer tick decrements and reaches zero"
|
||||
(let [update-fn (fn [{:keys [seconds running] :as model} msg]
|
||||
(cond
|
||||
(= (first msg) :tick)
|
||||
(= msg :timer-tick)
|
||||
(if running
|
||||
(let [new-seconds (dec seconds)]
|
||||
(if (<= new-seconds 0)
|
||||
[(assoc model :seconds 0 :done true :running false) nil]
|
||||
[(assoc model :seconds new-seconds) (tui/tick 1000)]))
|
||||
[(assoc model :seconds new-seconds) (tui/after 1000 :timer-tick)]))
|
||||
[model nil])
|
||||
:else [model nil]))]
|
||||
|
||||
;; Normal tick
|
||||
(let [[m1 c1] (update-fn {:seconds 10 :running true :done false} [:tick 123])]
|
||||
(let [[m1 c1] (update-fn {:seconds 10 :running true :done false} :timer-tick)]
|
||||
(is (= 9 (:seconds m1)))
|
||||
(is (= [:tick 1000] c1)))
|
||||
(is (fn? c1)))
|
||||
|
||||
;; Tick to zero
|
||||
(let [[m1 c1] (update-fn {:seconds 1 :running true :done false} [:tick 123])]
|
||||
(let [[m1 c1] (update-fn {:seconds 1 :running true :done false} :timer-tick)]
|
||||
(is (= 0 (:seconds m1)))
|
||||
(is (true? (:done m1)))
|
||||
(is (false? (:running m1)))
|
||||
(is (nil? c1)))
|
||||
|
||||
;; Tick when paused does nothing
|
||||
(let [[m1 c1] (update-fn {:seconds 5 :running false :done false} [:tick 123])]
|
||||
(let [[m1 c1] (update-fn {:seconds 5 :running false :done false} :timer-tick)]
|
||||
(is (= 5 (:seconds m1)))
|
||||
(is (nil? c1))))))
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
(if (tui/key= msg " ")
|
||||
(let [new-running (not running)]
|
||||
[(assoc model :running new-running)
|
||||
(when new-running (tui/tick 1000))])
|
||||
(when new-running (tui/after 1000 :timer-tick))])
|
||||
[model nil]))]
|
||||
|
||||
;; Pause (running -> not running)
|
||||
@@ -170,21 +170,21 @@
|
||||
;; Resume (not running -> running)
|
||||
(let [[m1 c1] (update-fn {:seconds 5 :running false} [:key {:char \space}])]
|
||||
(is (true? (:running m1)))
|
||||
(is (= [:tick 1000] c1))))))
|
||||
(is (fn? c1))))))
|
||||
|
||||
(deftest timer-reset-test
|
||||
(testing "timer reset restores initial state"
|
||||
(let [update-fn (fn [model msg]
|
||||
(if (tui/key= msg "r")
|
||||
[(assoc model :seconds 10 :done false :running true)
|
||||
(tui/tick 1000)]
|
||||
(tui/after 1000 :timer-tick)]
|
||||
[model nil]))]
|
||||
|
||||
(let [[m1 c1] (update-fn {:seconds 0 :done true :running false} [:key {:char \r}])]
|
||||
(is (= 10 (:seconds m1)))
|
||||
(is (false? (:done m1)))
|
||||
(is (true? (:running m1)))
|
||||
(is (= [:tick 1000] c1))))))
|
||||
(is (fn? c1))))))
|
||||
|
||||
(deftest timer-view-color-logic-test
|
||||
(testing "timer view shows correct colors"
|
||||
@@ -240,19 +240,19 @@
|
||||
(deftest spinner-tick-advances-frame-test
|
||||
(testing "spinner tick advances frame when loading"
|
||||
(let [update-fn (fn [model msg]
|
||||
(if (= (first msg) :tick)
|
||||
(if (= msg :spinner-frame)
|
||||
(if (:loading model)
|
||||
[(update model :frame inc) (tui/tick 80)]
|
||||
[(update model :frame inc) (tui/after 80 :spinner-frame)]
|
||||
[model nil])
|
||||
[model nil]))]
|
||||
|
||||
;; Tick advances frame when loading
|
||||
(let [[m1 c1] (update-fn {:frame 0 :loading true} [:tick 123])]
|
||||
(let [[m1 c1] (update-fn {:frame 0 :loading true} :spinner-frame)]
|
||||
(is (= 1 (:frame m1)))
|
||||
(is (= [:tick 80] c1)))
|
||||
(is (fn? c1)))
|
||||
|
||||
;; Tick does nothing when not loading
|
||||
(let [[m1 c1] (update-fn {:frame 5 :loading false} [:tick 123])]
|
||||
(let [[m1 c1] (update-fn {:frame 5 :loading false} :spinner-frame)]
|
||||
(is (= 5 (:frame m1)))
|
||||
(is (nil? c1))))))
|
||||
|
||||
@@ -293,14 +293,14 @@
|
||||
(let [update-fn (fn [model msg]
|
||||
(if (tui/key= msg "r")
|
||||
[(assoc model :loading true :frame 0 :message "Loading...")
|
||||
(tui/tick 80)]
|
||||
(tui/after 80 :spinner-frame)]
|
||||
[model nil]))]
|
||||
|
||||
(let [[m1 c1] (update-fn {:loading false :frame 100 :message "Done!"} [:key {:char \r}])]
|
||||
(is (true? (:loading m1)))
|
||||
(is (= 0 (:frame m1)))
|
||||
(is (= "Loading..." (:message m1)))
|
||||
(is (= [:tick 80] c1))))))
|
||||
(is (fn? c1))))))
|
||||
|
||||
;; =============================================================================
|
||||
;; LIST SELECTION EXAMPLE TESTS
|
||||
|
||||
Reference in New Issue
Block a user