packages feed

keiro-dsl-0.18.0.0: test/conformance-bare-containers/Generated/BareContainers/StructuralConformance.hs

-- @generated by keiro-dsl 0.18.0.0 (language keiro-dsl 6) from context bare-containers structural conformance; do not edit.
module Generated.BareContainers.StructuralConformance
  ( structuralConformanceAssertions
  ) where

import Data.Aeson qualified as Aeson
import Data.Aeson.Types qualified as AesonTypes
import Data.List (nub)
import Data.List.NonEmpty qualified as NonEmpty
import Data.Map.Strict qualified as Map
import Data.Maybe (isJust, isNothing)
import Data.Proxy (Proxy (..))
import Data.Text qualified as T
import Keiki.Shape (CanonicalTypeName (..))
import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)
import Conformance.BareContainers.Bindings qualified as Bindings
import Conformance.BareContainers.Domain (BareEnvelope, MaybeText, NestedIds, TextList, TextMap)
import Generated.BareContainers.Nominals qualified as Nominals
import Generated.BareContainers.Structural.NominalLeaves qualified as NominalLeaves
import Generated.BareContainers.Structural.Shape.BareEnvelope qualified as ShapeBareEnvelope

structuralConformanceAssertions :: [(String, Bool)]
structuralConformanceAssertions =
  concat
    [ bareEnvelopeBindingAssertions
    , maybeTextBindingAssertions
    , nestedIdsBindingAssertions
    , textListBindingAssertions
    , textMapBindingAssertions
    , [("generated nominal canonical text: conformance.bare-containers.BareEnvelope.v1/ItemId", all (\(_, value) -> (case bindingToShape Bindings.bareEnvelopeBinding value of ShapeBareEnvelope.BareEnvelope _ _ _ field0_3 -> (all (\item1 -> maybe True (\item2 -> (NominalLeaves.encodeItemIdLeaf (item2) == Aeson.String (Nominals.itemIdText (item2)) && AesonTypes.parseEither NominalLeaves.parseItemIdLeaf (NominalLeaves.encodeItemIdLeaf (item2)) == Right (item2))) (item1)) (field0_3)))) (NonEmpty.toList (fixtureCases Bindings.bareEnvelopeFixtures)))]
    , [("generated nominal canonical text: conformance.bare-containers.NestedIds.v1/ItemId", all (\(_, value) -> all (\item0 -> maybe True (\item1 -> (NominalLeaves.encodeItemIdLeaf (item1) == Aeson.String (Nominals.itemIdText (item1)) && AesonTypes.parseEither NominalLeaves.parseItemIdLeaf (NominalLeaves.encodeItemIdLeaf (item1)) == Right (item1))) (item0)) (bindingToShape Bindings.nestedIdsBinding value)) (NonEmpty.toList (fixtureCases Bindings.nestedIdsFixtures)))]
    , [("fixture coverage: conformance.bare-containers.BareEnvelope.v1", coverageBareEnvelope)]
    , [("fixture coverage: conformance.bare-containers.MaybeText.v1", coverageMaybeText)]
    , [("fixture coverage: conformance.bare-containers.NestedIds.v1", coverageNestedIds)]
    , [("fixture coverage: conformance.bare-containers.TextList.v1", coverageTextList)]
    , [("fixture coverage: conformance.bare-containers.TextMap.v1", coverageTextMap)]
    ]

validFixtureLabels :: NonEmpty.NonEmpty (T.Text, value) -> Bool
validFixtureLabels cases =
  all (not . T.null) labels && length labels == length (nub labels)
  where
    labels = map fst (NonEmpty.toList cases)

bareEnvelopeBindingAssertions :: [(String, Bool)]
bareEnvelopeBindingAssertions =
  ("fixture labels: conformance.bare-containers.BareEnvelope.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.bare-containers.BareEnvelope.v1", canonicalTypeName (Proxy @BareEnvelope) == "conformance.bare-containers.BareEnvelope.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.bare-containers.BareEnvelope.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.bareEnvelopeBinding value)
      , ("binding shape round-trip: conformance.bare-containers.BareEnvelope.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.bareEnvelopeBinding (bindingToShape Bindings.bareEnvelopeBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.bareEnvelopeFixtures

maybeTextBindingAssertions :: [(String, Bool)]
maybeTextBindingAssertions =
  ("fixture labels: conformance.bare-containers.MaybeText.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.bare-containers.MaybeText.v1", canonicalTypeName (Proxy @MaybeText) == "conformance.bare-containers.MaybeText.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.bare-containers.MaybeText.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.maybeTextBinding value)
      , ("binding shape round-trip: conformance.bare-containers.MaybeText.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.maybeTextBinding (bindingToShape Bindings.maybeTextBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.maybeTextFixtures

nestedIdsBindingAssertions :: [(String, Bool)]
nestedIdsBindingAssertions =
  ("fixture labels: conformance.bare-containers.NestedIds.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.bare-containers.NestedIds.v1", canonicalTypeName (Proxy @NestedIds) == "conformance.bare-containers.NestedIds.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.bare-containers.NestedIds.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.nestedIdsBinding value)
      , ("binding shape round-trip: conformance.bare-containers.NestedIds.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.nestedIdsBinding (bindingToShape Bindings.nestedIdsBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.nestedIdsFixtures

textListBindingAssertions :: [(String, Bool)]
textListBindingAssertions =
  ("fixture labels: conformance.bare-containers.TextList.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.bare-containers.TextList.v1", canonicalTypeName (Proxy @TextList) == "conformance.bare-containers.TextList.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.bare-containers.TextList.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.textListBinding value)
      , ("binding shape round-trip: conformance.bare-containers.TextList.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.textListBinding (bindingToShape Bindings.textListBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.textListFixtures

textMapBindingAssertions :: [(String, Bool)]
textMapBindingAssertions =
  ("fixture labels: conformance.bare-containers.TextMap.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.bare-containers.TextMap.v1", canonicalTypeName (Proxy @TextMap) == "conformance.bare-containers.TextMap.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.bare-containers.TextMap.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.textMapBinding value)
      , ("binding shape round-trip: conformance.bare-containers.TextMap.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.textMapBinding (bindingToShape Bindings.textMapBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.textMapFixtures

coverageBareEnvelope :: Bool
coverageBareEnvelope = True

coverageMaybeText :: Bool
coverageMaybeText = any isNothing shapes && any isJust shapes
  where
    shapes = map (bindingToShape Bindings.maybeTextBinding . snd) (NonEmpty.toList (fixtureCases Bindings.maybeTextFixtures))

coverageNestedIds :: Bool
coverageNestedIds = any null shapes && any (not . null) shapes
  where
    shapes = map (bindingToShape Bindings.nestedIdsBinding . snd) (NonEmpty.toList (fixtureCases Bindings.nestedIdsFixtures))

coverageTextList :: Bool
coverageTextList = any null shapes && any (not . null) shapes
  where
    shapes = map (bindingToShape Bindings.textListBinding . snd) (NonEmpty.toList (fixtureCases Bindings.textListFixtures))

coverageTextMap :: Bool
coverageTextMap = any Map.null shapes && any (not . Map.null) shapes
  where
    shapes = map (bindingToShape Bindings.textMapBinding . snd) (NonEmpty.toList (fixtureCases Bindings.textMapFixtures))