plutus-tx-1.60.0.0: Libraries for Plutus Tx and its prelude
Safe HaskellSafe-Inferred
LanguageHaskell2010

PlutusTx.Test.Util.Compiled

Synopsis
  • type Program = CompiledCode ann -> Integer #

    The size of a CompiledCodeIn as measured in Flat bytes.

    This function serialises the code to ByteString and counts the number of bytes. It uses the same serialisation format as used by the ledger: CBOR(Flat(StripNames(Strip Annotations(UPLC))))

    Caveat: the SerialisedCode constructor of the CompiledCode type already contains a PLC program as ByteString, but it isn't the same byte representation as the one produced by serialiseCompiledCode function: in uses the NamedDeBruijn representation, which also stores names. On the mainnet we don't serialise names, only DeBruijn indices, so this function re-serialises the code to get the size in bytes that we would actually use on the mainnet.

toAnonDeBruijnTerm :: Term -> DefaultFun () #

Given a DeBruijn-named term, give every variable the name "v". If we later call unDeBruijn, that will rename the variables to things like "v123", where 123 is the relevant de Bruijn index.

compiledCodeToTerm :: DefaultFun a -> Term #

Just extract the body of a program wrapped in a CompiledCodeIn. We use this a lot.

cekResultMatchesHaskellValue :: DefaultUni hask => Term -> (forall r. (Eq r, Show r) => r -> r -> k) -> hask -> k #

Evaluate a PLC term and check that the result matches a given Haskell value (perhaps obtained by running the Haskell code that the term was compiled from). We evaluate the lifted Haskell value as well, because lifting may produce reducible terms. The function is polymorphic in the comparison operator so that we can use it with both HUnit Assertions and QuickCheck Properties.