{-# OPTIONS_GHC -Wno-orphans #-}
module Hedgehog.Range.Defaults.Orphans
() where
import Data.Default (Default(..))
import Hedgehog.Range (Range)
import Hedgehog.Range qualified as Range
import Morley.Michelson.ErrorPos (Pos(..))
import Morley.Michelson.Typed (T(..), Value'(..))
import Morley.Michelson.Untyped (StackRef(..))
import Morley.Tezos.Core (Mutez(..), Timestamp, timestampFromSeconds, timestampToSeconds)
import Hedgehog.Range.Tezos.Core.Timestamp
import Test.Cleveland.Instances ()
instance Default (Range Pos) where
def :: Range Pos
def = Word -> Pos
Pos (Word -> Pos) -> Range Word -> Range Pos
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Range Word
forall a. (Bounded a, Integral a) => Range a
Range.linearBounded
instance Default (Range StackRef) where
def :: Range StackRef
def = Natural -> StackRef
StackRef (Natural -> StackRef) -> Range Natural -> Range StackRef
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Natural -> Natural -> Range Natural
forall a. Integral a => a -> a -> Range a
Range.linear Natural
0 (Word64 -> Natural
forall a b. (Integral a, Integral b, CheckIntSubType a b) => a -> b
fromIntegral (Word64 -> Natural) -> Word64 -> Natural
forall a b. (a -> b) -> a -> b
$ forall a. Bounded a => a
maxBound @Word64)
instance Default (Range Mutez) where
def :: Range Mutez
def = Range Mutez
forall a. (Bounded a, Integral a) => Range a
Range.linearBounded
instance Default (Range Timestamp) where
def :: Range Timestamp
def = Integer -> Timestamp
timestampFromSeconds (Integer -> Timestamp) -> Range Integer -> Range Timestamp
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
Integer -> Integer -> Range Integer
forall a. Integral a => a -> a -> Range a
Range.linear (Timestamp -> Integer
forall a. Integral a => Timestamp -> a
timestampToSeconds Timestamp
minTimestamp) (Timestamp -> Integer
forall a. Integral a => Timestamp -> a
timestampToSeconds Timestamp
maxTimestamp)
instance Default (Range (Value' instr 'TInt)) where
def :: Range (Value' instr 'TInt)
def = Integer -> Value' instr 'TInt
forall (instr :: [T] -> [T] -> *). Integer -> Value' instr 'TInt
VInt (Integer -> Value' instr 'TInt)
-> Range Integer -> Range (Value' instr 'TInt)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Integer -> Integer -> Range Integer
forall a. Integral a => a -> a -> a -> Range a
Range.linearFrom Integer
0 Integer
-1000 Integer
1000
instance Default (Range (Value' instr 'TNat)) where
def :: Range (Value' instr 'TNat)
def = Natural -> Value' instr 'TNat
forall (instr :: [T] -> [T] -> *). Natural -> Value' instr 'TNat
VNat (Natural -> Value' instr 'TNat)
-> Range Natural -> Range (Value' instr 'TNat)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Natural -> Natural -> Natural -> Range Natural
forall a. Integral a => a -> a -> a -> Range a
Range.linearFrom Natural
0 Natural
0 Natural
1000