packages feed

hscdio-0.1.0.0: test/Foreign/Libcdio/Track/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.Track.Test.Classes
    ( laws
    , genTrack
    , genTrackNum
    , genTrackFormat
    ) where


import qualified Hedgehog as H
import qualified Hedgehog.Gen as H.G
import qualified Hedgehog.Classes as H.C

import Foreign.Libcdio.Track

import Test.Libcdio.Property.Common


laws :: [LawsGroup]
laws =
    [ ("Track", map (\f -> f genTrack)
        [ H.C.eqLaws
        , ordLaws'
        , H.C.showLaws
        , H.C.showReadLaws
        , H.C.boundedEnumLaws
        , storableLaws'
        ]
    ), ("TrackNum", map (\f -> f genTrackNum)
        [ H.C.eqLaws
        , ordLaws'
        , H.C.showLaws
        , H.C.showReadLaws
        ]
    ), ("TrackFormat", map (\f -> f genTrackFormat)
        [ H.C.eqLaws
        , ordLaws'
        , H.C.showLaws
        , H.C.showReadLaws
        , H.C.boundedEnumLaws
        ]
    )]


genTrack :: H.Gen Track
genTrack = H.G.enumBounded

genTrackNum :: H.Gen TrackNum
genTrackNum = do
    Track t <- H.G.enum minTrack maxTrack
    return t

genTrackFormat :: H.Gen TrackFormat
genTrackFormat = H.G.enumBounded