40 lines
912 B
Go
40 lines
912 B
Go
package test
|
|
|
|
import "testing"
|
|
|
|
import "github.com/firestuff/subcoding/asm"
|
|
import "github.com/firestuff/subcoding/vm"
|
|
|
|
func assembleAndExecute(t *testing.T, src string) *vm.State {
|
|
prog, err := asm.AssembleString(src)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
state, err := vm.NewState(prog)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = state.Execute()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
return state
|
|
}
|
|
|
|
func expectGlobalMemory(t *testing.T, state *vm.State, i uint64, expected uint64) {
|
|
actual := state.GlobalMemory().MustReadUnsigned(i)
|
|
if actual != expected {
|
|
t.Fatalf("Global memory index %d: expected=%d actual=%d\n", i, expected, actual)
|
|
}
|
|
}
|
|
|
|
func expectGlobalMemorySigned(t *testing.T, state *vm.State, i uint64, expected int64) {
|
|
actual := int64(state.GlobalMemory().MustReadUnsigned(i))
|
|
if actual != expected {
|
|
t.Fatalf("Global memory index %d: expected=%d actual=%d\n", i, expected, actual)
|
|
}
|
|
}
|