package compiler_test import ( "math/big" "strings" "testing" "github.com/nspcc-dev/neo-go/pkg/compiler" "github.com/stretchr/testify/require" ) func TestImportFunction(t *testing.T) { src := ` package somethingelse import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/foo" func Main() int { i := foo.NewBar() return i } ` eval(t, src, big.NewInt(10)) } func TestImportStruct(t *testing.T) { src := ` package somethingwedontcareabout import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/bar" func Main() int { b := bar.Bar{ X: 4, } return b.Y } ` eval(t, src, big.NewInt(0)) } func TestMultipleDirFileImport(t *testing.T) { src := ` package hello import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/foobar" func Main() bool { ok := foobar.OtherBool() return ok } ` eval(t, src, true) } func TestImportNameSameAsOwn(t *testing.T) { src := `package foo import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/foo" func get3() int { return 3 } func Main() int { return get3() } func unused() int { return foo.Bar() }` eval(t, src, big.NewInt(3)) } func TestImportCycleDirect(t *testing.T) { src := ` package some import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/importcycle/pkg2" func Main() int { return pkg2.A } ` _, _, err := compiler.CompileWithOptions("some.go", strings.NewReader(src), nil) require.Error(t, err) } func TestImportCycleIndirect(t *testing.T) { src := ` package some import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/importcycle/pkg1" func Main() int { return pkg1.A } ` _, _, err := compiler.CompileWithOptions("some.go", strings.NewReader(src), nil) require.Error(t, err) }