packages feed

hscdio-0.1.0.0: test/Test/Libcdio/Upstream/Foreign/CdrDao.hs

{-|
Description:    

Copyright:      (c) 2019-2021 Sam May
License:        GPL-3.0-or-later
Maintainer:     ag@eitilt.life

Stability:      experimental
Portability:    portable
-}
module Test.Libcdio.Upstream.Foreign.CdrDao
    ( tests
    , goodToc
    , badToc
    ) where


import qualified Test.HUnit as U
import Test.HUnit ( (@?), (~:) )

import qualified System.Directory as D

import Foreign.Libcdio.Device

import Test.Libcdio.Upstream.Foreign.Common


tests :: U.Test
tests = "Foreign.Libcdio.Test.CdrDao" ~: U.TestList
    [ parse
    , open
    ]


parse :: U.Test
parse = "Distinguish valid and invalid TOC files" ~: U.TestList
    (map good goodToc ++ map bad badToc)
  where good = tocTest id "is not recognized as a TOC file"
        bad = tocTest not "should not be recognized as a TOC file"
        tocTest t s f = U.TestCase . D.withCurrentDirectory dataDir $ fmap t (isToc f) @? "'" ++ f ++ "' " ++ s

goodToc :: [FilePath]
goodToc =
    [ "cdtext.toc"
    , "t1.toc"
    , "t2.toc"
    , "t3.toc"
    , "t4.toc"
    , "t5.toc"
    , "t6.toc"
    , "t7.toc"
    , "t8.toc"
    , "t9.toc"
    , "t10.toc"
    , "data1.toc"
    , "data2.toc"
    , "data5.toc"
    , "data6.toc"
    , "data7.toc"
    , "vcd2.toc"
    ]

badToc :: [FilePath]
badToc =
    [ "bad-cat1.toc"
    , "bad-cat2.toc"
    , "bad-cat3.toc"
    , "bad-file.toc"
    , "bad-mode1.toc"
    , "bad-msf-1.toc"
    , "bad-msf-2.toc"
    , "bad-msf-3.toc"
    ]


open :: U.Test
open = "TOC files open the associated device correctly" ~: U.TestCase $ do
    c <- cdioOpen (Just $ dataFile "cdtext.toc") DriverUnknown
    cdio <- case c of
        Nothing -> U.assertFailure "Can't open the TOC file"
        Just c' -> return c'
    
    checkMmc cdio $ Just False
    checkAccessMode cdio [Image]
    checkSource cdio [dataFile "cdtext.toc"]