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")])
]