ouroboros-consensus-0.21.0.0: Consensus layer for the Ouroboros blockchain protocol
Safe HaskellSafe-Inferred
LanguageHaskell2010

Test.Util.Orphans.Arbitrary

Synopsis

Documentation

newtype SmallDiffTime Source #

Wrapper around NominalDiffTime with custom Arbitrary instance

The default Arbitrary instance for NominalDiffTime isn't very useful:

  • It tends to pick huge values
  • It tends not to pick integer values
  • It does not shrink

Our custom instance

  • Picks values between 0 and (1000 * 20 * 10) seconds:
  • Maximum segment length: 1000
  • Maximum slot length: 20 seconds
  • Maximum number of segments: 10
  • With a 0.1 second precision
  • Shrinks

genLimitedEpochSizeGen EpochSize Source #

The tests for CumulEpochSizes requires that the sum of a list of these values does not overflow.

An epoch size must be > 0.

genLimitedSlotNoGen SlotNo Source #

The functions slotAtTime and timeUntilNextSlot suffer from arithmetic overflow for very large values, so generate values that avoid overflow when used in these two functions. The largest value generated is still sufficently large to allow for 5e12 years worth of slots at a slot interval of 20 seconds.

genSmallSlotNoGen SlotNo Source #

Generate a small SlotNo for the state machine tests. The runtime of the StateMachine prop_sequential tests is proportional the the upper bound.

Time

genNominalDiffTime50YearsGen NominalDiffTime Source #

Picks time span between 0 seconds and (roughly) 50 years

Note - Arbitrary instance for NominalDiffTime comes from quickcheck-instances and it uses a much wider timespan.

genUTCTime50YearsGen UTCTime Source #

Picks moment between dawnOfTime and (roughly) 50 years later

Note - Arbitrary instance for UTCTime comes from quickcheck-instances and it uses a much wider timespan.

Orphan instances

Arbitrary SlotLength Source #

Length between 0.001 and 20 seconds, millisecond granularity

Instance details

Arbitrary Bound Source # 
Instance details

Arbitrary QueryVersion Source # 
Instance details

Arbitrary ClockSkew Source # 
Instance details

Arbitrary NumCoreNodes Source # 
Instance details

Arbitrary ChunkNo Source #

This picks an EpochNo between 0 and 10000

We don't pick larger values because we're not interested in testing overflow due to huge epoch numbers and even huger slot numbers.

Instance details

Arbitrary ChunkSize Source #

Picks a ChunkSize between 1 and 100, and randomly choose to enable EBBs

Instance details

Arbitrary RelativeSlot Source # 
Instance details

Arbitrary ChunkSlot Source # 
Instance details

Arbitrary CacheConfig Source # 
Instance details

Arbitrary SizeInBytes Source # 
Instance details

(All SingleEraBlock (x ': xs), IsNonEmpty xs) ⇒ Arbitrary (MismatchEraInfo (x ': xs)) Source # 
Instance details

Methods

arbitraryGen (MismatchEraInfo (x ': xs)) Source #

shrinkMismatchEraInfo (x ': xs) → [MismatchEraInfo (x ': xs)] Source #

SingleEraBlock blk ⇒ Arbitrary (LedgerEraInfo blk) Source # 
Instance details

SingleEraBlock blk ⇒ Arbitrary (SingleEraInfo blk) Source # 
Instance details

(IsNonEmpty xs, SListI xs, All (Compose Arbitrary WrapChainDepState) xs) ⇒ Arbitrary (HardForkChainDepState xs) Source # 
Instance details

(IsNonEmpty xs, SListI xs, All (Compose Arbitrary LedgerState) xs) ⇒ Arbitrary (LedgerState (HardForkBlock xs)) Source # 
Instance details

Arbitrary a ⇒ Arbitrary (LoE a) Source # 
Instance details

Methods

arbitraryGen (LoE a) Source #

shrinkLoE a → [LoE a] Source #

Arbitrary (ApplyTxErr blk) ⇒ Arbitrary (WrapApplyTxErr blk) Source #

Forwarding

Instance details

Arbitrary (ChainDepState (BlockProtocol blk)) ⇒ Arbitrary (WrapChainDepState blk) Source #

Forwarding

Instance details

Arbitrary (HeaderHash blk) ⇒ Arbitrary (WrapHeaderHash blk) Source #

Forwarding

Instance details

Arbitrary (TipInfo blk) ⇒ Arbitrary (WrapTipInfo blk) Source #

Forwarding

Instance details

Arbitrary a ⇒ Arbitrary (I a) Source #

Forwarding

Instance details

Methods

arbitraryGen (I a) Source #

shrinkI a → [I a] Source #

Arbitrary (f blk) ⇒ Arbitrary (Current f blk) Source # 
Instance details

Methods

arbitraryGen (Current f blk) Source #

shrinkCurrent f blk → [Current f blk] Source #

Arbitrary (K Past blk) Source # 
Instance details

Methods

arbitraryGen (K Past blk) Source #

shrinkK Past blk → [K Past blk] Source #

(All (Compose Arbitrary f) xs, IsNonEmpty xs) ⇒ Arbitrary (NS f xs) Source # 
Instance details

Methods

arbitraryGen (NS f xs) Source #

shrinkNS f xs → [NS f xs] Source #

Arbitrary (SomeSecond BlockQuery blk) ⇒ Arbitrary (SomeSecond Query blk) Source # 
Instance details

(IsNonEmpty xs, All (Compose Arbitrary f) (x ': xs), All (Compose Arbitrary g) (x ': xs)) ⇒ Arbitrary (Mismatch f g (x ': xs)) Source # 
Instance details

Methods

arbitraryGen (Mismatch f g (x ': xs)) Source #

shrinkMismatch f g (x ': xs) → [Mismatch f g (x ': xs)] Source #

(IsNonEmpty xs, All (Compose Arbitrary f) xs, All (Compose Arbitrary g) xs) ⇒ Arbitrary (Telescope g f xs) Source # 
Instance details

Methods

arbitraryGen (Telescope g f xs) Source #

shrinkTelescope g f xs → [Telescope g f xs] Source #