indigo-0.1.0.0: test/Test/Decomposition.hs
-- SPDX-FileCopyrightText: 2020 Tocqueville Group
--
-- SPDX-License-Identifier: LicenseRef-MIT-TQ
module Test.Decomposition
( test_Decomposition
, setDecomposedVariable
, setMaterializedVariable
, setDecomposedField
, pathSetDecomposedVariable
, pathSetMaterializedVariable
, pathSetDecomposedField
) where
import Prelude
import Hedgehog (Gen)
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
import Test.Tasty (TestTree)
import Michelson.Interpret (MichelsonFailed(..))
import Michelson.Test.Util (genTuple2)
import Michelson.Text (genMText, mt)
import Test.Code.Decomposition
import Test.Util
test_Decomposition :: [TestTree]
test_Decomposition =
[ testIndigoContract "Set storage to a Decomposed variable"
(genTuple2 genColor (genTuple2 genInteger genInteger))
genStorage
(validateContractSt setDecomposedVariableCheck)
setDecomposedVariable
pathSetDecomposedVariable
, testIndigoContract "Set storage to a Materialized variable"
(genTuple2 genColor (genTuple2 genInteger genInteger))
genStorage
(validateContractSt setMaterializedVariableCheck)
setMaterializedVariable
pathSetMaterializedVariable
, testIndigoContract "Set storage field"
(genTuple2 genColor genInteger)
genStorage
(validateContractSt setDecomposedFieldCheck)
setDecomposedField
pathSetDecomposedField
]
pathSetDecomposedVariable :: FilePath
pathSetDecomposedVariable = "test/contracts/golden/decomposed/set_decomposed_variable.tz"
pathSetMaterializedVariable :: FilePath
pathSetMaterializedVariable = "test/contracts/golden/decomposed/set_cell_variable.tz"
pathSetDecomposedField :: FilePath
pathSetDecomposedField = "test/contracts/golden/decomposed/set_decomposed_field.tz"
genInteger :: Gen Integer
genInteger = Gen.integral (Range.linearFrom 0 -1000 1000)
genMeta :: Gen Meta
genMeta = Meta <$> Gen.integral (Range.linearFrom 0 -1000 1000) <*> genMText
genColor :: Gen Color
genColor = Gen.enumBounded
genStorage :: Gen Storage
genStorage = Storage
<$> genColor
<*> Gen.integral (Range.linearFrom 0 -1000 1000)
<*> Gen.integral (Range.linearFrom 0 -1000 1000)
<*> genMeta
------------------------------
setDecomposedVariableCheck
:: (Color, (Integer, Integer))
-> Storage
-> Either MichelsonFailed Storage
setDecomposedVariableCheck (c, (x, y)) Storage{..} =
Right $ Storage c x y (Meta 0 (mDescr sMeta))
setMaterializedVariableCheck
:: (Color, (Integer, Integer))
-> Storage
-> Either MichelsonFailed Storage
setMaterializedVariableCheck (c, (x, y)) Storage{..} =
Right $ Storage c x y (Meta 0 [mt|"hello, Ivan!"|])
setDecomposedFieldCheck
:: (Color, Integer)
-> Storage
-> Either MichelsonFailed Storage
setDecomposedFieldCheck (c, w) Storage{..} =
Right $ Storage c sX sY (Meta w (mDescr sMeta))