Add " unescaping.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 1 Oct 2010 01:35:43 +0000 (21:35 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 1 Oct 2010 01:35:43 +0000 (21:35 -0400)
Add HUnit tests for the Twitter.Xml module (replace_entities).

src/Twitter/Xml.hs

index 20015d37abcd58a43167b413a3552e45fb062d85..a278081688b2542c59385f5dfff8361ea6a492af 100644 (file)
@@ -3,6 +3,7 @@ module Twitter.Xml
 where
 
 import Data.Maybe
+import Test.HUnit
 import Text.Regex (mkRegex, subRegex)
 import Text.XML.HaXml
 
@@ -50,6 +51,7 @@ user_screen_name = keep /> (tag "screen_name") /> txt
 -- character represented by that entity.
 xml_entities :: [(String, String)]
 xml_entities = [("[lr]dquo", "\""),
+                ("quot", "\""),
                 ("[mn]dash", "-"),
                 ("nbsp",     " "),
                 ("#8217",    "'"),
@@ -71,3 +73,16 @@ unescape_recursive replacements target =
       replacement = (replacements !! 0)
       from = "&" ++ (fst replacement) ++ ";"
       to = (snd replacement)
+
+
+
+xml_tests :: [Test]
+xml_tests = [ test_replace_entities ]
+
+
+test_replace_entities :: Test
+test_replace_entities =
+    TestCase $ assertEqual "All entities are replaced correctly." expected_text actual_text
+    where
+      actual_text = (replace_entities "&quot;The moon is gay,&quot; said &lt;insert the current president of the United States of America&gt;. &ldquo;It&#8217;s OK&mdash;&ndash;he&#8217;s not a real doctor.&rdquo;")
+      expected_text = "\"The moon is gay,\" said <insert the current president of the United States of America>. \"It's OK--he's not a real doctor.\""