-- TestMain.hs -- -- Author: Yoshikuni Jujo -- module Hidden.TestMain where import Test.HUnit import Text.RegexPR ( matchRegexPR, gsubRegexPR ) main :: IO Counts main = runTestTT $ test suite suite :: [ Test ] suite = ["base" ~: testBase] testBase :: [ Test ] testBase = [ Just ( ("" , ("", "" )), [] ) ~=? matchRegexPR "" "" , Just ( ("" , ("", "abcde" )), [] ) ~=? matchRegexPR "" "abcde" , Just ( ("a", ("", "" )), [] ) ~=? matchRegexPR "." "a" , Just ( ("bc", ("a", "d")), [] ) ~=? matchRegexPR "b." "abcd" , Just ( ("abbc", ("", "d")), [] ) ~=? matchRegexPR ".b+." "abbcd" , Just ( ("abbbbc", ("cd", "d")), [] ) ~=? matchRegexPR ".b+." "cdabbbbcd" , Nothing ~=? matchRegexPR ".b+." "cdacd" , Just ( ("abbc", ("", "d")), [] ) ~=? matchRegexPR ".b*." "abbcd" , Just ( ("cd", ("", "abbbbcd")), [] ) ~=? matchRegexPR ".b*." "cdabbbbcd" , Just ( ("cd", ("", "acd")), [] ) ~=? matchRegexPR ".b*." "cdacd" , Just ( ("abcdef", ("", "")), [(3, "ef"), (2, "cd"), (1, "ab")] ) ~=? matchRegexPR "(ab)(cd)(ef)" "abcdef" , Just ( ("defghabc", ("abc", "def")), [(1, "fghabc"), (3, "abc"), (4, "bc"), (2, "h"), (2, "g"), (2, "f")] ) ~=? matchRegexPR "de((.)+(a(bc)))" "abcdefghabcdef" , Just ( ("abca", ("", "")), [(1,"a"), (2,"a"), (3,"a"), (4,"a"), (5,"a"), (6,"a"), (7,"a"), (8,"a"), (9,"a"), (10,"a")] ) ~=? matchRegexPR "((((((((((a))))))))))bc\\10" "abca" , Just ( (")(", ("", "")), [(1, ")("), (2, ")(")] ) ~=? matchRegexPR "((\\)\\())" ")(" , Just ( ("+", ("a", "b")), [] ) ~=? matchRegexPR "\\+" "a+b" , Just ( ("def", ("", "")), [] ) ~=? matchRegexPR "abc|def|gh" "def" , Just ( ("abde", ("", "f")), [(1,"d")] ) ~=? matchRegexPR "ab(c|d)e" "abdef" , Just ( ("de", ("abc", "f")), [] ) ~=? matchRegexPR "[abcd]e" "abcdef" , Just ( ("me", ("abc", "f")), [] ) ~=? matchRegexPR "[abk-n]e" "abcmef" , Just ( ("dcd", ("abc", "")), [] ) ~=? matchRegexPR "[^ab]cd" "abcdcd" , Just ( ("dcd", ("abmc", "")), [] ) ~=? matchRegexPR "[^abk-n]cd" "abmcdcd" , Just ( ("cde", ("", "")), [] ) ~=? matchRegexPR "cde$" "cde" , Just ( ("cde", ("ab", "")), [] ) ~=? matchRegexPR "cde$" "abcde" , Just ( ("cde", ("cde", "\nfg")), [] ) ~=? matchRegexPR "cde$" "cdecde\nfg" , Nothing ~=? matchRegexPR "cde$" "abcdefg" , Just ( ("abc", ("", "defg")), [] ) ~=? matchRegexPR "^abc" "abcdefg" , Just ( ("abc", ("def\n", "")), [] ) ~=? matchRegexPR "^abc" "def\nabc" , Just ( ("abcd", ("", "e")), [(1,"abc")] ) ~=? matchRegexPR "(abc(?=de))d" "abcde" , Just ( ("def", ("abc", "")), [] ) ~=? matchRegexPR "(?<=abc)def" "abcdef" , Just ( ("aaaa", ("b", "cd")), [] ) ~=? matchRegexPR "a+" "baaaacd" , Just ( ("a", ("b", "aaacd")), [] ) ~=? matchRegexPR "a+?" "baaaacd" , Just ( ("", ("", "baaaacd")), [] ) ~=? matchRegexPR "a*" "baaaacd" , Just ( ("", ("", "baaaacd")), [] ) ~=? matchRegexPR "a*?" "baaaacd" , Just ( ("", ("", "baaaacd")), [] ) ~=? matchRegexPR "a?" "baaaacd" , Just ( ("", ("", "baaaacd")), [] ) ~=? matchRegexPR "a??" "baaaacd" , Just ( ("a", ("", "aabaacd")), [] ) ~=? matchRegexPR "a?" "aaabaacd" , Just ( ("ab", ("aa", "aacd")), [] ) ~=? matchRegexPR "a??b" "aaabaacd" , Just ( ("acd", ("", "")), [(1,"a")] ) ~=? matchRegexPR "(a)(?!b)cd" "acd" , Just ( ("abcdef", ("", "")), [(1, "abcdef")] ) ~=? matchRegexPR "(abcdef)(?<=\\1)" "abcdef" , Just ( ("", ("", "abc")), [(1, "abc")] ) ~=? matchRegexPR "(?=(abc))" "abc" , Just ( ("", ("abc", "")), [(1, "abc")] ) ~=? matchRegexPR "(?<=(abc))" "abc" , Just ( ("", ("", "abc")), [] ) ~=? matchRegexPR "(?=(?=ab)abc)" "abc" , Just ( ("", ("ab", "c")), [] ) ~=? matchRegexPR "(?=(?<=ab)c)" "abc" , Just ( ("", ("abc", "")), [] ) ~=? matchRegexPR "(?<=(?=ab)abc)" "abc" , Just ( ("", ("abc", "")), [] ) ~=? matchRegexPR "(?<=(?<=ab)c)" "abc" , Just ( ("", ("a", "bc")), [] ) ~=? matchRegexPR "(?<=.+)" "abc" , Just ( ("abc", ("", "d")), [(1, "c"), (1, "b"), (1, "a")] ) ~=? matchRegexPR "(.)+(?=d)" "abcd" , Just ( ("", ("abc", "d")), [(1, "c"), (1, "b"), (1, "a")] ) ~=? matchRegexPR "(?<=(.)+)(?=d)" "abcd" , Just ( ("", ("abc", "d")), [(1, "c"), (1, "b"), (1, "a")] ) ~=? matchRegexPR "(?<=(?<=(.)+))(?=d)" "abcd" , Just ( ("ab", ("", "cde")), [] ) ~=? matchRegexPR "\\Gab" "abcde" , Nothing ~=? matchRegexPR "\\Gab" "dabcde" , "kickickicccabab" ~=? gsubRegexPR "\\Gab" "kic" "abababccabab" , "kic2" ~: "kickickiccckickic" ~=? gsubRegexPR "ab" "kic" "abababccabab" , "1:(hello), 2:(boke), 3:(kasu)" ~=? gsubRegexPR "\\[(.+?)\\]" "(\\1)" "1:[hello], 2:[boke], 3:[kasu]" , Just ( ("ab12", ("!", "?32")), [] ) ~=? matchRegexPR "\\w+" "!ab12?32" , Just ( ("!?;:", ("3a", "c")), [] ) ~=? matchRegexPR "\\W+" "3a!?;:c" , Just ( ("\t\n ", ("!", "d")), [] ) ~=? matchRegexPR "\\s+" "!\t\n d" , Just ( ("a!:0", ("\f ", "\n")), [] ) ~=? matchRegexPR "\\S+" "\f a!:0\n" , Just ( ("321", ("a ", "bc")), [] ) ~=? matchRegexPR "\\d+" "a 321bc" , Just ( (" a!c", ("3", "21")), [] ) ~=? matchRegexPR "\\D+" "3 a!c21" , Just ( ("\nab", ("", "c")), [] ) ~=? matchRegexPR "\\A\\s.." "\nabc" , Just ( ("de", ("abc", "")), [] ) ~=? matchRegexPR "..\\Z" "abcde" , "o\no" ~=? gsubRegexPR "\\Z" "o" "\n" , "o\no" ~=? gsubRegexPR "$" "o" "\n" , Just ( ("", ("", "\n")), [] ) ~=? matchRegexPR "$" "\n" , "oaoboco" ~=? gsubRegexPR "" "o" "abc" , "\no" ~=? gsubRegexPR "\\z" "o" "\n" , Just ( ("cat", (" ", "\n")), [] ) ~=? matchRegexPR "\\bcat\\b" " cat\n" , Nothing ~=? matchRegexPR "\\bcat\\b" "concat\n" , Just ( ("cat", ("", "")), [] ) ~=? matchRegexPR "\\bcat\\b" "cat" , Just ( ("cat", ("con", "")), [] ) ~=? matchRegexPR "\\Bcat\\b" "concat" , Nothing ~=? matchRegexPR "\\Bcat\\b" "cat" , Just ( ("ooogl", ("goo", "e")), [] ) ~=? matchRegexPR "o{3}gl" "gooooogle" , Just ( ("ooooogl", ("g", "e")), [] ) ~=? matchRegexPR "o{3,}gl" "gooooogle" , Just ( ("oooogl", ("go", "e")), [] ) ~=? matchRegexPR "o{2,4}gl" "gooooogle" , Just ( ("ooogl", ("goo", "e")), [] ) ~=? matchRegexPR "o{3}?gl" "gooooogle" , Just ( ("ooooogl", ("g", "e")), [] ) ~=? matchRegexPR "o{3,}?gl" "gooooogle" , Just ( ("oooogl", ("go", "e")), [] ) ~=? matchRegexPR "o{2,4}?gl" "gooooogle" , Just ( ("gooo", ("", "oogle")), [] ) ~=? matchRegexPR "go{3}" "gooooogle" , Just ( ("gooooo", ("", "gle")), [] ) ~=? matchRegexPR "go{3,}" "gooooogle" , Just ( ("goooo", ("", "ogle")), [] ) ~=? matchRegexPR "go{2,4}" "gooooogle" , Just ( ("gooo", ("", "oogle")), [] ) ~=? matchRegexPR "go{3}?" "gooooogle" , Just ( ("gooo", ("", "oogle")), [] ) ~=? matchRegexPR "go{3,}?" "gooooogle" , Just ( ("goo", ("", "ooogle")), [] ) ~=? matchRegexPR "go{2,4}?" "gooooogle" , Just ( ("com", ("", "ment")), [] ) ~=? matchRegexPR "c(?#what)om" "comment" , Just ( ("papar", ("", "ens")), [] ) ~=? matchRegexPR "(?:pa)*r" "paparens" , "abc\t323\tdef\t45" ~=? gsubRegexPR "(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)" "\t" "abc323def45" , Just ( ("ab cd", ("", "e")), [] ) ~=? matchRegexPR "ab cd" "ab cde" , Just ( ("ab,cd", ("", "e")), [] ) ~=? matchRegexPR "ab,cd" "ab,cde" , Just ( ("cde", ("ab", "fg")), [] ) ~=? matchRegexPR "c(?# comment)de" "abcdefg" , Just ( ("abCde", ("d", "fg")), [] ) ~=? matchRegexPR "ab(?i)cDe" "dabCdefg" , Just ( ("aBcdE", ("", "")), [] ) ~=? matchRegexPR "a(?i:bC)dE" "aBcdE" , Nothing ~=? matchRegexPR "a(?i:bC)dE" "aBcde" , Just ( ("abcDe", ("", "")), [] ) ~=? matchRegexPR "a(?i)bC(?-i)De" "abcDe" , Nothing ~=? matchRegexPR "a(?i)bC(?-i)De" "abcdE" , Just ( ("abc\nde", ("", "")), [] ) ~=? matchRegexPR "(?m).+" "abc\nde" , Just ( ("Abc", ("", "\nde")), [] ) ~=? matchRegexPR "(?im-m)a.+" "Abc\nde" , Just ( ("bcd", ("a", "e")), [] ) ~=? matchRegexPR "(?x)# hello\n# goodbye\n\t\tbcd\n\n" "abcde" , Just ( ("bcd", ("a", "e")), [] ) ~=? matchRegexPR "b[[:alnum:]]d" "abcde" , Just ( ("90af", ("", "g")), [] ) ~=? matchRegexPR "[[:xdigit:]]+" "90afg" , Just ( (" \n\t\r", ("", "a")), [] ) ~=? matchRegexPR "[[:blank:]]+" " \n\t\ra" , "Ruby and Perl" ~=? gsubRegexPR "(.*)<\\/b>" "\\1" "Ruby and Perl" , "Ruby and Perl" ~=? gsubRegexPR "(.*?)<\\/b>" "\\1" "Ruby and Perl" , Just ( ("abab0", ("", "")), [(1,"ab")] ) ~=? matchRegexPR "(ab)\\{1}0" "abab0" , Just ( ("\227\129\130", ("", "")), [] ) ~=? matchRegexPR "\227\129\130" "\227\129\130" , "abc!abc!abc!bc" ~=? gsubRegexPR "(?ixm) aBc . # comment " "abc!" "abc\nABCDAbcAbc" ]