{-| 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 ()