packages feed

NGLess-1.4.0: Tests-Src/Tests/LoadFQDirectory.hs

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
module Tests.LoadFQDirectory
    ( tgroup_LoadFQDirectory
    ) where

import Test.Tasty.TH
import Test.Tasty.HUnit

import Control.Monad (forM_)

import BuiltinModules.LoadDirectory (matchUp)
import Tests.Utils

tgroup_LoadFQDirectory = $(testGroupGenerator)

case_error_p1 = isError (matchUp ["sample/sample.pair.1.fq.bz2"])
case_error_p2 = isError (matchUp ["sample/sample.pair.2.fq.bz2"])

case_known_cases = forM_ known_cases check1

check1 expected@(s, p) = do
    let extract (Left (a,b)) = [a,b]
        extract (Right (a,b,c)) = [a,b,c]
        fqs = s ++ concatMap extract p
    fromRight (matchUp fqs) @?= expected

known_cases = 
    --  Simple with ".single"
    [ ([], [Right ("sample/sample.pair.1.fq", "sample/sample.pair.2.fq", "sample/sample.single.fq")])

    -- basic uncompressed
    , (["sample/uncompressed.fq"], [])

    -- basic compressed I
    , (["sample/sample.fq.gz"], [])

    -- basic compressed II
    , (["sample/sample.fq.bz2"], [])

    -- Paired using "_[12].fastq"
    , ([], [Left ("sample/sample_1.fastq.gz","sample/sample_2.fastq.gz")])

    -- paired+singles compressed
    , ([], [Right ("sample/sample.pair.1.fq.gz", "sample/sample.pair.2.fq.gz", "sample/sample.single.fq.gz")])

    -- paired+singles compressed II (bz2 + deeper directory)
    , ([], [Right ("mocat_sample_bz2_paired/sample/sample.pair.1.fq.bz2", "mocat_sample_bz2_paired/sample/sample.pair.2.fq.bz2", "mocat_sample_bz2_paired/sample/sample.single.fq.bz2")])

    -- _[FR] pairing+single
    -- Arguably, the pairing is not the expected one, but this was what was done before
    , (["sample/sample.single.fq.gz"], [Left ("sample/sample.pair_F.fq.gz", "sample/sample.pair_R.fq.gz")])

    -- mixed
    , (["sample/sampleC.single.fq.bz2"],
            [Left  ("sample/sampleB.pair.1.fq.bz2", "sample/sampleB.pair.2.fq.bz2")
            ,Right ("sample/sampleA.pair.1.fq.bz2", "sample/sampleA.pair.2.fq.bz2", "sample/sampleA.single.fq.bz2")])
    ]