packages feed

hydra-0.15.0: src/main/haskell/Hydra/Avro/Testing.hs

-- Note: this is an automatically generated file. Do not edit.

-- | Test case types for the bidirectional Avro coder

module Hydra.Avro.Testing where

import qualified Hydra.Avro.Schema as Schema
import qualified Hydra.Core as Core
import qualified Hydra.Json.Model as Model
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci

-- | A test case which maps an Avro schema to a Hydra type and compares the result
data TypeLevelForwardTestCase =
  TypeLevelForwardTestCase {
    -- | A human-readable description of what this test case covers
    typeLevelForwardTestCaseDescription :: String,
    -- | The input Avro schema
    typeLevelForwardTestCaseSchema :: Schema.Schema,
    -- | The expected Hydra type
    typeLevelForwardTestCaseType :: Core.Type}
  deriving (Eq, Ord, Read, Show)

_TypeLevelForwardTestCase = Core.Name "hydra.avro.testing.TypeLevelForwardTestCase"

_TypeLevelForwardTestCase_description = Core.Name "description"

_TypeLevelForwardTestCase_schema = Core.Name "schema"

_TypeLevelForwardTestCase_type = Core.Name "type"

-- | A test case which maps a Hydra type to an Avro schema and compares the result
data TypeLevelReverseTestCase =
  TypeLevelReverseTestCase {
    -- | A human-readable description of what this test case covers
    typeLevelReverseTestCaseDescription :: String,
    -- | The input Hydra type
    typeLevelReverseTestCaseType :: Core.Type,
    -- | The expected Avro schema
    typeLevelReverseTestCaseSchema :: Schema.Schema}
  deriving (Eq, Ord, Read, Show)

_TypeLevelReverseTestCase = Core.Name "hydra.avro.testing.TypeLevelReverseTestCase"

_TypeLevelReverseTestCase_description = Core.Name "description"

_TypeLevelReverseTestCase_type = Core.Name "type"

_TypeLevelReverseTestCase_schema = Core.Name "schema"

-- | A test case which maps an Avro schema to a Hydra type and back, verifying the result
data TypeLevelRoundTripAvroTestCase =
  TypeLevelRoundTripAvroTestCase {
    -- | A human-readable description of what this test case covers
    typeLevelRoundTripAvroTestCaseDescription :: String,
    -- | The original Avro schema
    typeLevelRoundTripAvroTestCaseSchema :: Schema.Schema,
    -- | The expected Avro schema after the round-trip, which may differ from the original due to normalization or information loss
    typeLevelRoundTripAvroTestCaseExpectedSchema :: Schema.Schema}
  deriving (Eq, Ord, Read, Show)

_TypeLevelRoundTripAvroTestCase = Core.Name "hydra.avro.testing.TypeLevelRoundTripAvroTestCase"

_TypeLevelRoundTripAvroTestCase_description = Core.Name "description"

_TypeLevelRoundTripAvroTestCase_schema = Core.Name "schema"

_TypeLevelRoundTripAvroTestCase_expectedSchema = Core.Name "expectedSchema"

-- | A test case which maps a Hydra type to an Avro schema and back, verifying the result
data TypeLevelRoundTripHydraTestCase =
  TypeLevelRoundTripHydraTestCase {
    -- | A human-readable description of what this test case covers
    typeLevelRoundTripHydraTestCaseDescription :: String,
    -- | The original Hydra type
    typeLevelRoundTripHydraTestCaseType :: Core.Type,
    -- | The expected Hydra type after the round-trip, which may differ from the original due to normalization or information loss
    typeLevelRoundTripHydraTestCaseExpectedType :: Core.Type}
  deriving (Eq, Ord, Read, Show)

_TypeLevelRoundTripHydraTestCase = Core.Name "hydra.avro.testing.TypeLevelRoundTripHydraTestCase"

_TypeLevelRoundTripHydraTestCase_description = Core.Name "description"

_TypeLevelRoundTripHydraTestCase_type = Core.Name "type"

_TypeLevelRoundTripHydraTestCase_expectedType = Core.Name "expectedType"

-- | A test case which encodes a JSON value as a Hydra term using an Avro schema
data TermLevelForwardTestCase =
  TermLevelForwardTestCase {
    -- | A human-readable description of what this test case covers
    termLevelForwardTestCaseDescription :: String,
    -- | The Avro schema describing the JSON value
    termLevelForwardTestCaseSchema :: Schema.Schema,
    -- | The input JSON value
    termLevelForwardTestCaseJson :: Model.Value,
    -- | The expected Hydra term
    termLevelForwardTestCaseTerm :: Core.Term}
  deriving (Eq, Ord, Read, Show)

_TermLevelForwardTestCase = Core.Name "hydra.avro.testing.TermLevelForwardTestCase"

_TermLevelForwardTestCase_description = Core.Name "description"

_TermLevelForwardTestCase_schema = Core.Name "schema"

_TermLevelForwardTestCase_json = Core.Name "json"

_TermLevelForwardTestCase_term = Core.Name "term"

-- | A test case which decodes a Hydra term to a JSON value using an Avro schema
data TermLevelReverseTestCase =
  TermLevelReverseTestCase {
    -- | A human-readable description of what this test case covers
    termLevelReverseTestCaseDescription :: String,
    -- | The Avro schema describing the expected JSON value
    termLevelReverseTestCaseSchema :: Schema.Schema,
    -- | The input Hydra term
    termLevelReverseTestCaseTerm :: Core.Term,
    -- | The expected JSON value
    termLevelReverseTestCaseJson :: Model.Value}
  deriving (Eq, Ord, Read, Show)

_TermLevelReverseTestCase = Core.Name "hydra.avro.testing.TermLevelReverseTestCase"

_TermLevelReverseTestCase_description = Core.Name "description"

_TermLevelReverseTestCase_schema = Core.Name "schema"

_TermLevelReverseTestCase_term = Core.Name "term"

_TermLevelReverseTestCase_json = Core.Name "json"

-- | A test case which encodes a JSON value as a Hydra term and decodes it back, verifying the result
data TermLevelRoundTripJsonTestCase =
  TermLevelRoundTripJsonTestCase {
    -- | A human-readable description of what this test case covers
    termLevelRoundTripJsonTestCaseDescription :: String,
    -- | The Avro schema describing the JSON value
    termLevelRoundTripJsonTestCaseSchema :: Schema.Schema,
    -- | The original JSON value
    termLevelRoundTripJsonTestCaseJson :: Model.Value,
    -- | The expected JSON value after the round-trip, which may differ from the original due to normalization
    termLevelRoundTripJsonTestCaseExpectedJson :: Model.Value}
  deriving (Eq, Ord, Read, Show)

_TermLevelRoundTripJsonTestCase = Core.Name "hydra.avro.testing.TermLevelRoundTripJsonTestCase"

_TermLevelRoundTripJsonTestCase_description = Core.Name "description"

_TermLevelRoundTripJsonTestCase_schema = Core.Name "schema"

_TermLevelRoundTripJsonTestCase_json = Core.Name "json"

_TermLevelRoundTripJsonTestCase_expectedJson = Core.Name "expectedJson"

-- | A test case which decodes a Hydra term to JSON and encodes it back, verifying the result
data TermLevelRoundTripTermTestCase =
  TermLevelRoundTripTermTestCase {
    -- | A human-readable description of what this test case covers
    termLevelRoundTripTermTestCaseDescription :: String,
    -- | The Hydra type of the term
    termLevelRoundTripTermTestCaseType :: Core.Type,
    -- | The original Hydra term
    termLevelRoundTripTermTestCaseTerm :: Core.Term,
    -- | The expected Hydra term after the round-trip, which may differ from the original due to normalization
    termLevelRoundTripTermTestCaseExpectedTerm :: Core.Term}
  deriving (Eq, Ord, Read, Show)

_TermLevelRoundTripTermTestCase = Core.Name "hydra.avro.testing.TermLevelRoundTripTermTestCase"

_TermLevelRoundTripTermTestCase_description = Core.Name "description"

_TermLevelRoundTripTermTestCase_type = Core.Name "type"

_TermLevelRoundTripTermTestCase_term = Core.Name "term"

_TermLevelRoundTripTermTestCase_expectedTerm = Core.Name "expectedTerm"

-- | A test case for union type encoding and decoding, covering the various strategies for representing unions in Avro
data UnionTestCase =
  UnionTestCase {
    -- | A human-readable description of what this test case covers
    unionTestCaseDescription :: String,
    -- | The Hydra union type
    unionTestCaseHydraType :: Core.Type,
    -- | The expected Avro schema (enum for all-unit unions, record with optional fields for general unions)
    unionTestCaseAvroSchema :: Schema.Schema,
    -- | Pairs of corresponding Hydra terms and JSON values for this union
    unionTestCaseTermPairs :: [(Core.Term, Model.Value)]}
  deriving (Eq, Ord, Read, Show)

_UnionTestCase = Core.Name "hydra.avro.testing.UnionTestCase"

_UnionTestCase_description = Core.Name "description"

_UnionTestCase_hydraType = Core.Name "hydraType"

_UnionTestCase_avroSchema = Core.Name "avroSchema"

_UnionTestCase_termPairs = Core.Name "termPairs"

-- | A test case for bidirectional name mapping between Hydra and Avro
data NameMappingTestCase =
  NameMappingTestCase {
    -- | A human-readable description of what this test case covers
    nameMappingTestCaseDescription :: String,
    -- | The Hydra name
    nameMappingTestCaseHydraName :: Core.Name,
    -- | The expected Avro qualified name (dotted string)
    nameMappingTestCaseAvroName :: String,
    -- | The expected Avro namespace, if any
    nameMappingTestCaseAvroNamespace :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)

_NameMappingTestCase = Core.Name "hydra.avro.testing.NameMappingTestCase"

_NameMappingTestCase_description = Core.Name "description"

_NameMappingTestCase_hydraName = Core.Name "hydraName"

_NameMappingTestCase_avroName = Core.Name "avroName"

_NameMappingTestCase_avroNamespace = Core.Name "avroNamespace"

-- | A test case which verifies that lossy conversions stash original information in annotations
data LossinessTestCase =
  LossinessTestCase {
    -- | A human-readable description of what this test case covers
    lossinessTestCaseDescription :: String,
    -- | The original Avro schema containing information that may be lost
    lossinessTestCaseOriginalSchema :: Schema.Schema,
    -- | The resulting Hydra type, which should carry annotations for any lost information
    lossinessTestCaseHydraType :: Core.Type,
    -- | The Avro schema recovered from the annotated Hydra type
    lossinessTestCaseRecoveredSchema :: Schema.Schema,
    -- | Whether the adapter reports this conversion as lossy
    lossinessTestCaseIsLossy :: Bool}
  deriving (Eq, Ord, Read, Show)

_LossinessTestCase = Core.Name "hydra.avro.testing.LossinessTestCase"

_LossinessTestCase_description = Core.Name "description"

_LossinessTestCase_originalSchema = Core.Name "originalSchema"

_LossinessTestCase_hydraType = Core.Name "hydraType"

_LossinessTestCase_recoveredSchema = Core.Name "recoveredSchema"

_LossinessTestCase_isLossy = Core.Name "isLossy"

-- | A test case for Avro schema serialization to and from JSON
data SchemaSerializationTestCase =
  SchemaSerializationTestCase {
    -- | A human-readable description of what this test case covers
    schemaSerializationTestCaseDescription :: String,
    -- | The Avro schema
    schemaSerializationTestCaseSchema :: Schema.Schema,
    -- | The expected JSON representation of the schema
    schemaSerializationTestCaseJson :: Model.Value}
  deriving (Eq, Ord, Read, Show)

_SchemaSerializationTestCase = Core.Name "hydra.avro.testing.SchemaSerializationTestCase"

_SchemaSerializationTestCase_description = Core.Name "description"

_SchemaSerializationTestCase_schema = Core.Name "schema"

_SchemaSerializationTestCase_json = Core.Name "json"

-- | A test case for the bidirectional Avro coder
data AvroTestCase =
  -- | Type-level forward mapping (Avro Schema -> Hydra Type)
  AvroTestCaseTypeLevelForward TypeLevelForwardTestCase |
  -- | Type-level reverse mapping (Hydra Type -> Avro Schema)
  AvroTestCaseTypeLevelReverse TypeLevelReverseTestCase |
  -- | Type-level round-trip starting from Avro (Avro -> Hydra -> Avro)
  AvroTestCaseTypeLevelRoundTripAvro TypeLevelRoundTripAvroTestCase |
  -- | Type-level round-trip starting from Hydra (Hydra -> Avro -> Hydra)
  AvroTestCaseTypeLevelRoundTripHydra TypeLevelRoundTripHydraTestCase |
  -- | Term-level forward mapping (JSON -> Hydra Term)
  AvroTestCaseTermLevelForward TermLevelForwardTestCase |
  -- | Term-level reverse mapping (Hydra Term -> JSON)
  AvroTestCaseTermLevelReverse TermLevelReverseTestCase |
  -- | Term-level round-trip starting from JSON (JSON -> Term -> JSON)
  AvroTestCaseTermLevelRoundTripJson TermLevelRoundTripJsonTestCase |
  -- | Term-level round-trip starting from a term (Term -> JSON -> Term)
  AvroTestCaseTermLevelRoundTripTerm TermLevelRoundTripTermTestCase |
  -- | Union-specific encoding and decoding
  AvroTestCaseUnion UnionTestCase |
  -- | Name mapping between Hydra and Avro
  AvroTestCaseNameMapping NameMappingTestCase |
  -- | Lossy conversion with annotation stashing
  AvroTestCaseLossiness LossinessTestCase |
  -- | Schema serialization to and from JSON
  AvroTestCaseSchemaSerialization SchemaSerializationTestCase
  deriving (Eq, Ord, Read, Show)

_AvroTestCase = Core.Name "hydra.avro.testing.AvroTestCase"

_AvroTestCase_typeLevelForward = Core.Name "typeLevelForward"

_AvroTestCase_typeLevelReverse = Core.Name "typeLevelReverse"

_AvroTestCase_typeLevelRoundTripAvro = Core.Name "typeLevelRoundTripAvro"

_AvroTestCase_typeLevelRoundTripHydra = Core.Name "typeLevelRoundTripHydra"

_AvroTestCase_termLevelForward = Core.Name "termLevelForward"

_AvroTestCase_termLevelReverse = Core.Name "termLevelReverse"

_AvroTestCase_termLevelRoundTripJson = Core.Name "termLevelRoundTripJson"

_AvroTestCase_termLevelRoundTripTerm = Core.Name "termLevelRoundTripTerm"

_AvroTestCase_union = Core.Name "union"

_AvroTestCase_nameMapping = Core.Name "nameMapping"

_AvroTestCase_lossiness = Core.Name "lossiness"

_AvroTestCase_schemaSerialization = Core.Name "schemaSerialization"