proto3-suite-0.9.4: tests/ArbitraryGeneratedTestTypes.hs
{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module ArbitraryGeneratedTestTypes where
import Data.String (fromString)
import qualified Data.Vector as V
import qualified Proto3.Suite.Types as DotProto
import Test.QuickCheck (listOf)
import qualified Test.QuickCheck as QC
import Test.QuickCheck.Arbitrary.Generic (genericArbitrary, Arbitrary (..))
import TestProto
import qualified TestProtoImport
import qualified TestProtoNegativeEnum
import qualified TestProtoOneof
import qualified TestProtoOneofImport
import qualified TestProtoOptional
instance Arbitrary Trivial where
arbitrary = Trivial <$> arbitrary
instance Arbitrary MultipleFields where
arbitrary =
MultipleFields
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> fmap fromString arbitrary
<*> arbitrary
instance Arbitrary WithEnum_TestEnum where
arbitrary = genericArbitrary
instance Arbitrary WithEnum where
arbitrary = WithEnum <$> arbitrary
instance Arbitrary WithNesting_Nested where
arbitrary =
WithNesting_Nested
<$> fmap fromString arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
instance Arbitrary WithNesting where
arbitrary = WithNesting <$> arbitrary
instance Arbitrary WithRepetition where
arbitrary = WithRepetition <$> arbitrary
instance Arbitrary WithRepeatedSigned where
arbitrary = WithRepeatedSigned <$> arbitrary <*> arbitrary
instance Arbitrary WithFixed where
arbitrary = WithFixed <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
instance Arbitrary WithBytes where
arbitrary = WithBytes <$> arbitrary <*> arbitrary
instance Arbitrary AllPackedTypes where
arbitrary = do
AllPackedTypes
<$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
<*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
<*> arbitrary <*> arbEnums <*> arbEnums
where
arbEnums = V.fromList <$> listOf (DotProto.Enumerated . Right <$> genericArbitrary)
instance Arbitrary SignedInts where
arbitrary = SignedInts <$> arbitrary <*> arbitrary
instance Arbitrary WithNestingRepeated where
arbitrary = WithNestingRepeated <$> arbitrary
shrink (WithNestingRepeated xs) = map (WithNestingRepeated . V.fromList) $
QC.shrinkList (const []) (V.toList xs)
-- It is too expensive to shrink the submessages.
instance Arbitrary WithNestingRepeated_Nested where
arbitrary =
WithNestingRepeated_Nested
<$> fmap fromString arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
instance Arbitrary WithNestingRepeatedInts where
arbitrary = WithNestingRepeatedInts <$> arbitrary
instance Arbitrary NestedInts where
arbitrary = NestedInts <$> arbitrary <*> arbitrary
instance Arbitrary OutOfOrderFields where
arbitrary =
OutOfOrderFields
<$> arbitrary
<*> fmap fromString arbitrary
<*> arbitrary
<*> fmap (fmap fromString) arbitrary
instance Arbitrary UsingImported where
arbitrary =
UsingImported
<$> arbitrary
<*> arbitrary
instance Arbitrary TestProtoImport.WithNesting where
arbitrary =
TestProtoImport.WithNesting
<$> arbitrary
<*> arbitrary
instance Arbitrary TestProtoImport.WithNesting_Nested where
arbitrary =
TestProtoImport.WithNesting_Nested
<$> arbitrary
<*> arbitrary
instance Arbitrary Wrapped where
arbitrary = Wrapped <$> arbitrary
instance Arbitrary TestProtoOneof.DummyMsg where
arbitrary =
TestProtoOneof.DummyMsg
<$> arbitrary
instance Arbitrary TestProtoOneof.Something where
arbitrary =
TestProtoOneof.Something
<$> arbitrary
<*> arbitrary
<*> arbitrary
instance Arbitrary TestProtoOneof.SomethingPickOne where
arbitrary =
QC.oneof
[ TestProtoOneof.SomethingPickOneName <$> fmap fromString arbitrary
, TestProtoOneof.SomethingPickOneSomeid <$> arbitrary
, TestProtoOneof.SomethingPickOneDummyMsg1 <$> arbitrary
, TestProtoOneof.SomethingPickOneDummyMsg2 <$> arbitrary
, TestProtoOneof.SomethingPickOneDummyEnum . DotProto.Enumerated . Right
<$> genericArbitrary
]
instance Arbitrary TestProtoOneof.WithImported where
arbitrary =
TestProtoOneof.WithImported
<$> arbitrary
instance Arbitrary TestProtoOneof.WithImportedPickOne where
arbitrary =
QC.oneof
[ TestProtoOneof.WithImportedPickOneDummyMsg1 <$> arbitrary
, TestProtoOneof.WithImportedPickOneWithOneof <$> arbitrary
]
instance Arbitrary TestProtoOneofImport.WithOneof where
arbitrary =
TestProtoOneofImport.WithOneof
<$> arbitrary
instance Arbitrary TestProtoOneofImport.WithOneofPickOne where
arbitrary =
QC.oneof
[ TestProtoOneofImport.WithOneofPickOneA <$> fmap fromString arbitrary
, TestProtoOneofImport.WithOneofPickOneB <$> arbitrary
]
instance Arbitrary TestProtoNegativeEnum.NegativeEnum where
arbitrary = QC.elements
[ TestProtoNegativeEnum.NegativeEnumNEGATIVE_ENUM_0
, TestProtoNegativeEnum.NegativeEnumNEGATIVE_ENUM_NEGATIVE_1
, TestProtoNegativeEnum.NegativeEnumNEGATIVE_ENUM_1
, TestProtoNegativeEnum.NegativeEnumNEGATIVE_ENUM_NEGATIVE_128
, TestProtoNegativeEnum.NegativeEnumNEGATIVE_ENUM_128
]
instance Arbitrary TestProtoNegativeEnum.WithNegativeEnum where
arbitrary =
TestProtoNegativeEnum.WithNegativeEnum
<$> arbitrary
instance Arbitrary TestProtoOptional.Submessage where
arbitrary =
TestProtoOptional.Submessage
<$> arbitrary
instance Arbitrary TestProtoOptional.WithOptional where
arbitrary =
TestProtoOptional.WithOptional
<$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary