Skip to content

Commit 7bdc476

Browse files
Add arbitrary instances for newtypes in Prelude (#119)
* Add arbitrary instances for newtypes in Prelude, excluding Endo * Fix instances * Add instance for Endo * Remove redundant type class constraint in Endo Arbitrary instance
1 parent 990fa1c commit 7bdc476

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

src/Test/QuickCheck/Arbitrary.purs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,16 @@ import Data.Lazy (Lazy, defer, force)
3030
import Data.List (List)
3131
import Data.List.NonEmpty (NonEmptyList(..))
3232
import Data.Maybe (Maybe(..), fromJust)
33+
import Data.Monoid.Additive (Additive(..))
34+
import Data.Monoid.Conj (Conj(..))
35+
import Data.Monoid.Disj (Disj(..))
36+
import Data.Monoid.Dual (Dual(..))
37+
import Data.Monoid.Endo (Endo(..))
38+
import Data.Monoid.Multiplicative (Multiplicative(..))
3339
import Data.Newtype (wrap)
3440
import Data.NonEmpty (NonEmpty(..))
41+
import Data.Semigroup.First (First(..))
42+
import Data.Semigroup.Last (Last(..))
3543
import Data.String (split)
3644
import Data.String.CodeUnits (charAt, fromCharArray)
3745
import Data.String.NonEmpty (NonEmptyString)
@@ -143,6 +151,30 @@ instance coarbFunction :: (Arbitrary a, Coarbitrary b) => Coarbitrary (a -> b) w
143151
xs <- arbitrary
144152
coarbitrary (map f (xs :: Array a)) gen
145153

154+
instance arbFirst :: Arbitrary a => Arbitrary (First a) where
155+
arbitrary = First <$> arbitrary
156+
157+
instance arbLast :: Arbitrary a => Arbitrary (Last a) where
158+
arbitrary = Last <$> arbitrary
159+
160+
instance arbAdditive :: Arbitrary a => Arbitrary (Additive a) where
161+
arbitrary = Additive <$> arbitrary
162+
163+
instance arbMultiplicative :: Arbitrary a => Arbitrary (Multiplicative a) where
164+
arbitrary = Multiplicative <$> arbitrary
165+
166+
instance arbConj :: Arbitrary a => Arbitrary (Conj a) where
167+
arbitrary = Conj <$> arbitrary
168+
169+
instance arbDisj :: Arbitrary a => Arbitrary (Disj a) where
170+
arbitrary = Disj <$> arbitrary
171+
172+
instance arbDual :: Arbitrary a => Arbitrary (Dual a) where
173+
arbitrary = Dual <$> arbitrary
174+
175+
instance arbEndo :: Arbitrary (c a a) => Arbitrary (Endo c a) where
176+
arbitrary = Endo <$> arbitrary
177+
146178
instance arbTuple :: (Arbitrary a, Arbitrary b) => Arbitrary (Tuple a b) where
147179
arbitrary = Tuple <$> arbitrary <*> arbitrary
148180

0 commit comments

Comments
 (0)