elynx-seq-0.2.1: test/ELynx/Import/Sequence/FastaSpec.hs
{- |
Module : ELynx.Import.Sequence.FastaSpec
Copyright : (c) Dominik Schrempf 2020
License : GPL-3.0-or-later
Maintainer : dominik.schrempf@gmail.com
Stability : unstable
Portability : portable
Creation date: Fri Jan 18 09:54:38 2019.
-}
module ELynx.Import.Sequence.FastaSpec
( spec
)
where
import Data.Either
import Test.Hspec
import ELynx.Data.Alphabet.Alphabet
import qualified ELynx.Data.Sequence.Alignment as M
import ELynx.Import.Sequence.Fasta
import ELynx.Tools
fastaNucleotideFN :: FilePath
fastaNucleotideFN = "data/Nucleotide.fasta"
fastaNucleotideIUPACFN :: FilePath
fastaNucleotideIUPACFN = "data/NucleotideIUPAC.fasta"
fastaErroneousFN :: FilePath
fastaErroneousFN = "data/Erroneous.fasta"
fastaAminoAcidFN :: FilePath
fastaAminoAcidFN = "data/AminoAcid.fasta"
spec :: Spec
spec = describe "fastaFileAlignment" $ do
it "parses a fasta file with nucleotide sequences with equal length" $ do
a <-
either error id
. M.fromSequences
<$> parseFileWith (fasta DNA) fastaNucleotideFN
M.nSequences a `shouldBe` 3
M.length a `shouldBe` 40
it "parses a fasta file with nucleotide IUPAC sequences with equal length"
$ do
a <-
either error id
. M.fromSequences
<$> parseFileWith (fasta DNAI) fastaNucleotideIUPACFN
M.nSequences a `shouldBe` 3
M.length a `shouldBe` 40
it "should not parse erroneous files" $ do
ea <- runParserOnFile (fasta DNAI) fastaErroneousFN
ea `shouldSatisfy` isLeft
it "parses a fasta file with amino acid sequences with equal length" $ do
a <-
either error id
. M.fromSequences
<$> parseFileWith (fasta Protein) fastaAminoAcidFN
M.nSequences a `shouldBe` 2
M.length a `shouldBe` 237
it "should not parse erroneous files" $ do
a <- runParserOnFile (fasta ProteinI) fastaErroneousFN
a `shouldSatisfy` isLeft