ether-0.5.0.0: test/Regression/T2.hs
module Regression.T2 (test2) where
import Ether
import Test.Tasty
import Test.Tasty.QuickCheck
testEther :: (MonadReader' Integer m, MonadReader' Bool m) => m String
testEther = local' (succ :: Integer -> Integer) $ do
n :: Integer <- asks' (*2)
b <- local' not ask'
return (if b then "" else show n)
runner1 (n :: Integer) = flip runReader' n . flip runReaderT' True
runner2 (n :: Integer) = flip runReader' True . flip runReaderT' n
test2 :: TestTree
test2 = testGroup "T2: Implicit tags"
[ testProperty "runner₁ works"
$ \n -> property
$ runner1 n testEther == show (succ n * 2)
, testProperty "runner₂ works"
$ \n -> property
$ runner2 n testEther == show (succ n * 2)
, testProperty "runner₁ == runner₂"
$ \n -> property
$ runner1 n testEther == runner2 n testEther
]