54 lines
1.8 KiB
Haskell
54 lines
1.8 KiB
Haskell
module Util
|
|
( utilGroup
|
|
) where
|
|
|
|
import Data.Char
|
|
|
|
import Test.QuickCheck
|
|
import Test.Framework (testGroup)
|
|
import Test.Framework.Providers.HUnit
|
|
import Test.Framework.Providers.QuickCheck2
|
|
import Test.HUnit
|
|
|
|
import Text.Hakyll.Util
|
|
|
|
-- Util test group.
|
|
utilGroup = testGroup "Util"
|
|
[ testProperty "prop_trim_length" prop_trim_length
|
|
, testProperty "prop_trim_id" prop_trim_id
|
|
, testProperty "prop_stripHTML_length" prop_stripHTML_length
|
|
, testProperty "prop_stripHTML_id" prop_stripHTML_id
|
|
, testCase "test_stripHTML_1" test_stripHTML_1
|
|
, testCase "test_stripHTML_2" test_stripHTML_2
|
|
, testCase "test_stripHTML_3" test_stripHTML_3
|
|
, testCase "test_link_1" test_link_1
|
|
, testCase "test_link_2" test_link_2
|
|
]
|
|
|
|
-- Test that a string always becomes shorter when trimmed.
|
|
prop_trim_length str = length str >= length (trim str)
|
|
|
|
-- Check that a string which does not start or end with a space is not trimmed.
|
|
prop_trim_id str = (not $ null str) && isAlreadyTrimmed ==> str == (trim str)
|
|
where
|
|
isAlreadyTrimmed :: Bool
|
|
isAlreadyTrimmed = (not $ isSpace $ head str) && (not $ isSpace $ last str)
|
|
|
|
-- Check that a stripped string is shorter.
|
|
prop_stripHTML_length str = length str >= length (stripHTML str)
|
|
|
|
-- Check that strings without tags remain untouched.
|
|
prop_stripHTML_id str = (not $ any (`elem` ['>', '<']) str)
|
|
==> str == stripHTML str
|
|
|
|
-- Strip HTML test cases.
|
|
test_stripHTML_1 = stripHTML "<b>text</b>" @?= "text"
|
|
test_stripHTML_2 = stripHTML "text" @?= "text"
|
|
test_stripHTML_3 =
|
|
stripHTML "<b>Hakyll</b>, a <i>website</i> generator<img src=\"foo.png\" />"
|
|
@?= "Hakyll, a website generator"
|
|
|
|
-- Link test cases.
|
|
test_link_1 = link "foo bar" "/foo/bar.html"
|
|
@?= "<a href=\"/foo/bar.html\">foo bar</a>"
|
|
test_link_2 = link "back home" "/" @?= "<a href=\"/\">back home</a>"
|