{-# LANGUAGE OverloadedStrings #-}
module Tests.Fastq (tests) where
import Bio.Data.Fastq
import Data.Conduit.Zlib (ungzip, multiple, gzip)
import qualified Data.ByteString.Char8 as B
import qualified Data.ByteString.Lazy.Char8 as BL
import Lens.Micro
import Conduit
import Test.Tasty
import Test.Tasty.Golden
import Test.Tasty.HUnit
import qualified Data.HashMap.Strict as M
import Data.Ord
import Data.Maybe
tests :: TestTree
tests = testGroup "Test: Bio.Data.Fastq"
[ testCase "FASTQ IO" fastqIO
]
fastqIO :: Assertion
fastqIO = do
a <- fmap B.concat $ runResourceT $ runConduit $
sourceFile "tests/data/test.fastq.gz" .| multiple ungzip .| sinkList
b <- fmap B.concat $ runResourceT $ runConduit $
sourceFile "tests/data/test_wrap.fastq.gz" .| multiple ungzip .| sinkList
let fq1 = B.concat $ replicate 1000 a
fq2 = B.concat $ replicate 1000 b
r1 = B.concat $ runIdentity $ runConduit $ yield fq1 .|
parseFastqC .| mapC fastqToByteString .| unlinesAsciiC .| sinkList
r2 = B.concat $ runIdentity $ runConduit $ yield fq2 .|
parseFastqC .| mapC fastqToByteString .| unlinesAsciiC .| sinkList
[True, True] @=? [r1 == fq1, r2 == fq1]