@@ -8,13 +8,15 @@ import Control.Monad.Eff (Eff)
8
8
import Control.Monad.Eff.Console (log , CONSOLE )
9
9
import Control.Monad.Eff.Exception (EXCEPTION )
10
10
import Control.Monad.Eff.Random (RANDOM )
11
+ import Data.NonEmpty ((:|))
11
12
import Data.Foldable (foldl , for_ , all )
12
13
import Data.Function (on )
13
14
import Data.List (List (Cons), groupBy , length , nubBy , singleton , sort , sortBy )
14
15
import Data.Maybe (Maybe (..), fromMaybe )
15
16
import Data.Tuple (Tuple (..), fst )
16
17
import Partial.Unsafe (unsafePartial )
17
18
import Test.QuickCheck ((<?>), (===), quickCheck , quickCheck' )
19
+ import Test.QuickCheck.Gen (elements , oneOf )
18
20
import Test.QuickCheck.Arbitrary (class Arbitrary , arbitrary )
19
21
20
22
newtype TestMap k v = TestMap (M.Map k v )
@@ -39,19 +41,7 @@ instance showSmallKey :: Show SmallKey where
39
41
show J = " J"
40
42
41
43
instance arbSmallKey :: Arbitrary SmallKey where
42
- arbitrary = do
43
- n <- arbitrary
44
- pure case n of
45
- _ | n < 0.1 -> A
46
- _ | n < 0.2 -> B
47
- _ | n < 0.3 -> C
48
- _ | n < 0.4 -> D
49
- _ | n < 0.5 -> E
50
- _ | n < 0.6 -> F
51
- _ | n < 0.7 -> G
52
- _ | n < 0.8 -> H
53
- _ | n < 0.9 -> I
54
- _ -> J
44
+ arbitrary = elements $ A :| [B , C , D , E , F , G , H , I , J ]
55
45
56
46
data Instruction k v = Insert k v | Delete k
57
47
@@ -60,16 +50,7 @@ instance showInstruction :: (Show k, Show v) => Show (Instruction k v) where
60
50
show (Delete k) = " Delete (" <> show k <> " )"
61
51
62
52
instance arbInstruction :: (Arbitrary k , Arbitrary v ) => Arbitrary (Instruction k v ) where
63
- arbitrary = do
64
- b <- arbitrary
65
- case b of
66
- true -> do
67
- k <- arbitrary
68
- v <- arbitrary
69
- pure (Insert k v)
70
- false -> do
71
- k <- arbitrary
72
- pure (Delete k)
53
+ arbitrary = oneOf $ (Insert <$> arbitrary <*> arbitrary) :| [Delete <$> arbitrary]
73
54
74
55
runInstructions :: forall k v . Ord k => List (Instruction k v ) -> M.Map k v -> M.Map k v
75
56
runInstructions instrs t0 = foldl step t0 instrs
0 commit comments