36 lines
840 B
Haskell
36 lines
840 B
Haskell
import Test.Hspec
|
|
import Test.QuickCheck
|
|
import Control.Exception (evaluate)
|
|
import Data.Dates
|
|
|
|
import Lib (match)
|
|
|
|
main :: IO ()
|
|
main = hspec $ do
|
|
describe "Cron pattern" $ do
|
|
|
|
it "matches fixed time" $
|
|
let
|
|
pattern = "* * * * * *"
|
|
date = DateTime 2017 10 11 0 0 0
|
|
in
|
|
match pattern date `shouldBe` (True :: Bool)
|
|
|
|
it "matches all minutes" $
|
|
let
|
|
pattern = "* * * * * *"
|
|
dates = [DateTime 2017 10 11 0 i 0 | i <- [0..59]]
|
|
in
|
|
countMatches pattern dates `shouldBe` (60 :: Int)
|
|
|
|
-- it "matches exactly moment" $
|
|
-- match "0 0 11 10 2017" (DateTime 2017 10 11 0 0 0) `shouldBe` (True :: Bool)
|
|
|
|
|
|
countMatches :: String -> [DateTime] -> Int
|
|
countMatches p xs = sum $ map (f p) xs
|
|
where
|
|
f p d = case match p d of
|
|
True -> 1
|
|
False -> 0
|