-------------------------------------------------------------------------------- module Hakyll.Core.Util.String.Tests ( tests ) where -------------------------------------------------------------------------------- import Test.Tasty (TestTree, testGroup) import Test.Tasty.HUnit ((@=?)) -------------------------------------------------------------------------------- import Hakyll.Core.Util.String import TestSuite.Util -------------------------------------------------------------------------------- tests :: TestTree tests = testGroup "Hakyll.Core.Util.String.Tests" $ concat [ fromAssertions "trim" [ "foo" @=? trim " foo\n\t " ] , fromAssertions "replaceAll" [ "foo-end" @=? replaceAll "begin" (const "foo") "begin-end" , "begin-foo" @=? replaceAll "end" (const "foo") "begin-end" , "no match" @=? replaceAll "abc" (const "foo") "no match" , "foo" @=? replaceAll ".*" (const "foo") "full match" , "empty pattern" @=? replaceAll "" (const "foo") "empty pattern" , "" @=? replaceAll "empty input" (const "foo") "" , "32 & 131" @=? replaceAll "0x[0-9]+" (show . readInt) "0x20 & 0x83" ] , fromAssertions "splitAll" [ ["a", "b", "c"] @=? splitAll "," "a,,b,,,c,," , ["abc", "def"] @=? splitAll "[0-9]+" "abc123def456" , ["no match"] @=? splitAll "," "no match" , [] @=? splitAll ".*" "full match" , ["empty pattern"] @=? splitAll "" "empty pattern" , [] @=? splitAll "empty input" "" , ["λ", "∀x.x", "hi"] @=? splitAll ", *" "λ, ∀x.x, hi" ] , fromAssertions "needlePrefix" [ Just "ab" @=? needlePrefix "cd" "abcde" , Just "xx" @=? needlePrefix "ab" "xxab" , Nothing @=? needlePrefix "a" "xx" , Just "x" @=? needlePrefix "ab" "xabxab" , Just "" @=? needlePrefix "ab" "abc" , Just "" @=? needlePrefix "ab" "abab" , Nothing @=? needlePrefix "" "" ] ] where readInt :: String -> Int readInt = read