{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} module Test.Cardano.Ledger.Core.Binary ( decoderEquivalenceSpec, decoderEquivalenceEraSpec, txSizeSpec, decoderEquivalenceCoreEraTypesSpec, Mem, ) where import Cardano.Ledger.Core import Cardano.Ledger.MemoBytes (Mem) import Lens.Micro import Test.Cardano.Ledger.Binary (decoderEquivalenceSpec) import Test.Cardano.Ledger.Common import Test.Cardano.Ledger.Core.Arbitrary () import Test.Cardano.Ledger.Core.Binary.Annotator txSizeSpec :: forall era. ( EraTx era , Arbitrary (Tx TopTx era) , SafeToHash (TxWits era) ) => Spec txSizeSpec :: forall era. (EraTx era, Arbitrary (Tx TopTx era), SafeToHash (TxWits era)) => Spec txSizeSpec = String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Transaction size" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do String -> (Tx TopTx era -> Expectation) -> Spec forall prop. (HasCallStack, Testable prop) => String -> prop -> Spec prop String "should match the size of the cbor encoding" ((Tx TopTx era -> Expectation) -> Spec) -> (Tx TopTx era -> Expectation) -> Spec forall a b. (a -> b) -> a -> b $ \(Tx TopTx era tx :: Tx TopTx era) -> do let txSize :: Word32 txSize = Tx TopTx era -> Word32 forall era (l :: TxLevel). (EraTx era, HasCallStack, SafeToHash (TxWits era), Typeable l) => Tx l era -> Word32 forall (l :: TxLevel). (HasCallStack, SafeToHash (TxWits era), Typeable l) => Tx l era -> Word32 sizeTxForFeeCalculation Tx TopTx era tx Word32 txSize Word32 -> Word32 -> Expectation forall a. (HasCallStack, Show a, Eq a) => a -> a -> Expectation `shouldBe` Tx TopTx era tx Tx TopTx era -> Getting Word32 (Tx TopTx era) Word32 -> Word32 forall s a. s -> Getting a s a -> a ^. Getting Word32 (Tx TopTx era) Word32 forall era (l :: TxLevel). (EraTx era, HasCallStack) => SimpleGetter (Tx l era) Word32 SimpleGetter (Tx TopTx era) Word32 forall (l :: TxLevel). HasCallStack => SimpleGetter (Tx l era) Word32 sizeTxF