packages feed

haskell-ffprobe-0.1.0.1: test/FFProbe/TestFFProbe.hs

module FFProbe.TestFFProbe (specs) where

import FFProbe
import FFProbe.Data.Chapter
import FFProbe.Data.Stream
import Test.Hspec
import Utils (shouldBeRight)

specs :: Spec
specs = describe "Running ffprobe" $ do
    it "Should Run ffprobe and give the correct values" $ do
        res <- ffprobe "test/assets/test.mp4"
        shouldBeRight
            res
            ( \ffprobeData -> do
                -- Testing streams
                length (streams ffprobeData) `shouldBe` 3
                let videoStream = filter isVideoStream (streams ffprobeData)
                length videoStream `shouldBe` 1
                let audioStream = filter isAudioStream (streams ffprobeData)
                length audioStream `shouldBe` 1
                -- Testing Chapters
                length (chapters ffprobeData) `shouldBe` 3
                title (head (chapters ffprobeData)) `shouldBe` Just "Start"
                title (chapters ffprobeData !! 1) `shouldBe` Just "Middle"
                title (chapters ffprobeData !! 2) `shouldBe` Just "End"
            )
    it "Should Succeed at parsing unicode characters" $ do
        res <- ffprobe "test/assets/test-unicode.mp4"
        shouldBeRight
            res
            ( \ffprobeData -> do
                title (head (chapters ffprobeData)) `shouldBe` Just "Début"
            )