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