hscdio-0.1.0.0: test/Foreign/Libcdio/Sector/Test/Classes.hs
{-|
Description:
Copyright: (c) 2019 Sam May
License: GPL-3.0-or-later
Maintainer: ag@eitilt.life
Stability: experimental
Portability: portable
-}
module Foreign.Libcdio.Sector.Test.Classes
( laws
, genSubchannelData
, genFlag
, genLba
, genLsn
, genMsf
) where
import qualified Hedgehog as H
import qualified Hedgehog.Gen as H.G
import qualified Hedgehog.Classes as H.C
import qualified Hedgehog.Range as H.R
import Foreign.Libcdio.Sector
import Test.Libcdio.Property.Common
laws :: [LawsGroup]
laws =
[ ("SubchannelData", map (\f -> f genSubchannelData)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
]
), ("Flag", map (\f -> f genFlag)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
]
), ("Lba", map (\f -> f genLba)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
, H.C.bitsLaws
, storableLaws'
]
), ("Integral Lba", [H.C.integralLaws $ nonZero genLba]
), ("Lsn", map (\f -> f genLsn)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
, H.C.bitsLaws
, storableLaws'
]
), ("Integral Lsn", [H.C.integralLaws $ nonZero genLsn]
), ("Msf", map (\f -> f genMsf)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
, storableLaws'
]
)]
genSubchannelData :: H.Gen SubchannelData
genSubchannelData = H.G.enumBounded
genFlag :: H.Gen Flag
genFlag = enumSparse
genLba :: H.Gen Lba
genLba = H.G.integral (H.R.linearBounded :: H.R.Range Lba)
genLsn :: H.Gen Lsn
genLsn = H.G.integral (H.R.linearBounded :: H.R.Range Lsn)
genMsf :: H.Gen Msf
genMsf = H.G.enumBounded