sequence-formats-1.6.6.0: test/SequenceFormats/FastaSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module SequenceFormats.FastaSpec (spec) where
import qualified Data.ByteString.Char8 as BS
import qualified Pipes.Prelude as P
import SequenceFormats.Fasta (loadFastaChrom)
import SequenceFormats.Utils (Chrom (..))
import System.IO (IOMode (..), withFile)
import Test.Hspec
spec :: Spec
spec = do
testLoadFastaChrom
testLoadFastaChrom :: Spec
testLoadFastaChrom = around (withFile "testDat/example.fasta" ReadMode) $
describe "loadFastaChrom" $
do
fastaSpec "short chrom" "chr1"
"ACGACGACGACGGGGTTTAAAAAGGGTTTCCTCTCTCTCTGGG"
fastaSpec "short chrom with junk after it" "chr2"
"ACCAATTTCCCTTTAATATAAGACCCTTTCGGGGAAA"
fastaSpec "long chrom" "chr4_random"
"TTGAGAAAGAAATAATAATTTTATATAATTTAAAGGTTATTTAA"
fastaSpec "long chrom with junk after it" "chr5_random"
"AAAACTGAAAAAATGTGGTCACCTATGTTAGAACAACAAGGTTT"
where
fastaSpec desc chr testseq = it (fmtDesc desc) $ \h -> do
fastaProd <- loadFastaChrom h (Chrom chr)
fastaString <- BS.unpack . BS.concat <$> P.toListM fastaProd
fastaString `shouldBe` testseq
fmtDesc s = "should read the correct fasta string from file (" ++ s ++ ")"