From 5b12be2ac77bf72fa18fa22c9e12776da9dbe33e Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Thu, 20 Jul 2023 11:51:18 +0300 Subject: [PATCH] compiler: add test for util.AbortMsg and util.AssertMsg Signed-off-by: Anna Shaleva --- pkg/compiler/interop_test.go | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/pkg/compiler/interop_test.go b/pkg/compiler/interop_test.go index c8f77ce24..b43e4824b 100644 --- a/pkg/compiler/interop_test.go +++ b/pkg/compiler/interop_test.go @@ -192,6 +192,60 @@ func TestAbort(t *testing.T) { require.True(t, v.HasFailed()) } +func TestAbortMsg(t *testing.T) { + src := `package foo + import "github.com/nspcc-dev/neo-go/pkg/interop/util" + func Main() int { + util.AbortMsg("some message") + return 1 + }` + v := vmAndCompile(t, src) + err := v.Run() + require.Error(t, err) + require.True(t, v.HasFailed()) + require.True(t, strings.Contains(err.Error(), "ABORTMSG is executed. Reason: some message"), err) +} + +func TestAssert(t *testing.T) { + src := `package foo + import "github.com/nspcc-dev/neo-go/pkg/interop/util" + func Main(ok bool) int { + util.Assert(ok) + return 1 + }` + + // assert OK + evalWithArgs(t, src, nil, []stackitem.Item{stackitem.Make(true)}, big.NewInt(1)) + + // assert FALSE + v := vmAndCompile(t, src) + v.Estack().PushVal(false) + err := v.Run() + require.Error(t, err) + require.True(t, v.HasFailed()) + require.True(t, strings.Contains(err.Error(), "ASSERT"), err) +} + +func TestAssertMsg(t *testing.T) { + src := `package foo + import "github.com/nspcc-dev/neo-go/pkg/interop/util" + func Main(ok bool) int { + util.AssertMsg(ok, "some message") + return 1 + }` + + // assert OK + evalWithArgs(t, src, nil, []stackitem.Item{stackitem.Make(true)}, big.NewInt(1)) + + // assert FALSE + v := vmAndCompile(t, src) + v.Estack().PushVal(false) + err := v.Run() + require.Error(t, err) + require.True(t, v.HasFailed()) + require.True(t, strings.Contains(err.Error(), "ASSERTMSG is executed with false result. Reason: some message"), err) +} + func spawnVM(t *testing.T, ic *interop.Context, src string) *vm.VM { b, di, err := compiler.CompileWithOptions("foo.go", strings.NewReader(src), nil) require.NoError(t, err)