symbiote-0.0.1: Data serialization, communication, and operation verification implementation

Copyright(c) 2019 Athan Clark
LicenseBSD-3-Style
Maintainerathan.clark@gmail.com
PortabilityGHC
Safe HaskellNone
LanguageHaskell2010

Test.Serialization.Symbiote.Core

Description

 
Synopsis

Documentation

class SymbioteOperation a o | a -> o where Source #

A type-level relation between a type and appropriate, testable operations on that type.

Associated Types

data Operation a :: * Source #

Methods

perform :: Operation a -> a -> o Source #

Instances
(Fractional a, Eq a) => SymbioteOperation (AbidesField a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesField a) :: Type Source #

(Num a, Eq a) => SymbioteOperation (AbidesEuclideanRing a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesEuclideanRing a) :: Type Source #

(Fractional a, Eq a) => SymbioteOperation (AbidesDivisionRing a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesDivisionRing a) :: Type Source #

(Num a, Eq a) => SymbioteOperation (AbidesCommutativeRing a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesCommutativeRing a) :: Type Source #

(Num a, Eq a) => SymbioteOperation (AbidesRing a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesRing a) :: Type Source #

(Num a, Eq a) => SymbioteOperation (AbidesSemiring a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesSemiring a) :: Type Source #

(Enum a, Ord a) => SymbioteOperation (AbidesEnum a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesEnum a) :: Type Source #

Ord a => SymbioteOperation (AbidesOrd a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesOrd a) :: Type Source #

Eq a => SymbioteOperation (AbidesEq a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesEq a) :: Type Source #

(Monoid a, Eq a) => SymbioteOperation (AbidesMonoid a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesMonoid a) :: Type Source #

(Semigroup a, Eq a) => SymbioteOperation (AbidesSemigroup a) Bool Source # 
Instance details

Defined in Test.Serialization.Symbiote.Abides

Associated Types

data Operation (AbidesSemigroup a) :: Type Source #

class SymbioteOperation a o => Symbiote a o s | a -> o where Source #

A serialization format for a particular type, and serialized data type.

Methods

encode :: a -> s Source #

decode :: s -> Maybe a Source #

encodeOut :: Proxy a -> o -> s Source #

decodeOut :: Proxy a -> s -> Maybe o Source #

encodeOp :: Operation a -> s Source #

decodeOp :: s -> Maybe (Operation a) Source #

Instances
(Serialize a, Serialize o, Serialize (Operation a), SymbioteOperation a o) => Symbiote a o ByteString Source # 
Instance details

Defined in Test.Serialization.Symbiote.Cereal.Lazy

(Serialize a, Serialize o, Serialize (Operation a), SymbioteOperation a o) => Symbiote a o ByteString Source # 
Instance details

Defined in Test.Serialization.Symbiote.Cereal

(ToJSON a, FromJSON a, ToJSON o, FromJSON o, ToJSON (Operation a), FromJSON (Operation a), SymbioteOperation a o) => Symbiote a o Value Source # 
Instance details

Defined in Test.Serialization.Symbiote.Aeson

SymbioteOperation a o => Symbiote a o (SimpleSerialization a o) Source # 
Instance details

Defined in Test.Serialization.Symbiote

newtype Topic Source #

Unique name of a type, for a suite of tests

Constructors

Topic Text 
Instances
Eq Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

Methods

(==) :: Topic -> Topic -> Bool #

(/=) :: Topic -> Topic -> Bool #

Ord Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

Methods

compare :: Topic -> Topic -> Ordering #

(<) :: Topic -> Topic -> Bool #

(<=) :: Topic -> Topic -> Bool #

(>) :: Topic -> Topic -> Bool #

(>=) :: Topic -> Topic -> Bool #

max :: Topic -> Topic -> Topic #

min :: Topic -> Topic -> Topic #

Show Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

Methods

showsPrec :: Int -> Topic -> ShowS #

show :: Topic -> String #

showList :: [Topic] -> ShowS #

IsString Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

Methods

fromString :: String -> Topic #

Arbitrary Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

Methods

arbitrary :: Gen Topic #

shrink :: Topic -> [Topic] #

ToJSON Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

ToJSONKey Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

FromJSON Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

FromJSONKey Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

Serialize Topic Source # 
Instance details

Defined in Test.Serialization.Symbiote.Core

Methods

put :: Putter Topic #

get :: Get Topic #

data SymbioteProtocol a s Source #

Protocol state for a particular topic

Constructors

MeGenerated 

Fields

ThemGenerating 

Fields

  • themGen :: Maybe (s, s)

    Remotely generated value and operation

NotStarted 
Finished 

data SymbioteGeneration a s Source #

Protocol generation state

Constructors

SymbioteGeneration 

Fields

data SymbioteState a o s Source #

Internal existential state of a registered topic with type's facilities

Constructors

SymbioteState 

Fields

data ExistsSymbiote s Source #

Constructors

(Arbitrary a, Arbitrary (Operation a), Symbiote a o s, Eq o) => ExistsSymbiote (SymbioteState a o s) 

runSymbioteT Source #

Arguments

:: Monad m 
=> SymbioteT s m () 
-> Bool

Is this the first peer to initiate the protocol?

-> m (Map Topic (ExistsSymbiote s))