{-| Module : Data.Number.ER.BasicTypes.Tests.Generate Description : (testing) generating values for tests Copyright : (c) 2007-2008 Michal Konecny License : BSD3 Maintainer : mik@konecny.aow.cz Stability : experimental Portability : portable Instances of Arbitrary so that values can be randomly generated for use in QuickCheck tests. -} module Data.Number.ER.BasicTypes.Tests.Generate where import Data.Number.ER.BasicTypes import Data.Number.ER.BasicTypes.ExtendedInteger import Data.Number.ER.BasicTypes.PlusMinus import Test.QuickCheck hiding (two, three) data Nat10 = Nat10 Int deriving (Show) data Nat100 = Nat100 Int deriving (Show) data Ix10 = Ix10 EffortIndex deriving (Show) data Ix20 = Ix20 EffortIndex deriving (Show) data Gran100 = Gran100 Granularity deriving (Show) data Gran1000 = Gran1000 Granularity deriving (Show) data SmallRatio = SmallRatio Int Int deriving (Show) instance (Arbitrary Nat10) where arbitrary = do ix <- choose (0,10) return $ Nat10 ix coarbitrary (Nat10 ix) = error "ER.BasicTypes.Tests.Generate: coarbitrary not implemented for Nat10" instance (Arbitrary Nat100) where arbitrary = do ix <- choose (0,100) return $ Nat100 ix coarbitrary (Nat100 ix) = error "ER.BasicTypes.Tests.Generate: coarbitrary not implemented for Nat100" instance (Arbitrary Ix20) where arbitrary = do ix <- choose (2,20) return $ Ix20 ix coarbitrary (Ix20 ix) = error "ER.BasicTypes.Tests.Generate: coarbitrary not implemented for Ix20" instance (Arbitrary Ix10) where arbitrary = do ix <- choose (1,10) return $ Ix10 ix coarbitrary (Ix10 ix) = error "ER.BasicTypes.Tests.Generate: coarbitrary not implemented for Ix10" instance (Arbitrary PlusMinus) where arbitrary = do isPlus <- arbitrary case isPlus of True -> return Plus False -> return Minus coarbitrary pm = error "ER.BasicTypes.Tests.Generate: coarbitrary not implemented for PlusMinus" instance (Arbitrary SmallRatio) where arbitrary = do num <- choose (-1000000,1000000) denom <- choose (1,1000000) return $ SmallRatio num denom coarbitrary (SmallRatio num denom) = error "ERChebPoly: Generate: Arbitrary: coarbitrary not implemented for SmallRatio"