@@ -7,6 +7,9 @@ module Test.QuickCheck.Arbitrary
7
7
8
8
import Prelude
9
9
10
+ import Control.Monad.Gen.Class (chooseBool )
11
+ import Control.Monad.Gen.Common as MGC
12
+
10
13
import Data.Char (toCharCode , fromCharCode )
11
14
import Data.Either (Either (..))
12
15
import Data.Foldable (foldl )
@@ -21,7 +24,7 @@ import Data.NonEmpty (NonEmpty(..), (:|))
21
24
import Data.String (charCodeAt , fromCharArray , split )
22
25
import Data.Tuple (Tuple (..))
23
26
24
- import Test.QuickCheck.Gen (Gen , listOf , chooseInt , sized , perturbGen , repeatable , arrayOf , oneOf , uniform )
27
+ import Test.QuickCheck.Gen (Gen , elements , listOf , chooseInt , sized , perturbGen , repeatable , arrayOf , uniform )
25
28
26
29
-- | The `Arbitrary` class represents those types whose values can be
27
30
-- | _randomly-generated_.
@@ -44,9 +47,7 @@ class Coarbitrary t where
44
47
coarbitrary :: forall r . t -> Gen r -> Gen r
45
48
46
49
instance arbBoolean :: Arbitrary Boolean where
47
- arbitrary = do
48
- n <- uniform
49
- pure $ (n * 2.0 ) < 1.0
50
+ arbitrary = chooseBool
50
51
51
52
instance coarbBoolean :: Coarbitrary Boolean where
52
53
coarbitrary true = perturbGen 1.0
@@ -83,7 +84,7 @@ instance coarbUnit :: Coarbitrary Unit where
83
84
coarbitrary _ = perturbGen 1.0
84
85
85
86
instance arbOrdering :: Arbitrary Ordering where
86
- arbitrary = oneOf $ (pure LT ) :| [pure EQ , pure GT ]
87
+ arbitrary = elements $ LT :| [EQ , GT ]
87
88
88
89
instance coarbOrdering :: Coarbitrary Ordering where
89
90
coarbitrary LT = perturbGen 1.0
@@ -111,18 +112,14 @@ instance coarbTuple :: (Coarbitrary a, Coarbitrary b) => Coarbitrary (Tuple a b)
111
112
coarbitrary (Tuple a b) = coarbitrary a >>> coarbitrary b
112
113
113
114
instance arbMaybe :: Arbitrary a => Arbitrary (Maybe a ) where
114
- arbitrary = do
115
- b <- arbitrary
116
- if b then pure Nothing else Just <$> arbitrary
115
+ arbitrary = MGC .genMaybe arbitrary
117
116
118
117
instance coarbMaybe :: Coarbitrary a => Coarbitrary (Maybe a ) where
119
118
coarbitrary Nothing = perturbGen 1.0
120
119
coarbitrary (Just a) = coarbitrary a
121
120
122
121
instance arbEither :: (Arbitrary a , Arbitrary b ) => Arbitrary (Either a b ) where
123
- arbitrary = do
124
- b <- arbitrary
125
- if b then Left <$> arbitrary else Right <$> arbitrary
122
+ arbitrary = MGC .genEither arbitrary arbitrary
126
123
127
124
instance coarbEither :: (Coarbitrary a , Coarbitrary b ) => Coarbitrary (Either a b ) where
128
125
coarbitrary (Left a) = coarbitrary a
0 commit comments