content: {-# LANGUAGE DeriveGeneric        #-}
  {-# LANGUAGE FlexibleContexts     #-}
  {-# LANGUAGE FlexibleInstances    #-}
  {-# LANGUAGE NoImplicitPrelude    #-}
  {-# LANGUAGE OverloadedStrings    #-}
  {-# LANGUAGE RecordWildCards      #-}
  {-# LANGUAGE ScopedTypeVariables  #-}
  {-# LANGUAGE UndecidableInstances #-}
  
  {-# OPTIONS_GHC -fno-warn-orphans #-}
  
  -- | Arbitrary instances and generators for SSC types.
  
  module Test.Pos.Infra.Arbitrary.Ssc
         (
         ) where
  
  import           Test.QuickCheck (Arbitrary (..))
  import           Test.QuickCheck.Arbitrary.Generic (genericArbitrary,
                       genericShrink)
  
  import           Pos.Chain.Ssc (MCCommitment (..), MCOpening (..),
                       MCShares (..), MCVssCertificate (..))
  import           Pos.Infra.Communication.Types.Relay (DataMsg (..))
  
  import           Test.Pos.Chain.Ssc.Arbitrary ()
  
  ------------------------------------------------------------------------------------------
  -- Message types
  ------------------------------------------------------------------------------------------
  
  instance Arbitrary (DataMsg MCCommitment) where
      arbitrary = genericArbitrary
      shrink = genericShrink
  
  instance Arbitrary (DataMsg MCOpening) where
      arbitrary = genericArbitrary
      shrink = genericShrink
  
  instance Arbitrary (DataMsg MCShares) where
      arbitrary = genericArbitrary
      shrink = genericShrink
  
  instance Arbitrary (DataMsg MCVssCertificate) where
      arbitrary = genericArbitrary
      shrink = genericShrink
  