package test import "testing" import "github.com/firestuff/subcoding/asm" import "github.com/firestuff/subcoding/vm" func TestRoundTrip(t *testing.T) { src := `functions: - - [nop] - [mov, g0, 1] - [add, f0, 5] - [mov, g1, -5] - [eq, 2, f0] - [jmpt, -3] - - [add, g0, -1] - [cal, +5] ` 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) } expectGlobalMemory(t, state, 0, 1) expectGlobalMemorySigned(t, state, 1, -5) dis, err := asm.Disassemble(prog) if err != nil { t.Fatal(err) } if dis != src { t.Fatalf("Disassembly mismatch: expected=%v actual=%v", src, dis) } }