module Html (
html_tests,
replace_entities )
where
import Test.Framework ( Test, testGroup )
import Test.Framework.Providers.HUnit ( testCase )
import Test.HUnit ( Assertion, assertEqual )
import Text.HTML.TagSoup.Entity ( lookupEntity )
replace_entities :: String -> String
replace_entities [] = []
replace_entities ('&':xs) =
let (b, a) = break (== ';') xs in
case (lookupEntity b, a) of
(Just s, ';':as) -> s ++ replace_entities as
_ -> '&' : replace_entities xs
replace_entities (x:xs) = x : replace_entities xs
html_tests :: Test
html_tests =
testGroup "HTML Tests" [ tc1 ]
where
tc1 = testCase
"All entities are replaced correctly."
test_replace_entities
test_replace_entities :: Assertion
test_replace_entities =
assertEqual description expected_text actual_text
where
description = "All entities are replaced correctly."
actual_text =
replace_entities $
""The moon is gay……" " ++
"said <insert the current president of the " ++
"United States of America>. “It’s " ++
"OK—–he’s not a real doctor.”"
expected_text =
"\"The moon is gay……\" said . " ++
"“It’s OK—–he’s not a real doctor.”"