HsHTSLib-1.3.2.4: tests/Main.hs
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE FlexibleContexts #-}
import Test.Tasty
import Test.Tasty.Golden
import Conduit
import Control.Monad.Reader
import Bio.HTS
import Bio.HTS.Types
main :: IO ()
main = defaultMain $ testGroup "Main"
[ tests ]
tests :: TestTree
tests = goldenVsFile "BAM Read/Write Test" expect output $
bamFileToSamFile input output
where
input = "tests/data/example.bam"
output = "tests/data/output.sam"
expect = "tests/data/example.sam"
bamFileToSamFile :: FilePath -- ^ Input bam file
-> FilePath -- ^ Output Sam file
-> IO ()
bamFileToSamFile input output = withBamFile input $ \fl ->
runConduit $ readBam fl .| mapMC f .| unlinesAsciiC .| sinkFile output
where
f bam = do
lift ask >>= \case
BamHeader hdr -> return $ showSam $ bamToSam hdr bam