entwine-0.0.2: test/Test/Entwine/Data/Gate.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module Test.Entwine.Data.Gate where
import Test.Disorder (testIO)
import Entwine.P
import Test.QuickCheck
import Entwine.Data.Gate
--
-- A new gate should isOpen
--
prop_isOpen = once . testIO $
newGate >>=
isOpen >>=
pure . (===) True
--
-- A gate that has been closed should not be open
--
prop_close = once . testIO $
newGate >>= \c ->
close c >>
isOpen c >>=
pure . (===) False
--
-- A gate can be closed multiple times
--
prop_close_multiple = once . testIO $
newGate >>= \c ->
close c >> close c >> pure True
return []
tests = $quickCheckAll