{-| 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