2019-12-23 14:05:34 +00:00
|
|
|
package compiler_test
|
2018-04-22 18:11:37 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"math/big"
|
2023-11-21 16:31:31 +00:00
|
|
|
"strings"
|
2018-04-22 18:11:37 +00:00
|
|
|
"testing"
|
2023-11-21 16:31:31 +00:00
|
|
|
|
|
|
|
"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
|
|
|
|
|
2020-03-03 14:21:42 +00:00
|
|
|
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
|
|
|
|
|
2020-03-03 14:21:42 +00:00
|
|
|
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
|
|
|
}
|
2018-05-06 06:03:26 +00:00
|
|
|
|
|
|
|
func TestMultipleDirFileImport(t *testing.T) {
|
|
|
|
src := `
|
|
|
|
package hello
|
|
|
|
|
2020-03-03 14:21:42 +00:00
|
|
|
import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/foobar"
|
2018-05-06 06:03:26 +00:00
|
|
|
|
|
|
|
func Main() bool {
|
|
|
|
ok := foobar.OtherBool()
|
|
|
|
return ok
|
|
|
|
}
|
|
|
|
`
|
2021-03-09 10:17:21 +00:00
|
|
|
eval(t, src, true)
|
2018-05-06 06:03:26 +00:00
|
|
|
}
|
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))
|
|
|
|
}
|
2023-11-21 16:31:31 +00:00
|
|
|
|
|
|
|
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)
|
|
|
|
}
|