morley-1.0.0: test/Test/Interpreter/Apply.hs
-- | Tests for the 'APPLY' instruction.
module Test.Interpreter.Apply
( unit_Basic
, unit_Partially_applied_lambda_packed
) where
import Test.HUnit (Assertion)
import Text.Hex (decodeHex)
import Michelson.Test
import Michelson.Typed
unit_Basic :: Assertion
unit_Basic = do
(_, applyContract) <- importContract "contracts/apply.tz"
let
lam :: Instr '[ ToT (Integer, Integer) ] '[ ToT Integer ]
lam = DUP `Seq` CAR `Seq` DIP CDR `Seq` SUB
contractPropVal
applyContract (validateStorageIs @Integer 2)
dummyContractEnv (VLam $ RfNormal lam) (VC $ CvInt 0)
unit_Partially_applied_lambda_packed :: Assertion
unit_Partially_applied_lambda_packed = do
(_, partApplyContract) <-
importContract "contracts/partially-applied-lambda-packed.tz"
let expected = decodeHex "05020000000f0743035b0005034202000000020316"
?: error "Bad bytes"
contractProp @() @ByteString
partApplyContract (validateStorageIs @ByteString expected)
dummyContractEnv () ""