{-# LANGUAGE DeriveAnyClass #-} -- | Tests on Lorentz contracts pretty-printing. module Test.Lorentz.Print ( test_Print_parameter_annotations ) where import Test.HUnit ((@?=)) import Test.Tasty (TestTree) import Test.Tasty.HUnit (testCase) import qualified Lorentz as L import Lorentz.EntryPoints import Lorentz.Run import Michelson.Printer.Util (buildRenderDoc) import Michelson.Typed import Michelson.Untyped (para) data MyEntryPoints1 = Do1 Integer | Do2 (Integer, Integer) | Do3 deriving stock Generic deriving anyclass IsoValue instance ParameterEntryPoints MyEntryPoints1 where parameterEntryPoints = pepPlain contract :: L.Contract MyEntryPoints1 () contract = L.drop L.# L.unit L.# L.nil L.# L.pair test_Print_parameter_annotations :: [TestTree] test_Print_parameter_annotations = [ testCase "Simple parameter" $ let typedContract = compileLorentzContract contract untypedContract = convertFullContract typedContract in buildRenderDoc (para untypedContract) @?= "or (int %do1) (or (pair %do2 int int) (unit %do3))" ]