package compiler_test import ( "math/big" "testing" ) func TestBasicConstant(t *testing.T) { src := ` package foo const x = 10 func Main() int { return x + 2 } ` eval(t, src, big.NewInt(12)) } func TestShortHandMultiConst(t *testing.T) { src := ` package foo const ( z = 3 y = 2 x = 1 ) // should load al 3 constants in the Main. func Main() int { return x + z + y } ` eval(t, src, big.NewInt(6)) } func TestByteConstant(t *testing.T) { src := `package foo import "github.com/nspcc-dev/neo-go/pkg/interop/convert" const a byte = 0xFF func Main() int { x := convert.ToInteger(a) return x+1 }` eval(t, src, big.NewInt(0x100)) } func TestGlobalsWithFunctionParams(t *testing.T) { src := ` package foobar const ( // complex he o_O bar = "FOO" foo = "BAR" ) func something(x int) string { if x > 10 { return bar } return foo } func Main() string { trigger := 100 x := something(trigger) return x } ` eval(t, src, []byte("FOO")) } func TestIota(t *testing.T) { src := `package foo const ( a = 2 << iota b c = 11 ) func Main() int { return a + b + c }` eval(t, src, big.NewInt(17)) }