packages feed

palindromes-1.0: tests/UTFinders.hs

{- This program has been developed by students from the bachelor Computer Science at Utrecht
University within the Software Project course.

© Copyright Utrecht University (Department of Information and Computing Sciences) and Johan Jeuring -}

module UTFinders (testListFinders) where

import Test.HUnit (Test (..), (~:), (~?=))

import Data.Algorithms.Palindromes.Finders
    ( Algorithm (AlgQuadratic)
    , Variant (VarDNA, VarPlain, VarText, VarWord)
    , findPalindromes
    )
import Data.Algorithms.Palindromes.Palindrome
    ( Palindrome (..)
    )

testListFinders =
    [ testFinderPlain
    , testFinderText
    , testFinderWord
    , testFinderDNA
    , testFinderDNA
    ]

testFinderPlain =
    "testFinderPlain"
        ~: findPalindromes VarPlain (AlgQuadratic 0 0) 1 "aba"
        ~?= [ ( Palindrome
                    { palRange = (0, 1)
                    , palText = "a"
                    , palRangeInText = (0, 1)
                    }
              )
            , ( Palindrome
                    { palRange = (0, 3)
                    , palText = "aba"
                    , palRangeInText = (0, 3)
                    }
              )
            , ( Palindrome
                    { palRange = (2, 3)
                    , palText = "a"
                    , palRangeInText = (2, 3)
                    }
              )
            ]

testFinderText =
    "testFinderText"
        ~: findPalindromes VarText (AlgQuadratic 0 0) 1 "ab'A"
        ~?= [ ( Palindrome
                    { palRange = (0, 1)
                    , palText = "a"
                    , palRangeInText = (0, 1)
                    }
              )
            , ( Palindrome
                    { palRange = (0, 3)
                    , palText = "ab'A"
                    , palRangeInText = (0, 4)
                    }
              )
            , ( Palindrome
                    { palRange = (2, 3)
                    , palText = "A"
                    , palRangeInText = (3, 4)
                    }
              )
            ]

testFinderWord =
    "testFinderWord"
        ~: findPalindromes VarWord (AlgQuadratic 0 0) 1 "aba' bbb\n aba"
        ~?= [ ( Palindrome
                    { palRange = (0, 1)
                    , palText = "aba"
                    , palRangeInText = (0, 3)
                    }
              )
            , ( Palindrome
                    { palRange = (0, 3)
                    , palText = "aba' bbb\n aba"
                    , palRangeInText = (0, 13)
                    }
              )
            , ( Palindrome
                    { palRange = (2, 3)
                    , palText = "aba"
                    , palRangeInText = (10, 13)
                    }
              )
            ]

testFinderDNA =
    "testFinderDNA"
        ~: findPalindromes VarDNA (AlgQuadratic 0 0) 1 "ATA"
        ~?= [ ( Palindrome
                    { palRange = (0, 2)
                    , palText = "AT"
                    , palRangeInText = (0, 2)
                    }
              )
            , ( Palindrome
                    { palRange = (1, 3)
                    , palText = "TA"
                    , palRangeInText = (1, 3)
                    }
              )
            ]