fix total time calculation (#7238)

* fix total time calculation

* Added tests for clock conversion
pull/7198/head^2
Nate McIntosh 2022-11-08 01:25:55 -05:00 committed by GitHub
parent a8a628770c
commit 94d868ca7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 4 deletions

View File

@ -21,12 +21,21 @@
seconds (mod seconds 60)]
(util/format "%02d:%02d:%02d" hours minutes seconds)))
(defn seconds->days:hours:minutes:seconds
(defn s->dhms-util
"A function that returns the values for easier testing.
Always in the order [days, hours, minutes, seconds]"
[seconds]
(let [days (quot (quot seconds 3600) 24)
hours (quot seconds 3600)
minutes (quot (- seconds (* hours 3600)) 60)
seconds (mod seconds 60)]
n (mod seconds (* 24 3600))
hours (quot n 3600)
n (mod n 3600)
minutes (quot n 60)
secs (mod n 60)]
[days hours minutes secs]))
(defn seconds->days:hours:minutes:seconds
[seconds]
(let [[days hours minutes seconds] (s->dhms-util seconds)]
(util/format "%s%s%s%s"
(if (zero? days) "" (str days "d"))
(if (zero? hours) "" (str hours "h"))

View File

@ -0,0 +1,17 @@
(ns frontend.util.clocktime-test
(:require [cljs.test :refer [deftest is]]
[frontend.util.clock :as clock]))
(deftest test-seconds->days:hours:minutes:seconds
(let [inputs [0, 1, 10, 60, 123 ,5432, 63953, 484882, 2394503]
want [[0, 0, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 10],
[0, 0, 1, 0],
[0, 0, 2, 3],
[0, 1, 30, 32],
[0, 17, 45, 53],
[5, 14, 41, 22],
[27, 17, 8, 23]]]
(map #(is (= (clock/s->dhms-util %1) %2)) inputs want)))