36 lines
581 B
Go
36 lines
581 B
Go
package test
|
|
|
|
import "testing"
|
|
|
|
import "github.com/firestuff/subcoding/asm"
|
|
import "github.com/firestuff/subcoding/vm"
|
|
|
|
func TestLoop(t *testing.T) {
|
|
prog, err := asm.AssembleString(`
|
|
functions:
|
|
- - [add, f0, 1]
|
|
- [call, +1]
|
|
- [ltu, f0, 3]
|
|
- [jmpt, -3]
|
|
|
|
- - [add, g0, 1]
|
|
`)
|
|
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)
|
|
}
|
|
|
|
if state.GlobalMemory().MustReadUnsigned(0) != 3 {
|
|
t.Fatalf("Expected 3, found %d\n", state.GlobalMemory().MustReadUnsigned(0))
|
|
}
|
|
}
|