packages feed

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

{-|
Description:    

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

Stability:      experimental
Portability:    portable
-}
module Test.Libcdio.Upstream.Foreign.Track (tests) where


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

import qualified Data.Maybe as Y

import Foreign.Libcdio.Device
import Foreign.Libcdio.Track

import Test.Libcdio.Upstream.Foreign.Common


tests :: U.Test
tests = "Foreign.Libcdio.Test.Track" ~: U.TestList
    [ open
    ]

open :: U.Test
open = "Track accessing works correctly" ~: U.TestCase $ do
    c <- cdioOpen (Just . dataFile $ "cdda.cue") DriverUnknown
    cdio <- case c of
        Nothing -> U.assertFailure "Can't open the image file"
        Just c' -> return c'
    
    t <- trackAt cdio 1000
    Y.isNothing t @? "Overlarge addresses aren't caught"
    
    ts <- mapM (trackAt cdio) $ 301 : [0..9]
    mapM_ (Just 1 @=?) ts
    
    l <- trackAt cdio 302
    Just DiscLeadout @=? l