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