compiler: move tests from vm/tests

These don't belong to VM as they compile some Go code and run it in a VM. One
may call them integration tests, but I prefer to attribute them to
compiler. Moving these tests into pkg/compiler also allows to properly count
the compiler coverage they add:

-ok     github.com/CityOfZion/neo-go/pkg/compiler       (cached)        coverage: 69.7% of statements
+ok     github.com/CityOfZion/neo-go/pkg/compiler       (cached)        coverage: 84.2% of statements

This change also fixes `contant` typo and removes fake packages exposed to the
public by moving foo/bar/foobar into the testdata directory.
This commit is contained in:
Roman Khimov 2019-12-23 17:05:34 +03:00
parent 629c6a7333
commit 094c8474b7
19 changed files with 18 additions and 18 deletions

135
pkg/compiler/assign_test.go Normal file
View file

@ -0,0 +1,135 @@
package compiler_test
import (
"math/big"
"testing"
)
var assignTestCases = []testCase{
{
"chain define",
`
package foo
func Main() int {
x := 4
y := x
z := y
foo := z
bar := foo
return bar
}
`,
big.NewInt(4),
},
{
"simple assign",
`
package foo
func Main() int {
x := 4
x = 8
return x
}
`,
big.NewInt(8),
},
{
"add assign",
`
package foo
func Main() int {
x := 4
x += 8
return x
}
`,
big.NewInt(12),
},
{
"sub assign",
`
package foo
func Main() int {
x := 4
x -= 2
return x
}
`,
big.NewInt(2),
},
{
"mul assign",
`
package foo
func Main() int {
x := 4
x *= 2
return x
}
`,
big.NewInt(8),
},
{
"div assign",
`
package foo
func Main() int {
x := 4
x /= 2
return x
}
`,
big.NewInt(2),
},
{
"add assign binary expr",
`
package foo
func Main() int {
x := 4
x += 6 + 2
return x
}
`,
big.NewInt(12),
},
{
"add assign binary expr ident",
`
package foo
func Main() int {
x := 4
y := 5
x += 6 + y
return x
}
`,
big.NewInt(15),
},
{
"decl assign",
`
package foo
func Main() int {
var x int = 4
return x
}
`,
big.NewInt(4),
},
{
"multi assign",
`
package foo
func Main() int {
x, y := 1, 2
return x + y
}
`,
big.NewInt(3),
},
}
func TestAssignments(t *testing.T) {
runTestCases(t, assignTestCases)
}