hora-2.2.0: test/Test/TestDatePartSmallDoc.hs
module Test.TestDatePartSmallDoc where
import Data.Maybe
import Data.Semigroup hiding (Min)
import Data.Time.Clock
import Data.Time.Hora.Part
import Data.Time.Hora.Format
import Data.Time.Hora.Type
import Data.Word
import Debug.Trace
import Prelude
import Test.Hspec
main::IO()
main = hspec $ do
describe "TestDatePartSmall" $ do
it "day 1" $ do
mkDay 1 1 1 `shouldBe` (Day 1)
it "Modified Julian day" $ do
mkDay 1858 11 17 `shouldBe` (Day julian_day_offset)
it "mkDay" $ do
mkDay 2018 08 16 `shouldBe` (Day 736922)
it "max day" $ do
let d1 = Day (maxBound::Word32)
Just utc2 = toUtc $ d1 <> (Time 0 0)
traceIO $ "max date: " <> (show utc2)
1 `shouldBe` 1
it "round trip DatePartSmall <-> UTCTime <-> DatePart" $ do
let d1 = mkDay 2018 8 16::DatePartSmall
dt1 = d1 <> Time 0 0::DatePartSmall
utc2 = fromJust $ toUtc dt1::UTCTime
dp3 = fromUtc utc2
DatePartSmall d4 _ _ = fromUtc utc2::DatePartSmall
year dp3 `shouldBe` 2018
month dp3 `shouldBe` 8
day dp3 `shouldBe` 16
d4 `shouldBe` 736922
describe "TestDatePartSmall show results" $ do
it "display " $ do
show' (mkDay 2018 8 20 <> mkMin 10 2 <> mkMs 30 9) `shouldBe` "2018-08-20 10:02:30.009"
show' (mkDay 2018 1 1 <> Day' 20) `shouldBe` "2018-01-21"
show' (mkDay 2018 1 1 <> Day' 180) `shouldBe` "2018-06-30"
show' (mkMin 3 15 <> Min' 200) `shouldBe` "06:35"
show' (normalize $ mkMin 14 59 <> mkMs 132 9 <> Ms' 5308) `shouldBe` "15:01:17.317"
show' (mkMs 132 9) `shouldBe` "132.009"
show' (mkMs 132 9 <> Ms' 5300) `shouldBe` "137.309"