@@ -1,8 +1,30 @@
11module Regression.T2 (test2) where
22
3+import Control.Ether.Abbr
4+import qualified Control.Monad.Ether.Implicit as I
5+import qualified Control.Ether.Implicit.Abbr as I
6+
37import Test.Tasty
8+import Test.Tasty.QuickCheck
9+
10+testEther :: Ether '[I.R Integer, I.R Bool] m => m String
11+testEther = I.local (succ :: Integer -> Integer) $ do
12+ n :: Integer <- I.ask
13+ b <- I.local not I.ask
14+ return (if b then "" else show n)
15+
16+runner1 (n :: Integer) = flip I.runReader n . flip I.runReaderT True
17+runner2 (n :: Integer) = flip I.runReader True . flip I.runReaderT n
418
519test2 :: TestTree
6−test2 = testGroup "T2"
7− [
20+test2 = testGroup "T2: Implicit tags"
21+ [ testProperty "runner1 works"
22+ $ \n -> property
23+ $ runner1 n testEther == show (succ n)
24+ , testProperty "runner2 works"
25+ $ \n -> property
26+ $ runner2 n testEther == show (succ n)
27+ , testProperty "runner1 == runner2"
28+ $ \n -> property
29+ $ runner1 n testEther == runner2 n testEther
830 ]