import Data.Time.Format ( parseTime )
import Data.Time.LocalTime ( TimeZone, utcToZonedTime )
import System.Locale ( defaultTimeLocale, rfc822DateFormat )
-import Test.Framework ( Test, testGroup )
-import Test.Framework.Providers.HUnit ( testCase )
-import Test.HUnit ( Assertion, assertEqual )
+import Test.Tasty ( TestTree, testGroup )
+import Test.Tasty.HUnit ( (@?=), testCase )
import Text.Regex ( matchRegex, mkRegex )
import Html ( replace_entities )
-- | Returns a nicely-formatted String representing the given 'Status'
-- object.
+--
pretty_print :: Maybe TimeZone -> Status -> String
pretty_print mtz status =
concat [ name,
-- | Given a list of statuses, returns the greatest status_id
-- belonging to one of the statuses in the list.
+--
get_max_status_id :: Timeline -> Integer
get_max_status_id statuses =
maximum status_ids
-- | Parse one username from a word.
+--
parse_username :: String -> Maybe String
parse_username word =
case matches of
-- | Parse all usernames of the form \@username from a status.
+--
parse_usernames_from_status :: Status -> [String]
parse_usernames_from_status status =
mapMaybe parse_username status_words
where
status_words = splitWs (text status)
+
-- | Get all referenced users' timeline URLs.
+--
make_user_timeline_urls :: Status -> [String]
make_user_timeline_urls status =
map screen_name_to_timeline_url usernames
usernames = parse_usernames_from_status status
-status_tests :: Test
+status_tests :: TestTree
status_tests =
- testGroup "Status Tests" [ tc1 ]
- where
- tc1 = testCase "All usernames are parsed." test_parse_usernames
+ testGroup "Status Tests" [ test_parse_usernames ]
-test_parse_usernames :: Assertion
+test_parse_usernames :: TestTree
test_parse_usernames =
- assertEqual
- "All usernames are parsed."
- expected_usernames
- actual_usernames
+ testCase description $ actual @?= expected
where
+ description = "all usernames are parsed"
+
dummy_user = User { screen_name = "nobody" }
dummy_text = "Hypothesis: @donsbot and @bonus500 are two " ++
"personalities belonging to the same person."
retweeted = False
}
- actual_usernames = parse_usernames_from_status dummy_status
- expected_usernames = ["donsbot", "bonus500"]
+ actual = parse_usernames_from_status dummy_status
+ expected = ["donsbot", "bonus500"]