hscdio-0.1.0.0: test/Test/Libcdio/Upstream/Sound/Track.hs
{-|
Description:
Copyright: (c) 2020 Sam May
License: GPL-3.0-or-later
Maintainer: ag@eitilt.life
Stability: experimental
Portability: portable
-}
module Test.Libcdio.Upstream.Sound.Track (tests) where
import qualified Test.HUnit as U
import Test.HUnit ( (@?), (@=?), (~:) )
import qualified Control.Monad as M
import qualified Data.Maybe as Y
import Sound.Libcdio.Track
import Test.Libcdio.Upstream.Sound.Common
import qualified Test.Libcdio.Upstream.Foreign.Pregap as Foreign
tests :: U.Test
tests = "Sound.Libcdio.Test.Track" ~: U.TestList
[ gaps
, address
]
gaps :: U.Test
gaps = "Pregap lengths" ~: U.TestList $ map (\(_,b,c) -> checkGap b c) Foreign.gaps
where checkGap f gs = testCdio [f] . const . M.forM gs $ \(t, g) -> do
p <- pregap t
return $ g @=? p
address :: U.Test
address = "Sector addressing" ~: testCdio ["cdda.cue"] . const $ do
t <- trackAt 1000
let t' = Y.isNothing t @? "Overlarge addresses aren't caught"
ts <- mapM trackAt $ 301 : [0..9]
let ts' = mapM_ (Just 1 @=?) ts
l <- trackAt 302
let l' = Just DiscLeadout @=? l
return [t', ts', l']