{-# LANGUAGE TemplateHaskell #-}

module Hedgehog.Gen.JSON.Ranges where

import           Control.Lens
import           Hedgehog
import           Protolude

newtype NumberRange = NumberRange
  { unNumberRange :: Range Double
  }

newtype IntegerRange = IntegerRange
  { unIntegerRange :: Range Integer
  }

newtype StringRange = StringRange
  { unStringRange :: Range Int
  }

newtype ArrayRange = ArrayRange
  { unArrayRange :: Range Int
  }

newtype ObjectRange = ObjectRange
  { unObjectRange :: Range Int
  }

data Ranges = Ranges
  { _numberRange  :: NumberRange
  , _integerRange :: IntegerRange
  , _stringRange  :: StringRange
  , _arrayRange   :: ArrayRange
  , _objectRange  :: ObjectRange
  }

makeLenses ''Ranges