{-# 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 era) , SafeToHash (TxWits era) ) => Spec txSizeSpec :: forall era. (EraTx era, Arbitrary (Tx 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 era -> Expectation) -> Spec forall prop. (HasCallStack, Testable prop) => String -> prop -> Spec prop String "should match the size of the cbor encoding" ((Tx era -> Expectation) -> Spec) -> (Tx era -> Expectation) -> Spec forall a b. (a -> b) -> a -> b $ \(Tx era tx :: Tx era) -> do let txSize :: Integer txSize = Tx era -> Integer forall era. (EraTx era, SafeToHash (TxWits era)) => Tx era -> Integer sizeTxForFeeCalculation Tx era tx Integer txSize Integer -> Integer -> Expectation forall a. (HasCallStack, Show a, Eq a) => a -> a -> Expectation `shouldBe` Tx era tx Tx era -> Getting Integer (Tx era) Integer -> Integer forall s a. s -> Getting a s a -> a ^. Getting Integer (Tx era) Integer forall era. EraTx era => SimpleGetter (Tx era) Integer SimpleGetter (Tx era) Integer sizeTxF