import Control.Applicative ((<$>), (<*>))
import Control.Monad (liftM)
import Data.Aeson ((.:), FromJSON(..), Value(Object))
-import Data.Maybe (fromMaybe, mapMaybe, isJust)
+import Data.Maybe (mapMaybe, isJust)
import Data.Monoid (mempty)
import Data.String.Utils (join, splitWs)
import Data.Text (pack)
import Data.Time.Format (parseTime)
import Data.Time.LocalTime (TimeZone, utcToZonedTime)
import System.Locale (defaultTimeLocale, rfc822DateFormat)
-import Test.HUnit
+import Test.Framework (Test, testGroup)
+import Test.Framework.Providers.HUnit (testCase)
+import Test.HUnit (Assertion, assertEqual)
import Text.Regex (matchRegex, mkRegex)
import Html (replace_entities)
show_created_at :: Maybe TimeZone -> Status -> String
show_created_at mtz =
- (fromMaybe "") . (fmap $ utc_time_to_rfc822 mtz) . created_at
+ (maybe "" (utc_time_to_rfc822 mtz)) . created_at
-- | Returns a nicely-formatted String representing the given 'Status'
-- object.
usernames = parse_usernames_from_status status
-status_tests :: [Test]
-status_tests = [ test_parse_usernames ]
+status_tests :: Test
+status_tests =
+ testGroup "Status Tests" [ tc1 ]
+ where
+ tc1 = testCase "All usernames are parsed." test_parse_usernames
-test_parse_usernames :: Test
+test_parse_usernames :: Assertion
test_parse_usernames =
- TestCase $
- assertEqual
- "All usernames are parsed."
- expected_usernames
- actual_usernames
- where
- dummy_user = User { screen_name = "nobody" }
- dummy_status = Status { status_id = 1,
- created_at = Nothing,
- text = "Hypothesis: @donsbot and @bonus500 are two personalities belonging to the same person.",
- user = dummy_user,
- reply = False,
- retweeted = False
- }
-
- actual_usernames = parse_usernames_from_status dummy_status
- expected_usernames = ["donsbot", "bonus500"]
+ assertEqual
+ "All usernames are parsed."
+ expected_usernames
+ actual_usernames
+ where
+ dummy_user = User { screen_name = "nobody" }
+ dummy_text = "Hypothesis: @donsbot and @bonus500 are two " ++
+ "personalities belonging to the same person."
+ dummy_status = Status { status_id = 1,
+ created_at = Nothing,
+ text = dummy_text,
+ user = dummy_user,
+ reply = False,
+ retweeted = False
+ }
+
+ actual_usernames = parse_usernames_from_status dummy_status
+ expected_usernames = ["donsbot", "bonus500"]