packages feed

bioinformatics-toolkit-0.10.0: tests/Tests/Fastq.hs

{-# 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]