Trying out Hspec

[?]
Mar 9, 2014, 3:34 PM
NMWWP4ZNOKHZKSJ6F5KYEREWXXR5F4UD35WOKI3EH42AZWVCTCJAC

Dependencies

  • [2] TJEUE7TY Added OverloadedStrings to eliminate Text fiddling.
  • [3] 2KZPOGRB Once you get Haskell to compile, the tests pass!
  • [4] EQXRXRZD Changed to use tasty instead of test-framework
  • [5] ADMKQQGC Initial empty Snap project.
  • [6] NVOCQVAS Initial failing tests.
  • [7] N4NDAZYT Initial implementation of payouts.
  • [8] Y35QCWYW Minor improvement in WorkIndex type to eliminate duplicated information.

Change contents

  • replacement in ananke.cabal at line 34
    [3.742][3.523:546]()
    Test-Suite test-ananke
    [3.742]
    [3.546]
    Test-Suite spec
  • replacement in ananke.cabal at line 38
    [3.648][3.648:678]()
    main-is: Test.hs
    [3.648]
    [3.678]
    main-is: Spec.hs
  • edit in ananke.cabal at line 40
    [3.701][3.701:778]()
    tasty >= 0.7,
    tasty-hunit,
    tasty-quickcheck,
  • edit in ananke.cabal at line 41
    [3.788]
    [3.41]
    hspec >= 1.8.1,
  • replacement in ananke.cabal at line 45
    [3.808][3.32:72]()
    containers == 0.5.*,
    [3.808]
    [3.808]
    containers,
  • file addition: Ananke (d--r------)
    [3.3647]
  • file move: Test.hs (----------)TimeLogSpec.hs (----------)
    [0.88]
    [3.3665]
  • edit in test/Ananke/TimeLogSpec.hs at line 2
    [2.58]
    [3.2656]
    module Ananke.TimeLogSpec where
  • replacement in test/Ananke/TimeLogSpec.hs at line 5
    [3.2657][3.1866:1943](),[3.3665][3.1866:1943]()
    import Test.Tasty
    import Test.Tasty.QuickCheck as QC
    import Test.Tasty.HUnit
    [3.2657]
    [3.2658]
    import Test.Hspec
    import Ananke
    import Ananke.Interval as I
    import Ananke.TimeLog as L
    import Control.Arrow
    import Control.Monad
  • edit in test/Ananke/TimeLogSpec.hs at line 13
    [3.2685]
    [3.3744]
    import Data.Maybe
  • edit in test/Ananke/TimeLogSpec.hs at line 15
    [3.3763][3.3763:3781]()
    import Data.Maybe
  • edit in test/Ananke/TimeLogSpec.hs at line 16
    [3.229][3.3781:3802](),[3.3781][3.3781:3802](),[3.3802][3.230:251](),[3.251][3.3802:3816](),[3.3802][3.3802:3816](),[3.3816][3.1944:1999](),[3.1999][3.3838:3863](),[3.3838][3.3838:3863]()
    import Control.Monad
    import Control.Arrow
    import Ananke
    import Ananke.TimeLog as L
    import Ananke.Interval as I
    import Data.Time.ISO8601
  • replacement in test/Ananke/TimeLogSpec.hs at line 17
    [3.3895][3.2000:2088]()
    main = defaultMain tests
    tests :: TestTree
    tests = testGroup "Intervals" [unitTests]
    [3.3895]
    [3.2088]
    import Data.Time.ISO8601
  • edit in test/Ananke/TimeLogSpec.hs at line 19
    [3.2089][3.2089:2173]()
    unitTests = testGroup "Unit Tests" [testCase "deriveIntervals" deriveIntervalsTest]
  • replacement in test/Ananke/TimeLogSpec.hs at line 20
    [3.3896][3.3896:3956](),[3.3956][2.59:196]()
    deriveIntervalsTest :: Assertion
    deriveIntervalsTest = let
    testAddrs = catMaybes [ parseBtcAddr "123"
    , parseBtcAddr "456"
    , parseBtcAddr "789" ]
    [3.3896]
    [3.4126]
    spec :: Spec
    spec = do
    describe "log reduction" $ do
    it "reduces a log to a work index" $ do
    let testAddrs = catMaybes [ parseBtcAddr "123"
    , parseBtcAddr "456"
    , parseBtcAddr "789" ]
  • replacement in test/Ananke/TimeLogSpec.hs at line 28
    [3.4127][3.4127:4253]()
    starts = catMaybes [ parseISO8601 "2014-01-01T00:08:00Z"
    , parseISO8601 "2014-02-12T00:12:00Z" ]
    [3.4127]
    [3.4253]
    starts = catMaybes [ parseISO8601 "2014-01-01T00:08:00Z"
    , parseISO8601 "2014-02-12T00:12:00Z" ]
  • replacement in test/Ananke/TimeLogSpec.hs at line 31
    [3.4254][3.4254:4380]()
    ends = catMaybes [ parseISO8601 "2014-01-01T00:12:00Z"
    , parseISO8601 "2014-02-12T00:18:00Z" ]
    [3.4254]
    [3.2686]
    ends = catMaybes [ parseISO8601 "2014-01-01T00:12:00Z"
    , parseISO8601 "2014-02-12T00:18:00Z" ]
  • replacement in test/Ananke/TimeLogSpec.hs at line 34
    [3.2687][3.2687:2718](),[3.2718][3.4380:4460](),[3.4380][3.4380:4460](),[3.4460][3.2719:2789]()
    testLogEntries :: [LogEntry]
    testLogEntries = do
    addr <- testAddrs
    (start, end) <- zip starts ends
    [ LogEntry addr (StartWork start), LogEntry addr (StopWork end) ]
    [3.2687]
    [3.417]
    testLogEntries :: [LogEntry]
    testLogEntries = do
    addr <- testAddrs
    (start, end) <- zip starts ends
    [ LogEntry addr (StartWork start), LogEntry addr (StopWork end) ]
  • replacement in test/Ananke/TimeLogSpec.hs at line 40
    [3.418][3.2790:2823](),[3.2823][3.418:439](),[3.418][3.418:439](),[3.439][3.4542:4600](),[3.4542][3.4542:4600](),[3.4600][3.440:493]()
    testIntervals :: [LogInterval]
    testIntervals = do
    addr <- testAddrs
    (start, end) <- zip starts ends
    return $ LogInterval addr (I.interval start end)
    [3.418]
    [3.2824]
    testIntervals :: [LogInterval]
    testIntervals = do
    addr <- testAddrs
    (start, end) <- zip starts ends
    return $ LogInterval addr (I.interval start end)
  • replacement in test/Ananke/TimeLogSpec.hs at line 46
    [3.2825][3.2825:2990]()
    expected0 :: Map BtcAddr ([LogEntry], [LogInterval])
    expected0 = M.map (const [] &&& id) . fromListWith (++) . fmap (intervalBtcAddr &&& return) $ testIntervals
    [3.2825]
    [3.493]
    expected0 :: Map BtcAddr ([LogEntry], [LogInterval])
    expected0 = M.map (const [] &&& id) . fromListWith (++) . fmap (intervalBtcAddr &&& return) $ testIntervals
  • replacement in test/Ananke/TimeLogSpec.hs at line 49
    [3.494][3.2991:3085]()
    expected :: WorkIndex
    expected = M.map (bimap (fmap event) (fmap workInterval)) expected0
    [3.494]
    [3.4635]
    expected :: WorkIndex
    expected = M.map (bimap (fmap event) (fmap workInterval)) expected0
  • replacement in test/Ananke/TimeLogSpec.hs at line 52
    [3.4636][3.4636:4710]()
    in assertEqual "derive log entries" (intervals testLogEntries) expected
    [3.4636]
    [3.974]
    (intervals testLogEntries) `shouldBe` expected
  • edit in test/Ananke/TimeLogSpec.hs at line 54
    [3.975]
    [3.975]
    main :: IO ()
    main = hspec spec
  • file addition: Spec.hs (----------)
    [3.3647]
    {-# OPTIONS_GHC -F -pgmF hspec-discover #-}