time-1.10: 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