morley-0.1.0.4: src/Morley/Test/Dummy.hs
-- | Dummy data to be used in tests where it's not essential.
module Morley.Test.Dummy
( dummyNow
, dummyMaxSteps
, dummyContractEnv
, dummyOrigination
) where
import Michelson.Interpret (ContractEnv(..), RemainingSteps)
import Michelson.Untyped
import Morley.Runtime.GState (genesisAddress, genesisKeyHash)
import Tezos.Core (Timestamp(..), unsafeMkMutez)
-- | Dummy timestamp, can be used to specify current `NOW` value or
-- maybe something else.
dummyNow :: Timestamp
dummyNow = Timestamp 100
-- | Dummy value for maximal number of steps a contract can
-- make. Intentionally quite large, because most likely if you use
-- dummy value you don't want the interpreter to stop due to gas
-- exhaustion. On the other hand, it probably still prevents the
-- interpreter from working for eternity.
dummyMaxSteps :: RemainingSteps
dummyMaxSteps = 100500
-- | Dummy 'ContractEnv' with some reasonable hardcoded values. You
-- can override values you are interested in using record update
-- syntax.
dummyContractEnv :: ContractEnv
dummyContractEnv = ContractEnv
{ ceNow = dummyNow
, ceMaxSteps = dummyMaxSteps
, ceBalance = unsafeMkMutez 100
, ceContracts = mempty
, ceSelf = genesisAddress
, ceSource = genesisAddress
, ceSender = genesisAddress
, ceAmount = unsafeMkMutez 100
}
-- | 'OriginationOperation' with most data hardcoded to some
-- reasonable values. Contract and initial values must be passed
-- explicitly, because otherwise it hardly makes sense.
dummyOrigination
:: UntypedValue
-> UntypedContract
-> OriginationOperation
dummyOrigination storage contract = OriginationOperation
{ ooManager = genesisKeyHash
, ooDelegate = Nothing
, ooSpendable = False
, ooDelegatable = False
, ooBalance = unsafeMkMutez 100
, ooStorage = storage
, ooContract = contract
}