{-# LANGUAGE FlexibleInstances #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Network.JSONRPC.Arbitrary where import Data.Text (Text) import qualified Data.Text as T import Network.JSONRPC.Data import Test.QuickCheck.Arbitrary import Test.QuickCheck.Gen instance Arbitrary Text where arbitrary :: Gen Text arbitrary = String -> Text T.pack (String -> Text) -> Gen String -> Gen Text forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen String forall a. Arbitrary a => Gen a arbitrary instance Arbitrary Ver where arbitrary :: Gen Ver arbitrary = [Ver] -> Gen Ver forall a. [a] -> Gen a elements [Ver V1, Ver V2] instance Arbitrary Request where arbitrary :: Gen Request arbitrary = [Gen Request] -> Gen Request forall a. [Gen a] -> Gen a oneof [ Ver -> Text -> Value -> Id -> Request Request (Ver -> Text -> Value -> Id -> Request) -> Gen Ver -> Gen (Text -> Value -> Id -> Request) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Ver forall a. Arbitrary a => Gen a arbitrary Gen (Text -> Value -> Id -> Request) -> Gen Text -> Gen (Value -> Id -> Request) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Text forall a. Arbitrary a => Gen a arbitrary Gen (Value -> Id -> Request) -> Gen Value -> Gen (Id -> Request) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Value forall a. Arbitrary a => Gen a arbitrary Gen (Id -> Request) -> Gen Id -> Gen Request forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Id forall a. Arbitrary a => Gen a arbitrary , Ver -> Text -> Value -> Request Notif (Ver -> Text -> Value -> Request) -> Gen Ver -> Gen (Text -> Value -> Request) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Ver forall a. Arbitrary a => Gen a arbitrary Gen (Text -> Value -> Request) -> Gen Text -> Gen (Value -> Request) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Text forall a. Arbitrary a => Gen a arbitrary Gen (Value -> Request) -> Gen Value -> Gen Request forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Value forall a. Arbitrary a => Gen a arbitrary ] instance Arbitrary Response where arbitrary :: Gen Response arbitrary = [Gen Response] -> Gen Response forall a. [Gen a] -> Gen a oneof [ Ver -> Value -> Id -> Response Response (Ver -> Value -> Id -> Response) -> Gen Ver -> Gen (Value -> Id -> Response) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Ver forall a. Arbitrary a => Gen a arbitrary Gen (Value -> Id -> Response) -> Gen Value -> Gen (Id -> Response) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Value forall a. Arbitrary a => Gen a arbitrary Gen (Id -> Response) -> Gen Id -> Gen Response forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Id forall a. Arbitrary a => Gen a arbitrary , Ver -> ErrorObj -> Id -> Response ResponseError (Ver -> ErrorObj -> Id -> Response) -> Gen Ver -> Gen (ErrorObj -> Id -> Response) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Ver forall a. Arbitrary a => Gen a arbitrary Gen (ErrorObj -> Id -> Response) -> Gen ErrorObj -> Gen (Id -> Response) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen ErrorObj forall a. Arbitrary a => Gen a arbitrary Gen (Id -> Response) -> Gen Id -> Gen Response forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Id forall a. Arbitrary a => Gen a arbitrary , Ver -> ErrorObj -> Response OrphanError (Ver -> ErrorObj -> Response) -> Gen Ver -> Gen (ErrorObj -> Response) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Ver forall a. Arbitrary a => Gen a arbitrary Gen (ErrorObj -> Response) -> Gen ErrorObj -> Gen Response forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen ErrorObj forall a. Arbitrary a => Gen a arbitrary ] instance Arbitrary ErrorObj where arbitrary :: Gen ErrorObj arbitrary = [Gen ErrorObj] -> Gen ErrorObj forall a. [Gen a] -> Gen a oneof [ String -> Int -> Value -> ErrorObj ErrorObj (String -> Int -> Value -> ErrorObj) -> Gen String -> Gen (Int -> Value -> ErrorObj) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen String forall a. Arbitrary a => Gen a arbitrary Gen (Int -> Value -> ErrorObj) -> Gen Int -> Gen (Value -> ErrorObj) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Int forall a. Arbitrary a => Gen a arbitrary Gen (Value -> ErrorObj) -> Gen Value -> Gen ErrorObj forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen Value forall a. Arbitrary a => Gen a arbitrary , Value -> ErrorObj ErrorVal (Value -> ErrorObj) -> Gen Value -> Gen ErrorObj forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Value forall a. Arbitrary a => Gen a arbitrary ] instance Arbitrary BatchRequest where arbitrary :: Gen BatchRequest arbitrary = [Gen BatchRequest] -> Gen BatchRequest forall a. [Gen a] -> Gen a oneof [ [Request] -> BatchRequest BatchRequest ([Request] -> BatchRequest) -> Gen [Request] -> Gen BatchRequest forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen [Request] forall a. Arbitrary a => Gen a arbitrary , Request -> BatchRequest SingleRequest (Request -> BatchRequest) -> Gen Request -> Gen BatchRequest forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Request forall a. Arbitrary a => Gen a arbitrary ] instance Arbitrary BatchResponse where arbitrary :: Gen BatchResponse arbitrary = [Gen BatchResponse] -> Gen BatchResponse forall a. [Gen a] -> Gen a oneof [ [Response] -> BatchResponse BatchResponse ([Response] -> BatchResponse) -> Gen [Response] -> Gen BatchResponse forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen [Response] forall a. Arbitrary a => Gen a arbitrary , Response -> BatchResponse SingleResponse (Response -> BatchResponse) -> Gen Response -> Gen BatchResponse forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Response forall a. Arbitrary a => Gen a arbitrary ] instance Arbitrary Message where arbitrary :: Gen Message arbitrary = [Gen Message] -> Gen Message forall a. [Gen a] -> Gen a oneof [ Request -> Message MsgRequest (Request -> Message) -> Gen Request -> Gen Message forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Request forall a. Arbitrary a => Gen a arbitrary , Response -> Message MsgResponse (Response -> Message) -> Gen Response -> Gen Message forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Response forall a. Arbitrary a => Gen a arbitrary , [Message] -> Message MsgBatch ([Message] -> Message) -> Gen [Message] -> Gen Message forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen [Message] batch ] where batch :: Gen [Message] batch = Gen Message -> Gen [Message] forall a. Gen a -> Gen [a] listOf (Gen Message -> Gen [Message]) -> Gen Message -> Gen [Message] forall a b. (a -> b) -> a -> b $ [Gen Message] -> Gen Message forall a. [Gen a] -> Gen a oneof [ Request -> Message MsgRequest (Request -> Message) -> Gen Request -> Gen Message forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Request forall a. Arbitrary a => Gen a arbitrary , Response -> Message MsgResponse (Response -> Message) -> Gen Response -> Gen Message forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Response forall a. Arbitrary a => Gen a arbitrary ] instance Arbitrary Id where arbitrary :: Gen Id arbitrary = Int -> Id IdInt (Int -> Id) -> Gen Int -> Gen Id forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Int forall a. (Bounded a, Random a) => Gen a arbitraryBoundedRandom