module Foundation.Check.Arbitrary
( Arbitrary(..)
) where
import Foundation.Internal.Base
import Foundation.Internal.Natural
import Foundation.Check.Gen
import Foundation.Random
class Arbitrary a where
arbitrary :: Gen a
arbitraryBounded :: Bounded b => Gen b
arbitraryBounded = undefined
instance Arbitrary Int where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Integer where
arbitrary = undefined
instance Arbitrary Natural where
arbitrary = undefined
instance Arbitrary Word64 where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Word32 where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Word16 where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Word8 where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Int64 where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Int32 where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Int16 where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Int8 where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Char where
arbitrary = genWithRng getRandomPrimType
instance Arbitrary Bool where
arbitrary = undefined
instance (Arbitrary a, Arbitrary b)
=> Arbitrary (a,b) where
arbitrary = (,) <$> arbitrary <*> arbitrary
instance (Arbitrary a, Arbitrary b, Arbitrary c)
=> Arbitrary (a,b,c) where
arbitrary = (,,) <$> arbitrary <*> arbitrary <*> arbitrary
instance (Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d)
=> Arbitrary (a,b,c,d) where
arbitrary = (,,,) <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
instance (Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d, Arbitrary e)
=> Arbitrary (a,b,c,d,e) where
arbitrary = (,,,,) <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
instance (Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d, Arbitrary e, Arbitrary f)
=> Arbitrary (a,b,c,d,e,f) where
arbitrary = (,,,,,) <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary