packages feed

palindromes-1.0: tests/ITQuadratic.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 ITQuadratic (testListITQuadratic) where

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

import Data.Algorithms.Palindromes.Finders
    ( Algorithm (..)
    , OutputFilter (..)
    , OutputFormat (..)
    , Variant (..)
    , findPalindromesFormatted
    )

testListITQuadratic =
    [ testITQuadratic1
    , testITQuadratic2
    , testITQuadratic3
    , testITQuadratic4
    , testITQuadratic5
    , testITQuadratic6
    , testITQuadratic7
    , testITQuadratic8
    , testITQuadratic9
    , testITQuadratic10
    , testITQuadratic11
    , testITQuadratic12
    , testITQuadratic13
    , testITQuadratic14
    , testITQuadratic15
    , testITQuadratic16
    , testITQuadratic17
    , testITQuadratic18
    , testITQuadratic19
    , testITQuadratic20
    , testITQuadratic21
    , testITQuadratic22
    , testITQuadratic23
    , testITQuadratic24
    , testITQuadratic25
    , testITQuadratic26
    , testITQuadratic27
    , testITQuadratic28
    , testITQuadratic29
    , testITQuadratic30
    , testITQuadratic31
    , testITQuadratic32
    , testITQuadratic33
    , testITQuadratic34
    , testITQuadratic35
    , testITQuadratic36
    , testITQuadratic37
    , testITQuadratic38
    , testITQuadratic39
    , testITQuadratic40
    , testITQuadratic41
    , testITQuadratic42
    , testITQuadratic43
    , testITQuadratic44
    , testITQuadratic45
    , testITQuadratic46
    , testITQuadratic47
    , testITQuadratic48
    , testITQuadratic49
    , testITQuadratic50
    , testITQuadratic51
    , testITQuadratic52
    , testITQuadratic53
    , testITQuadratic54
    , testITQuadratic55
    , testITQuadratic56
    , testITQuadratic57
    , testITQuadratic58
    , testITQuadratic59
    , testITQuadratic60
    , testITQuadratic61
    , testITQuadratic62
    , testITQuadratic63
    , testITQuadratic64
    , testITQuadratic65
    , testITQuadratic66
    , testITQuadratic67
    , testITQuadratic68
    , testITQuadratic69
    , testITQuadratic70
    , testITQuadratic71
    , testITQuadratic72
    , testITQuadratic73
    , testITQuadratic74
    ]

-- String: Contains a gapped palindrome with punctuation
testITQuadratic1 =
    "testITQuadratic1"
        ~: findPalindromesFormatted
            VarDNA
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            0
            "AG\nTC"
        ~?= "[2,2,2]"

-- String: Contains a nested palindrome with punctuation
testITQuadratic2 =
    "testITQuadratic2"
        ~: findPalindromesFormatted
            VarDNA
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            4
            "A&T-AT"
        ~?= "\"A&T-AT\""

-- String: Does not contain a palindrome
testITQuadratic3 =
    "testITQuadratic3"
        ~: findPalindromesFormatted
            VarDNA
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 4, algMaxErrors = 4}
            1
            "AGTC"
        ~?= "[2,4,2]"

-- String: Contains a gapped even palindrome
testITQuadratic4 =
    "testITQuadratic4"
        ~: findPalindromesFormatted
            VarDNA
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 2, algMaxErrors = 0}
            2
            "ACCT"
        ~?= "[2,4,2]"

-- String: Contains an odd-gapped dna palindrome
testITQuadratic5 =
    "testITQuadratic5"
        ~: findPalindromesFormatted
            VarDNA
            FormatText
            SelectAll
            AlgQuadratic{algGapSize = 1, algMaxErrors = 2}
            3
            "“AC\nTA..,TTCT”"
        ~?= "\"AC\nT\"\n\"AC\nTA\"\n\"AC\nTA..,T\"\n\"AC\nTA..,TT\"\n\"C\nTA..,TT\"\n\"AC\nTA..,TTCT\"\n\"C\nTA..,TTCT\"\n\"A..,TTC\"\n\"A..,TTCT\"\n\"TTCT\"\n\"TCT\""

-- String: Contains an even nested palindrome
testITQuadratic6 =
    "testITQuadratic6"
        ~: findPalindromesFormatted
            VarDNA
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            3
            "ATAT"
        ~?= "[4]"

-- String: Contains an even gapped palindrome with punctuation
testITQuadratic7 =
    "testITQuadratic7"
        ~: findPalindromesFormatted
            VarDNA
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 4, algMaxErrors = 4}
            2
            "Ac\nC,T”"
        ~?= "\"Ac\nC,T\""

-- String: Contains an odd gapped palindrome
testITQuadratic8 =
    "testITQuadratic8"
        ~: findPalindromesFormatted
            VarDNA
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 1, algMaxErrors = 2}
            2
            "ACTATTCT"
        ~?= "\"ACTATTCT\""

-- String: Contains an odd gapped palindrome
testITQuadratic9 =
    "testITQuadratic9"
        ~: findPalindromesFormatted
            VarDNA
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 2, algMaxErrors = 0}
            1
            "AGGGT"
        ~?= "[2,2,2,2]"

-- String: Contains an odd gapped palindrome with punctuation
testITQuadratic10 =
    "testITQuadratic10"
        ~: findPalindromesFormatted
            VarDNA
            FormatText
            SelectAll
            AlgQuadratic{algGapSize = 5, algMaxErrors = 5}
            0
            "A;G;G;G;T"
        ~?= "\"\"\n\"A\"\n\"A;G\"\n\"A;G;G\"\n\"A;G;G;G\"\n\"A;G;G;G;T\"\n\"G;G;G;T\"\n\"G;G;T\"\n\"G;T\"\n\"T\"\n\"\""

-- String: Contains a palindrome with punctuation
testITQuadratic11 =
    "testITQuadratic11"
        ~: findPalindromesFormatted
            VarDNA
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            6
            "Ac.G-CgA "
        ~?= "[6]"

-- String: Contains an even palindrome
testITQuadratic12 =
    "testITQuadratic12"
        ~: findPalindromesFormatted
            VarDNA
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            6
            "ACGCGA"
        ~?= "No palindromes found"

-- String: Contains an approximate palindrome
testITQuadratic13 =
    "testITQuadratic13"
        ~: findPalindromesFormatted
            VarPlain
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            4
            "kabral"
        ~?= "\"abra\""

-- String: Contains no palindrome
testITQuadratic14 =
    "testITQuadratic14"
        ~: findPalindromesFormatted
            VarPlain
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 6, algMaxErrors = 6}
            1
            "abcdef"
        ~?= "[1,2,3,4,5,6,5,4,3,2,1]"

-- String: Contains an even palindrome with punctuation
testITQuadratic15 =
    "testITQuadratic15"
        ~: findPalindromesFormatted
            VarPlain
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 1, algMaxErrors = 2}
            3
            "a’b/ba"
        ~?= "[6]"

-- String: Contains an even palindrome
testITQuadratic16 =
    "testITQuadratic16"
        ~: findPalindromesFormatted
            VarPlain
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 2, algMaxErrors = 0}
            0
            "abba"
        ~?= "\"abba\""

-- String: Contains an odd palindrome with punctuation. Contains a special character.
testITQuadratic17 =
    "testITQuadratic17"
        ~: findPalindromesFormatted
            VarPlain
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            3
            "l.e.p’e;l"
        ~?= "[3]"

-- String: Contains an odd palindrome
testITQuadratic18 =
    "testITQuadratic18"
        ~: findPalindromesFormatted
            VarPlain
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 5, algMaxErrors = 5}
            2
            "lepel"
        ~?= "\"lepel\""

-- String: Contains an approximate palindrome with punctuation
testITQuadratic19 =
    "testITQuadratic19"
        ~: findPalindromesFormatted
            VarPlain
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            0
            "kab^ra.L"
        ~?= "[5]"

-- String: Contains no palindrome, contains punctuation
testITQuadratic20 =
    "testITQuadratic20"
        ~: findPalindromesFormatted
            VarPlain
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            0
            "Abc'd/.ef"
        ~?= "\"A\"\n\"b\"\n\"c\"\n\"'\"\n\"d\"\n\"/\"\n\".\"\n\"e\"\n\"f\""

-- String: Contains an odd approximate palindrome, with punctuation
testITQuadratic21 =
    "testITQuadratic21"
        ~: findPalindromesFormatted
            VarPlain
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 10, algMaxErrors = 10}
            2
            "zat.,s&tat"
        ~?= "[2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2]"

-- String: Contains an odd approximate palindrome
testITQuadratic22 =
    "testITQuadratic22"
        ~: findPalindromesFormatted
            VarPlain
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 2, algMaxErrors = 0}
            2
            "zatstat"
        ~?= "[2,2,2,5,2,2,3,2]"

-- String: Contains an even gapped palindrome, with punctuation
testITQuadratic23 =
    "testITQuadratic23"
        ~: findPalindromesFormatted
            VarPlain
            FormatText
            SelectAll
            AlgQuadratic{algGapSize = 1, algMaxErrors = 2}
            5
            "blaA\\Bc..dA;b.l#i"
        ~?= "\"blaA\\\"\n\"laA\\B\"\n\"aA\\Bc\"\n\"A\\Bc.\"\n\"\\Bc..\"\n\"Bc..d\"\n\"Bc..dA\"\n\"c..dA\"\n\"..dA;\"\n\"..dA;b.\"\n\".dA;b.\"\n\"dA;b.\"\n\"A;b.l\"\n\";b.l#\"\n\"b.l#i\""

-- String: Contains an even gapped palindrome
testITQuadratic24 =
    "testITQuadratic24"
        ~: findPalindromesFormatted
            VarPlain
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            1
            "blaABcdBAbli"
        ~?= "[1,1,1,1,1,1,1,1,1,1,1,1]"

-- String: Contains an odd gapped palindrome with punctuation
testITQuadratic25 =
    "testITQuadratic25"
        ~: findPalindromesFormatted
            VarPlain
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 10, algMaxErrors = 10}
            2
            "A-B*cde)BA"
        ~?= "\"A-B*cde)BA\""

-- String: Contains an odd gapped palindrome
testITQuadratic26 =
    "testITQuadratic26"
        ~: findPalindromesFormatted
            VarPlain
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 3, algMaxErrors = 2}
            4
            "ABcdeBA"
        ~?= "\"ABcdeBA\""

-- String: Contains an even palindrome, with punctuation, with special characters
testITQuadratic27 =
    "testITQuadratic27"
        ~: findPalindromesFormatted
            VarPlain
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 2, algMaxErrors = 0}
            3
            "\"blaAPPab’li "
        ~?= "No palindromes found"

-- String: Contains an even palindrome
testITQuadratic28 =
    "testITQuadratic28"
        ~: findPalindromesFormatted
            VarPlain
            FormatText
            SelectAll
            AlgQuadratic{algGapSize = 9, algMaxErrors = 9}
            0
            "blaAPPAbl"
        ~?= "\"\"\n\"b\"\n\"bl\"\n\"bla\"\n\"blaA\"\n\"blaAP\"\n\"blaAPP\"\n\"blaAPPA\"\n\"blaAPPAb\"\n\"blaAPPAbl\"\n\"laAPPAbl\"\n\"aAPPAbl\"\n\"APPAbl\"\n\"PPAbl\"\n\"PAbl\"\n\"Abl\"\n\"bl\"\n\"l\"\n\"\""

-- String: Contains an odd palindrome
testITQuadratic29 =
    "testITQuadratic29"
        ~: findPalindromesFormatted
            VarPlain
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            0
            "blaAPAbli"
        ~?= "[0,1,0,1,0,1,0,1,0,3,0,1,0,1,0,1,0,1,0]"

-- String: Contains an odd palindrome with punctuation
testITQuadratic30 =
    "testITQuadratic30"
        ~: findPalindromesFormatted
            VarPlain
            FormatText
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            4
            "/blaAPa.bl.i"
        ~?= "\"aAPa\"\n\".bl.\""

-- String: Contains an even palindrome with punctuation
testITQuadratic31 =
    "testITQuadratic31"
        ~: findPalindromesFormatted
            VarPunctuation
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 3, algMaxErrors = 2}
            2
            "/abba/"
        ~?= "\"abba\""

-- String: Conains an even gapped palindrome
testITQuadratic32 =
    "testITQuadratic32"
        ~: findPalindromesFormatted
            VarPunctuation
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 2, algMaxErrors = 0}
            1
            "ABcdBA"
        ~?= "[6]"

-- String: Contains an even palindrome with punctuation
testITQuadratic33 =
    "testITQuadratic33"
        ~: findPalindromesFormatted
            VarPunctuation
            FormatText
            SelectAll
            AlgQuadratic{algGapSize = 10, algMaxErrors = 5}
            0
            "bla\\AP.PA.bli"
        ~?= "\"\"\n\"\"\n\"\"\n\"bla\"\n\"\"\n\"bla\\AP\"\n\"\"\n\"bla\\AP.PA\"\n\"AP\"\n\"\"\n\"bla\\AP.PA.bli\"\n\"\"\n\"PA\"\n\"AP.PA.bli\"\n\"\"\n\"PA.bli\"\n\"\"\n\"bli\"\n\"\"\n\"\"\n\"\""

-- String: Contains an odd punctuation palindrome
testITQuadratic34 =
    "testITQuadratic34"
        ~: findPalindromesFormatted
            VarPunctuation
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            3
            "bla(APA)bli"
        ~?= "[3,3,3]"

-- String: Contains an odd punctuation palindrome
testITQuadratic35 =
    "testITQuadratic35"
        ~: findPalindromesFormatted
            VarPunctuation
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            2
            "lepel”"
        ~?= "[5]"

-- String: Contains an odd gapped palindrome with punctuation
testITQuadratic36 =
    "testITQuadratic36"
        ~: findPalindromesFormatted
            VarPunctuation
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            2
            "AB/cde/BA"
        ~?= "No palindromes found"

-- String: Contains an approximate, even palindrome with punctuation
testITQuadratic37 =
    "testITQuadratic37"
        ~: findPalindromesFormatted
            VarPunctuation
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            0
            "(ka(b)ral)"
        ~?= "[3,3]"

-- String: Contains an approximate odd palindrome
testITQuadratic38 =
    "testITQuadratic38"
        ~: findPalindromesFormatted
            VarPunctuation
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            3
            "za.*ts&tat/”"
        ~?= "\"tat\""

-- String: Contains no palindrome, with punctuation
testITQuadratic39 =
    "testITQuadratic39"
        ~: findPalindromesFormatted
            VarText
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 2, algMaxErrors = 0}
            2
            "Abc'd/.ef"
        ~?= "[2,2,2,2,2]"

-- String: Contains no palindrome
testITQuadratic40 =
    "testITQuadratic40"
        ~: findPalindromesFormatted
            VarText
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 6, algMaxErrors = 3}
            5
            "abcdef"
        ~?= "[6]"

-- String: Contains an even palindrome, contains punctuation and special characters
testITQuadratic41 =
    "testITQuadratic41"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            1
            "a’b/ba"
        ~?= "\"a\8217b/ba\""

-- String: Contains an even palindrome
testITQuadratic42 =
    "testITQuadratic42"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            2
            "abba"
        ~?= "\"abba\""

-- String: Contains an odd palindrome, contains punctuations and special characters
testITQuadratic43 =
    "testITQuadratic43"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            2
            "l.e.p’e;l"
        ~?= "\"l.e.p’e;l\""

-- String: Contains an odd palindrome
testITQuadratic44 =
    "testITQuadratic44"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectAll
            AlgQuadratic{algGapSize = 5, algMaxErrors = 2}
            3
            "lepel"
        ~?= "\"lep\"\n\"lepe\"\n\"lepel\"\n\"epel\"\n\"pel\""

-- String: Contains an approximate even palindrome
testITQuadratic45 =
    "testITQuadratic45"
        ~: findPalindromesFormatted
            VarText
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 1, algMaxErrors = 2}
            5
            "kab^ra.L"
        ~?= "[6]"

-- String: Contains an approximate even palindrome
testITQuadratic46 =
    "testITQuadratic46"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 2, algMaxErrors = 0}
            0
            "kabral"
        ~?= "\"abra\""

-- String: Contains an approximate odd palindrome
testITQuadratic47 =
    "testITQuadratic47"
        ~: findPalindromesFormatted
            VarText
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            1
            "zat.,s&tat"
        ~?= "[1,1,1,5,1,3,1]"

-- String: Contains an approximate odd palindrome
testITQuadratic48 =
    "testITQuadratic48"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 7, algMaxErrors = 7}
            2
            "zatstat"
        ~?= "\"zatstat\""

-- String: Contains an even gapped palindrome with punctuation
testITQuadratic49 =
    "testITQuadratic49"
        ~: findPalindromesFormatted
            VarText
            FormatLength
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 1}
            0
            "blaA\\Bc..dA;b.l#i"
        ~?= "[5,5,5]"

-- String: Contains an even gapped palindrome
testITQuadratic50 =
    "testITQuadratic50"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectLongest
            AlgQuadratic{algGapSize = 0, algMaxErrors = 0}
            2
            "blaABcdBAbli"
        ~?= "\"BAb\""

-- String: Contains an odd gapped palindrome
testITQuadratic51 =
    "testITQuadratic51"
        ~: findPalindromesFormatted
            VarText
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 0, algMaxErrors = 8}
            6
            "A-B*cde)BA"
        ~?= "[6,7,6]"

-- String: Contains an odd gapped palindrome
testITQuadratic52 =
    "testITQuadratic52"
        ~: findPalindromesFormatted
            VarText
            FormatLength
            SelectAll
            AlgQuadratic{algGapSize = 3, algMaxErrors = 0}
            2
            "ABcdeBA"
        ~?= "[2,3,2,3,2,7,2,3,2,3,2]"

-- String: Contains an even palindrome with punctuation
testITQuadratic53 =
    "testITQuadratic53"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectAll
            AlgQuadratic{algGapSize = 1, algMaxErrors = 2}
            3
            "\"blaAPPab'li"
        ~?= "\"bla\"\n\"blaA\"\n\"blaAP\"\n\"blaAPP\"\n\"laAPP\"\n\"aAPP\"\n\"laAPPab\"\n\"blaAPPab'li\"\n\"APPab\"\n\"PPab\"\n\"PPab'l\"\n\"Pab'l\"\n\"Pab'li\"\n\"ab'li\"\n\"b'li\""

-- String: Contains an even palindrome
testITQuadratic54 =
    "testITQuadratic54"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectAll
            (AlgQuadratic 0 0)
            1
            "blaAPPAbl"
        ~?= "\"b\"\n\"l\"\n\"a\"\n\"aA\"\n\"A\"\n\"P\"\n\"APPA\"\n\"P\"\n\"A\"\n\"b\"\n\"l\""

-- String: Contains an odd palindrome
testITQuadratic55 =
    "testITQuadratic55"
        ~: findPalindromesFormatted
            VarText
            FormatLength
            SelectLongest
            (AlgQuadratic 9 9)
            4
            "blaAPAbli"
        ~?= "[9]"

-- String: Contains an odd palindrome with punctuation
testITQuadratic56 =
    "testITQuadratic56"
        ~: findPalindromesFormatted
            VarText
            FormatText
            SelectLongest
            (AlgQuadratic 3 2)
            4
            "/blaAPa.bl.i.bl"
        ~?= "\"blaAPa.bl.i\""

-- String: Contains no palindromes, has punctuation
testITQuadratic57 =
    "testITQuadratic57"
        ~: findPalindromesFormatted
            VarWord
            FormatLength
            SelectLongest
            (AlgQuadratic 0 1)
            0
            "aba gdc."
        ~?= "[2]"

-- String: Contains no palindromes
testITQuadratic58 =
    "testITQuadratic58"
        ~: findPalindromesFormatted
            VarWord
            FormatLength
            SelectAll
            (AlgQuadratic 0 0)
            0
            "aba gdc"
        ~?= "[0,1,0,1,0]"

-- String: Contains an even palindrome, has punctuation
testITQuadratic59 =
    "testITQuadratic59"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectAll
            (AlgQuadratic 0 1)
            2
            "Hello. hi hi “hello”"
        ~?= "\"Hello. hi\"\n\"Hello. hi hi\"\n\"Hello. hi hi “hello\"\n\"hi hi “hello\"\n\"hi “hello\""

-- String: Contains an even palindrome
testITQuadratic60 =
    "testITQuadratic60"
        ~: findPalindromesFormatted
            VarWord
            FormatLength
            SelectLongest
            (AlgQuadratic 1 2)
            6
            "hello hi hi hello"
        ~?= "No palindromes found"

-- String: Contains an odd palindrome, contains multiple spaces
testITQuadratic61 =
    "testITQuadratic61"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectAll
            (AlgQuadratic 3 3)
            2
            "bye so    bye?"
        ~?= "\"bye so\"\n\"bye so    bye\"\n\"so    bye\""

-- String: Contains an odd palindrome
testITQuadratic62 =
    "testITQuadratic62"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectLongest
            (AlgQuadratic 0 9)
            3
            "bye so bye"
        ~?= "\"bye so bye\""

-- String: Contains an approximate even palindrome with punctuation
testITQuadratic63 =
    "testITQuadratic63"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectLongest
            (AlgQuadratic 0 2)
            2
            "Fout. Weer. Hi. Hi. Niet. Goed."
        ~?= "\"Fout. Weer. Hi. Hi. Niet. Goed\""

-- String: Contains an approximate even palindrome
testITQuadratic64 =
    "testITQuadratic64"
        ~: findPalindromesFormatted
            VarWord
            FormatLength
            SelectLongest
            (AlgQuadratic 0 1)
            0
            "fout weer hi hi niet goed"
        ~?= "[4]"

-- String: Contains odd approximate palindrome, has punctuation
testITQuadratic65 =
    "testITQuadratic65"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectLongest
            (AlgQuadratic 0 0)
            2
            "Nope / fout / goed / niet / midden / oeps / goed / nee / ook"
        ~?= "No palindromes found"

-- String: Contains odd approximate palindrome
testITQuadratic66 =
    "testITQuadratic66"
        ~: findPalindromesFormatted
            VarWord
            FormatLength
            SelectAll
            (AlgQuadratic 9 9)
            4
            "nope fout goed niet midden oeps goed nee ook"
        ~?= "[4,5,6,7,8,9,8,7,6,5,4]"

-- String: Contains a gapped even palindrome with punctuation
testITQuadratic67 =
    "testITQuadratic67"
        ~: findPalindromesFormatted
            VarWord
            FormatLength
            SelectAll
            (AlgQuadratic 2 0)
            2
            "Doei&& hi ik b(e)n ??? een mens hi doei"
        ~?= "[2,2,2,2,2,2,2]"

-- String: Contains a gapped even palindrome
testITQuadratic68 =
    "testITQuadratic68"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectAll
            (AlgQuadratic 2 1)
            3
            "doei hi ik ben een mens hi doei"
        ~?= "\"doei hi ik\"\n\"doei hi ik ben\"\n\"hi ik ben\"\n\"hi ik ben een\"\n\"ik ben een\"\n\"doei hi ik ben een mens hi doei\"\n\"ben een mens\"\n\"ben een mens hi\"\n\"een mens hi\"\n\"een mens hi doei\"\n\"mens hi doei\""

-- String: Contains a gapped odd palindrome with punctuation
testITQuadratic69 =
    "testITQuadratic69"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectLongest
            (AlgQuadratic 3 1)
            4
            "dag h?i dri/e gap size. ... hi dag"
        ~?= "\"dag h?i dri/e gap size. ... hi dag\""

-- String: Contains a gapped odd palindrome
testITQuadratic70 =
    "testITQuadratic70"
        ~: findPalindromesFormatted
            VarWord
            FormatLength
            SelectLongest
            (AlgQuadratic 3 0)
            2
            "dag hi drie gap size hi dag"
        ~?= "[7]"

-- String: Contains an even palindrome with punctuation
testITQuadratic71 =
    "testITQuadratic71"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectAll
            (AlgQuadratic 6 6)
            0
            ",onzin, .dit pal\n pal dit/ gek"
        ~?= "\"\"\n\"onzin\"\n\"onzin, .dit\"\n\"onzin, .dit pal\"\n\"onzin, .dit pal\n pal\"\n\"onzin, .dit pal\n pal dit\"\n\"onzin, .dit pal\n pal dit/ gek\"\n\"dit pal\n pal dit/ gek\"\n\"pal\n pal dit/ gek\"\n\"pal dit/ gek\"\n\"dit/ gek\"\n\"gek\"\n\"\""

-- String: Contains an even palindrome
testITQuadratic72 =
    "testITQuadratic72"
        ~: findPalindromesFormatted
            VarWord
            FormatLength
            SelectAll
            (AlgQuadratic 0 0)
            0
            "onzin dit pal pal dit gek"
        ~?= "[0,1,0,1,0,1,4,1,0,1,0,1,0]"

-- String: Contains an odd palindrome with punctuation
testITQuadratic73 =
    "testITQuadratic73"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectAll
            (AlgQuadratic 0 1)
            2
            "Onzin. pAl is. Pal gek"
        ~?= "\"Onzin. pAl\"\n\"Onzin. pAl is\"\n\"pAl is\"\n\"Onzin. pAl is. Pal gek\"\n\"is. Pal\"\n\"is. Pal gek\"\n\"Pal gek\""

-- String: Contains an odd palindrome
testITQuadratic74 =
    "testITQuadratic74"
        ~: findPalindromesFormatted
            VarWord
            FormatText
            SelectLongest
            (AlgQuadratic 1 2)
            3
            "onzin pal is pal gek"
        ~?= "\"onzin pal is pal gek\""