packages feed

timeout-snooze-0.1.0.0: test/Spec.hs

import Control.Concurrent
import System.Timeout.Snooze
import Test.Hspec

main :: IO ()
main = hspec $ do
    describe "System.Timeout.Snooze" $ do
        it "times out a long running action" $ do
            munit <- timeoutWithSnooze 1000 $ \_ -> do
                threadDelay 2000
            munit `shouldBe` Nothing

        it "passes if you're fast enough" $ do
            munit <- timeoutWithSnooze 10000 $ \_ -> do
                threadDelay 1000
            munit `shouldBe` Just ()

        it "allows you to snooze" $ do
            munit <- timeoutWithSnooze 10000 $ \sn -> do
                threadDelay 9000
                snooze sn
                threadDelay 9000
            munit `shouldBe` Just ()