neo-go/pkg/compiler/import_test.go

92 lines
1.7 KiB
Go
Raw Permalink Normal View History

package compiler_test
2018-04-22 18:11:37 +00:00
import (
"math/big"
"strings"
2018-04-22 18:11:37 +00:00
"testing"
"github.com/nspcc-dev/neo-go/pkg/compiler"
"github.com/stretchr/testify/require"
2018-04-22 18:11:37 +00:00
)
func TestImportFunction(t *testing.T) {
src := `
package somethingelse
import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/foo"
2018-04-22 18:11:37 +00:00
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"
2018-04-22 18:11:37 +00:00
func Main() int {
b := bar.Bar{
X: 4,
}
return b.Y
}
`
2020-05-20 13:31:10 +00:00
eval(t, src, big.NewInt(0))
2018-04-22 18:11:37 +00:00
}
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)
}
2021-03-04 11:36:15 +00:00
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)
}