hscdio-0.1.0.0: test/Test/Libcdio/Upstream/Foreign/Pregap.hs
{-|
Description:
Copyright: (c) 2019-2020 Sam May
License: GPL-3.0-or-later
Maintainer: ag@eitilt.life
Stability: experimental
Portability: portable
-}
module Test.Libcdio.Upstream.Foreign.Pregap
( tests
, gaps
) where
import qualified Test.HUnit as U
import Test.HUnit ( (@=?), (~:) )
import qualified Control.Monad as M
import qualified System.Directory as D
import Foreign.Libcdio.Device
import Foreign.Libcdio.Track
import Foreign.Libcdio.Types
import Test.Libcdio.Upstream.Foreign.Common
tests :: U.Test
tests = "Foreign.Libcdio.Test.Pregap" ~: map ((\f (a,b,c)->f a b c) checkGap) gaps
gaps :: [(DriverId, FilePath, [(Track, Maybe Lsn)])]
gaps =
[ (DriverCdrDao, "t2.toc", [(1, Just 4425), (2, Nothing)])
, (DriverBinCue, "p1.cue", [(1, Just 0), (2, Just 150), (3, Nothing)])
] ++
[ (DriverNrg, "p1.nrg", [(2, Just 225), (3, Nothing)])
| haveDriver DriverNrg
]
checkGap :: DriverId -> FilePath -> [(Track, Maybe Lsn)] -> U.Assertion
checkGap d s gs
| haveDriver d = do
c <- D.withCurrentDirectory dataDir $ cdioOpen (Just s) d
cdio <- case c of
Nothing -> U.assertFailure $ "Can't open the disc image '" ++ s ++ "'"
Just c' -> return c'
M.forM_ gs $ \(t, g) -> do
p <- pregapLsn cdio t
g @=? p
| otherwise = return ()