xp12Tuple,
xpAttr,
xpElem,
+ xpInt,
xpList,
xpOption,
xpPair,
- xpPrim,
xpText,
xpTriple,
xpWrap )
import TSN.Codegen (
tsn_codegen_config,
- tsn_db_field_namer -- Used in a test.
- )
+ tsn_db_field_namer ) -- Used in a test
import TSN.DbImport ( DbImport(..), ImportResult(..) )
-import Xml ( ToFromXml(..), pickle_unpickle )
+import Xml ( ToFromXml(..), pickle_unpickle, unpickleable )
pickle_msg_id =
xpElem "msg_id" $
xpWrap (from_tuple, to_tuple) $
- xpPair xpPrim (xpAttr "EventId" (xpOption xpPrim))
+ xpPair xpInt (xpAttr "EventId" (xpOption xpInt))
where
from_tuple = uncurryN MsgId
to_tuple m = (db_msg_id m, db_event_id m)
pickle_message =
xpElem "message" $
xpWrap (from_tuple, to_tuple) $
- xp12Tuple (xpElem "XML_File_ID" xpPrim)
+ xp12Tuple (xpElem "XML_File_ID" xpInt)
(xpElem "heading" xpText)
pickle_msg_id
(xpElem "category" xpText)
testGroup
"News tests"
[ test_news_fields_have_correct_names,
- test_pickle_of_unpickle_is_identity ]
-
-
-test_pickle_of_unpickle_is_identity :: TestTree
-test_pickle_of_unpickle_is_identity =
- testCase "pickle composed with unpickle is the identity" $ do
- let path = "test/xml/newsxml.xml"
- (expected :: [MessageXml], actual) <- pickle_unpickle "message" path
- actual @?= expected
+ test_pickle_of_unpickle_is_identity,
+ test_unpickle_succeeds ]
test_news_fields_have_correct_names :: TestTree
actual = ["mid", "sport", "url", "sms", "text", "continue"]
check (x,y) = (x @?= y)
+
+
+-- | Warning, succeess of this test does not mean that unpickling
+-- succeeded.
+test_pickle_of_unpickle_is_identity :: TestTree
+test_pickle_of_unpickle_is_identity =
+ testCase "pickle composed with unpickle is the identity" $ do
+ let path = "test/xml/newsxml.xml"
+ (expected :: [MessageXml], actual) <- pickle_unpickle "message" path
+ actual @?= expected
+
+
+test_unpickle_succeeds :: TestTree
+test_unpickle_succeeds =
+ testCase "unpickling succeeds" $ do
+ let path = "test/xml/newsxml.xml"
+ actual <- unpickleable path pickle_message
+ let expected = True
+ actual @?= expected