    {-# OPTIONS_GHC -fno-warn-orphans #-}
    module Test.QuickCheck.Instances.Natural () where

    import Prelude ()

    import Numeric.Natural (Natural)

    import Test.QuickCheck
           (Arbitrary (..), CoArbitrary (..), arbitrarySizedNatural,
           coarbitraryIntegral, shrinkIntegral)
    import Test.QuickCheck.Function (Function (..), functionIntegral)

    -------------------------------------------------------------------------------
    -- nats
    -------------------------------------------------------------------------------

    instance Arbitrary Natural where
      arbitrary :: Gen Natural
    arbitrary = Gen Natural
    forall a. Integral a => Gen a
    arbitrarySizedNatural
      shrink :: Natural -> [Natural]
    shrink    = Natural -> [Natural]
    forall a. Integral a => a -> [a]
    shrinkIntegral

    instance CoArbitrary Natural where
      coarbitrary :: forall b. Natural -> Gen b -> Gen b
    coarbitrary = Natural -> Gen b -> Gen b
    forall a b. Integral a => a -> Gen b -> Gen b
    coarbitraryIntegral

    instance Function Natural where
      function :: forall b. (Natural -> b) -> Natural :-> b
    function = (Natural -> b) -> Natural :-> b
    forall a b. Integral a => (a -> b) -> a :-> b
    functionIntegral