hscdio-0.1.0.0: test/Test/Libcdio/Property.hs
{-|
Description:
Copyright: (c) 2019-2021 Sam May
License: GPL-3.0-or-later
Maintainer: ag@eitilt.life
Stability: experimental
Portability: non-portable (requires "GHC.IO.Encoding")
-}
module Main where
import qualified Data.Bool as B
import qualified GHC.IO.Encoding as GIO
import qualified Hedgehog as H
import qualified Hedgehog.Classes as H.C
import qualified System.Exit as E
import qualified System.IO as IO
import qualified Data.Text.Encoding.MsJIS.Test.Classes as MsJIS
import qualified Foreign.Libcdio.CdText.Test.Classes as CdText
import qualified Foreign.Libcdio.CdTypes.Test.Classes as CdTypes
import qualified Foreign.Libcdio.Device.Test.Classes as Device
import qualified Foreign.Libcdio.Disc.Test.Classes as Disc
import qualified Foreign.Libcdio.Logging.Test.Classes as Logging
import qualified Foreign.Libcdio.Read.Test.Classes as Read
import qualified Foreign.Libcdio.Sector.Test.Classes as Sector
import qualified Foreign.Libcdio.Track.Test.Classes as Track
import qualified Foreign.Libcdio.Util.Test.Classes as Util
import qualified Sound.Libcdio.Cdio.Test.Classes as S.Cdio
import qualified Sound.Libcdio.CdText.Test.Classes as S.CdText
import qualified Foreign.Libcdio.Logging.Test.Property as Logging
import Test.Libcdio.Property.Common
laws :: [LawsGroup]
laws = concat
[ MsJIS.laws
, CdText.laws
, CdTypes.laws
, Device.laws
, Disc.laws
, Logging.laws
, Read.laws
, Sector.laws
, Track.laws
, Util.laws
, S.Cdio.laws
, S.CdText.laws
]
parallelProperties :: [H.Group]
parallelProperties =
[
]
sequentialProperties :: [H.Group]
sequentialProperties =
[ Logging.properties
]
main :: IO ()
main = do
GIO.setLocaleEncoding IO.utf8
lawsResult <- H.C.lawsCheckMany laws
parallelResults <- mapM H.checkParallel parallelProperties
sequentialResults <- mapM H.checkSequential sequentialProperties
B.bool E.exitFailure E.exitSuccess . and $
lawsResult : parallelResults ++ sequentialResults