robin-hood-profit-0.0.2: test/RobinHood/Test/TargetPeriod.hs
module RobinHood.Test.TargetPeriod where
import Data.Attoparsec.Text (parseOnly)
import RobinHood.TargetPeriod
import RobinHood.Prelude
import Test.Tasty.QuickCheck
prop_monthToQuarter_less_4 :: Positive Int -> Bool
prop_monthToQuarter_less_4 (Positive n) = monthToQuater ((n `mod` 12) + 1) < Quarter 5
prop_monthToQuarter_positive :: Positive Int -> Bool
prop_monthToQuarter_positive (Positive n) = monthToQuater ((n `mod` 12) + 1) > Quarter 0
prop_targetPeriodParser_q_year :: Positive Int -> Positive Int -> Bool
prop_targetPeriodParser_q_year (Positive q) (Positive y) = got == pure expected
where
got = parseOnly targetPeriodParser ("Q" <> show q' <> "/202" <> show y')
expected = QuarterPeriod (fromIntegral $ 2020 + y') (Quarter q')
q' = q `mod` 4 + 1
y' = y `mod` 10