packages feed

NGLess-1.5.0: Tests-Src/Tests/Samples.hs

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}

{- Copyright 2022 NGLess Authors
 - License: MIT
 -}
module Tests.Samples
    ( tgroup_Samples
    ) where

import Test.Tasty.TH
import Test.Tasty.HUnit
import qualified Data.ByteString as B
import qualified Data.Text as T
import           Control.Monad.IO.Class (liftIO)

import Data.FastQ
import BuiltinModules.Samples
import Language
import Utils.Here
import Tests.Utils (asTempFile, testNGLessIO)

simpleYaml :: B.ByteString
simpleYaml = [here|
samples:
  sample1:
    - paired:
        - sample/sample1a.1.fq.gz
        - sample/sample1a.2.fq.gz
  sample2:
    - paired:
        - sample/sample2a.1.fq.gz
        - sample/sample2a.2.fq.gz
|]

yamlWithBasedir :: B.ByteString
yamlWithBasedir = [here|
basedir: /share/metagenomes
samples:
  sample1:
    - paired:
        - sample/sample1a.1.fq.gz
        - sample/sample1a.2.fq.gz
  sample2:
    - paired:
        - /share/data/sample/sample2a.1.fq.gz
        - /share/data/sample/sample2a.2.fq.gz
|]

tgroup_Samples = $(testGroupGenerator)

getSampleName (NGOReadSet name _) = name

case_load_samples :: Assertion
case_load_samples = testNGLessIO $ do
    simpleYamlF <- asTempFile simpleYaml "yaml"
    NGOList samples <- executeLoadSampleList (NGOString $ T.pack simpleYamlF) []
    liftIO $ length samples @?= 2
    liftIO $ (getSampleName $ head samples) @?= "sample1"
    liftIO $ (getSampleName $ last samples) @?= "sample2"
    NGOReadSet n _ <- executeLoadSample (NGOString $ T.pack simpleYamlF) [("sample", NGOString "sample1")]
    liftIO $ n @?= "sample1"


case_basedir :: Assertion
case_basedir = do
    NGOList samples <- testNGLessIO $ do
        simpleYamlF <- asTempFile yamlWithBasedir "yaml"
        executeLoadSampleList (NGOString $ T.pack simpleYamlF) []
    let getSamplePaths (NGOReadSet _ (ReadSet [
                                        (FastQFilePath _ p1
                                        ,FastQFilePath _ p2)]
                                        [])) = (p1, p2)
        getSamplePaths _ = error "should not occur"
    length samples @?= 2
    getSamplePaths (head samples) @?= (
                    "/share/metagenomes/sample/sample1a.1.fq.gz",
                    "/share/metagenomes/sample/sample1a.2.fq.gz")
    getSamplePaths (last samples) @?= (
                    "/share/data/sample/sample2a.1.fq.gz",
                    "/share/data/sample/sample2a.2.fq.gz")