packages feed

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