packages feed

cleveland-0.1.0: morley-test/Test/Interpreter/StackRef.hs

-- SPDX-FileCopyrightText: 2020 Tocqueville Group
--
-- SPDX-License-Identifier: LicenseRef-MIT-TQ

-- | Interpreter tests involving 'StackRef'.

module Test.Interpreter.StackRef
  ( test_mkStackRef
  ) where

import Data.Default (def)
import Test.Tasty (TestTree)

import Morley.Michelson.Typed
import Test.Cleveland

test_mkStackRef :: TestTree
test_mkStackRef =
  testScenarioOnEmulator "does not segfault" $ scenario do
    handle <- originateTypedSimple @() @() @() "test_contract" () contract
    call handle CallDefault ()
  where
    stackRef = PrintComment . one . Right $ mkStackRef @1

    contract :: Contract 'TUnit 'TUnit
    contract = Contract
      { cCode = contractCode
      , cStoreNotes = starNotes
      , cParamNotes = starParamNotes
      , cEntriesOrder = def
      , cViews = def
      }

    contractCode :: ContractCode 'TUnit 'TUnit
    contractCode =
      CAR `Seq` DUP `Seq` Ext (PRINT stackRef) `Seq`
      DROP `Seq` NIL `Seq` PAIR