time-1.16: test/main/Test/Calendar/AddDays.hs
module Test.Calendar.AddDays (
addDaysTest,
) where
import Data.Time.Calendar
import Test.Calendar.AddDaysRef
import Test.Tasty
import Test.Tasty.HUnit
days :: [Day]
days =
[ fromGregorian 2005 2 28
, fromGregorian 2004 2 29
, fromGregorian 2004 1 31
, fromGregorian 2004 12 31
, fromGregorian 2005 7 1
, fromGregorian 2005 4 21
, fromGregorian 2005 6 30
]
increments :: [Integer]
increments = [-10, -4, -1, 0, 1, 7, 83]
adders :: [(String, Integer -> Day -> Day)]
adders =
[ ("day", addDays)
, ("month (clip)", addGregorianMonthsClip)
, ("month (roll over)", addGregorianMonthsRollOver)
, ("year (clip)", addGregorianYearsClip)
, ("year (roll over)", addGregorianYearsRollOver)
]
resultDays :: [String]
resultDays = do
(aname, adder) <- adders
increment <- increments
day <- days
return
( (showGregorian day)
++ " + "
++ (show increment)
++ " * "
++ aname
++ " = "
++ showGregorian (adder increment day)
)
addDaysTest :: TestTree
addDaysTest = testCase "addDays" $ assertEqual "" addDaysRef $ unlines resultDays