Files
purescript-pg/test/Test.Data.Postgres.Interval.purs
2026-01-28 10:13:56 -06:00

38 lines
1.7 KiB
Plaintext

module Test.Data.Postgres.Interval where
import Prelude
import Data.Postgres.Interval as Interval
import Data.Time.Duration (Milliseconds(..))
import Data.Traversable (for_)
import Data.Tuple.Nested (type (/\), (/\))
import Effect.Class (liftEffect)
import Test.Spec (Spec, describe, it)
import Test.Spec.Assertions (shouldEqual)
spec :: Spec Unit
spec =
describe "Data.Postgres.Interval" do
it "parse & toRecord" do
p <- liftEffect $ Interval.parse "3 days 04:05:06"
Interval.toRecord p `shouldEqual` Interval.zero { days = 3, hours = 4, minutes = 5, seconds = 6 }
it "make & toRecord" do
let p = Interval.make $ Interval.zero { days = 3, hours = 4, minutes = 5, seconds = 6 }
Interval.toRecord p `shouldEqual` Interval.zero { days = 3, hours = 4, minutes = 5, seconds = 6 }
describe "fromDuration" do
for_
[ Milliseconds 100.0 /\ Interval.zero { milliseconds = 100.0 }
, Milliseconds 1000.0 /\ Interval.zero { seconds = 1 }
, Milliseconds 1100.0 /\ Interval.zero { seconds = 1, milliseconds = 100.0 }
, Milliseconds 60000.0 /\ Interval.zero { minutes = 1 }
, Milliseconds 61100.0 /\ Interval.zero { minutes = 1, seconds = 1, milliseconds = 100.0 }
, Milliseconds 3600000.0 /\ Interval.zero { hours = 1 }
, Milliseconds 3661100.0 /\ Interval.zero { hours = 1, minutes = 1, seconds = 1, milliseconds = 100.0 }
, Milliseconds 86400000.0 /\ Interval.zero { days = 1 }
, Milliseconds 90061100.0 /\ Interval.zero { days = 1, hours = 1, minutes = 1, seconds = 1, milliseconds = 100.0 }
]
\(i /\ o) -> it ("converts " <> show i) do
Interval.toRecord (Interval.fromDuration i) `shouldEqual` o