{-# LANGUAGE TypeApplications #-}
module Test.Cardano.Ledger.Alonzo.BinarySpec (spec) where
import Cardano.Ledger.Alonzo
import Cardano.Ledger.Alonzo.Genesis
import Cardano.Ledger.Alonzo.Scripts
import Cardano.Ledger.Alonzo.TxWits (Redeemers, TxDats)
import Cardano.Ledger.Core
import Cardano.Ledger.MemoBytes (zipMemoRawType)
import Cardano.Ledger.Plutus.Data (BinaryData, Data (..))
import Test.Cardano.Ledger.Alonzo.Arbitrary ()
import Test.Cardano.Ledger.Alonzo.Binary.RoundTrip (roundTripAlonzoCommonSpec)
import Test.Cardano.Ledger.Alonzo.Binary.Twiddle ()
import Test.Cardano.Ledger.Alonzo.TreeDiff ()
import Test.Cardano.Ledger.Binary.RoundTrip (
roundTripAnnTwiddledProperty,
roundTripTwiddledProperty,
)
import Test.Cardano.Ledger.Common
import Test.Cardano.Ledger.Core.Binary as Binary (
decoderEquivalenceCoreEraTypesSpec,
decoderEquivalenceEraSpec,
txSizeSpec,
)
import Test.Cardano.Ledger.Core.Binary.RoundTrip (roundTripEraSpec)
spec :: Spec
spec :: Spec
spec = do
String -> Spec -> Spec
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
describe String
"RoundTrip" (Spec -> Spec) -> Spec -> Spec
forall a b. (a -> b) -> a -> b
$ do
forall era.
(EraTx era, EraGov era, EraStake era, EraCertState era,
AlonzoEraScript era, StashedAVVMAddresses era ~ (),
Arbitrary (Tx era), Arbitrary (TxBody era), Arbitrary (TxOut era),
Arbitrary (TxCert era), Arbitrary (TxWits era),
Arbitrary (TxAuxData era), Arbitrary (Value era),
Arbitrary (CompactForm (Value era)), Arbitrary (Script era),
Arbitrary (GovState era), Arbitrary (PlutusPurpose AsIx era),
Arbitrary (PParams era), Arbitrary (PParamsUpdate era),
Arbitrary (CertState era), Arbitrary (InstantStake era),
Arbitrary (Accounts era), DecCBOR (Script era),
DecCBOR (TxAuxData era), DecCBOR (TxWits era),
DecCBOR (TxBody era), DecCBOR (Tx era), RuleListEra era) =>
Spec
roundTripAlonzoCommonSpec @AlonzoEra
forall era t.
(Era era, Show t, Eq t, EncCBOR t, DecCBOR t, Arbitrary t,
HasCallStack) =>
Spec
roundTripEraSpec @AlonzoEra @AlonzoGenesis
String -> Spec -> Spec
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"Twiddled" (Spec -> Spec) -> Spec -> Spec
forall a b. (a -> b) -> a -> b
$ do
String -> (Version -> Script AlonzoEra -> Property) -> Spec
forall prop.
(HasCallStack, Testable prop) =>
String -> prop -> Spec
prop String
"Script" ((Version -> Script AlonzoEra -> Property) -> Spec)
-> (Version -> Script AlonzoEra -> Property) -> Spec
forall a b. (a -> b) -> a -> b
$ forall t q.
(Twiddle t, DecCBOR (Annotator t), Testable q) =>
(t -> t -> q) -> Version -> t -> Property
roundTripAnnTwiddledProperty @(Script AlonzoEra) Script AlonzoEra -> Script AlonzoEra -> Bool
AlonzoScript AlonzoEra -> AlonzoScript AlonzoEra -> Bool
forall era.
Eq (PlutusScript era) =>
AlonzoScript era -> AlonzoScript era -> Bool
eqAlonzoScriptRaw
String -> (Version -> Data AlonzoEra -> Property) -> Spec
forall prop.
(HasCallStack, Testable prop) =>
String -> prop -> Spec
prop String
"Data" ((Version -> Data AlonzoEra -> Property) -> Spec)
-> (Version -> Data AlonzoEra -> Property) -> Spec
forall a b. (a -> b) -> a -> b
$ forall t q.
(Twiddle t, DecCBOR (Annotator t), Testable q) =>
(t -> t -> q) -> Version -> t -> Property
roundTripAnnTwiddledProperty @(Data AlonzoEra) ((RawType (Data AlonzoEra) -> RawType (Data AlonzoEra) -> Property)
-> Data AlonzoEra -> Data AlonzoEra -> Property
forall t1 t2 a.
(Memoized t1, Memoized t2) =>
(RawType t1 -> RawType t2 -> a) -> t1 -> t2 -> a
zipMemoRawType RawType (Data AlonzoEra) -> RawType (Data AlonzoEra) -> Property
PlutusData AlonzoEra -> PlutusData AlonzoEra -> Property
forall a. (Eq a, Show a) => a -> a -> Property
(===))
String -> (Version -> BinaryData AlonzoEra -> Property) -> Spec
forall prop.
(HasCallStack, Testable prop) =>
String -> prop -> Spec
prop String
"BinaryData" ((Version -> BinaryData AlonzoEra -> Property) -> Spec)
-> (Version -> BinaryData AlonzoEra -> Property) -> Spec
forall a b. (a -> b) -> a -> b
$ forall t.
(Show t, Eq t, Twiddle t, DecCBOR t) =>
Version -> t -> Property
roundTripTwiddledProperty @(BinaryData AlonzoEra)
String -> (Version -> TxBody AlonzoEra -> Property) -> Spec
forall prop.
(HasCallStack, Testable prop) =>
String -> prop -> Spec
prop String
"TxBody" ((Version -> TxBody AlonzoEra -> Property) -> Spec)
-> (Version -> TxBody AlonzoEra -> Property) -> Spec
forall a b. (a -> b) -> a -> b
$ forall t q.
(Twiddle t, DecCBOR (Annotator t), Testable q) =>
(t -> t -> q) -> Version -> t -> Property
roundTripAnnTwiddledProperty @(TxBody AlonzoEra) ((RawType (TxBody AlonzoEra)
-> RawType (TxBody AlonzoEra) -> Property)
-> TxBody AlonzoEra -> TxBody AlonzoEra -> Property
forall t1 t2 a.
(Memoized t1, Memoized t2) =>
(RawType t1 -> RawType t2 -> a) -> t1 -> t2 -> a
zipMemoRawType AlonzoTxBodyRaw -> AlonzoTxBodyRaw -> Property
RawType (TxBody AlonzoEra)
-> RawType (TxBody AlonzoEra) -> Property
forall a. (Eq a, Show a) => a -> a -> Property
(===))
String -> Spec -> Spec
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
describe String
"DecCBOR instances equivalence" (Spec -> Spec) -> Spec -> Spec
forall a b. (a -> b) -> a -> b
$ do
forall era.
(EraTx era, Arbitrary (Tx era), Arbitrary (TxBody era),
Arbitrary (TxWits era), Arbitrary (TxAuxData era),
Arbitrary (Script era), HasCallStack) =>
Spec
Binary.decoderEquivalenceCoreEraTypesSpec @AlonzoEra
forall era t.
(Era era, Eq t, ToCBOR t, DecCBOR (Annotator t), Arbitrary t,
Show t) =>
Spec
decoderEquivalenceEraSpec @AlonzoEra @(TxDats AlonzoEra)
forall era t.
(Era era, Eq t, ToCBOR t, DecCBOR (Annotator t), Arbitrary t,
Show t) =>
Spec
decoderEquivalenceEraSpec @AlonzoEra @(Redeemers AlonzoEra)
forall era.
(EraTx era, Arbitrary (Tx era), SafeToHash (TxWits era)) =>
Spec
Binary.txSizeSpec @AlonzoEra