hscdio-0.1.0.0: test/Foreign/Libcdio/Device/Test/Classes.hs
{-|
Description:
Copyright: (c) 2019-2021 Sam May
License: GPL-3.0-or-later
Maintainer: ag@eitilt.life
Stability: experimental
Portability: portable
-}
module Foreign.Libcdio.Device.Test.Classes
( laws
, genDriveCapabilityRead
, genDriveCapabilityWrite
, genDriveCapabilityMisc
, genHardwareInfo
, genDriverId
, genDriverReturnCode
, genSessionArg
, genAccessMode
) where
import qualified Hedgehog as H
import qualified Hedgehog.Gen as H.G
import qualified Hedgehog.Range as H.R
import qualified Hedgehog.Classes as H.C
import Foreign.Libcdio.Device
import Test.Libcdio.Property.Common
laws :: [LawsGroup]
laws =
[ ("DriveCapabilityRead", map (\f -> f genDriveCapabilityRead)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
]
), ("DriveCapabilityWrite", map (\f -> f genDriveCapabilityWrite)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
]
), ("DriveCapabilityMisc", map (\f -> f genDriveCapabilityMisc)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
]
), ("HardwareInfo", map (\f -> f genHardwareInfo)
[ H.C.eqLaws
, H.C.showLaws
, H.C.showReadLaws
, storableLaws'
]
), ("DriverId", map (\f -> f genDriverId)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
]
), ("DriverReturnCode", map (\f -> f genDriverReturnCode)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
]
), ("SessionArg", map (\f -> f genSessionArg)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
, storableLaws'
]
), ("AccessMode", map (\f -> f genAccessMode)
[ H.C.eqLaws
, ordLaws'
, H.C.showLaws
, H.C.showReadLaws
, H.C.boundedEnumLaws
, storableLaws'
]
)]
genDriveCapabilityRead :: H.Gen DriveCapabilityRead
genDriveCapabilityRead = enumSparse
genDriveCapabilityWrite :: H.Gen DriveCapabilityWrite
genDriveCapabilityWrite = enumSparse
genDriveCapabilityMisc :: H.Gen DriveCapabilityMisc
genDriveCapabilityMisc = enumSparse
genHardwareInfo :: H.Gen HardwareInfo
genHardwareInfo = do
--TODO: Test other string lengths
v <- H.G.string (H.R.singleton $ fromIntegral vendorLength) H.G.ascii
m <- H.G.string (H.R.singleton $ fromIntegral modelLength) H.G.ascii
r <- H.G.string (H.R.singleton $ fromIntegral revisionLength) H.G.ascii
return $ HardwareInfo
{ vendor = v
, model = m
, revision = r
}
genDriverId :: H.Gen DriverId
genDriverId = enumSparse
genDriverReturnCode :: H.Gen DriverReturnCode
genDriverReturnCode = enumSparse
genSessionArg :: H.Gen SessionArg
genSessionArg = H.G.enumBounded
genAccessMode :: H.Gen AccessMode
genAccessMode = H.G.enumBounded