diff options
| author | Marc Vertes <mvertes@free.fr> | 2025-11-27 12:40:35 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2025-11-27 12:40:35 +0100 |
| commit | d99d69391eeae129cad2d5c2c90ce700db01b11c (patch) | |
| tree | 0286d21e88919b9a9f86081d057b065c19f8ec38 /interpreter/dump_test.go | |
| parent | aed20c1c453e50f716c454c0bd7e4995a0f5d898 (diff) | |
chore: move compiler and interpreter in their own packages
Diffstat (limited to 'interpreter/dump_test.go')
| -rw-r--r-- | interpreter/dump_test.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/interpreter/dump_test.go b/interpreter/dump_test.go new file mode 100644 index 0000000..dd172b9 --- /dev/null +++ b/interpreter/dump_test.go @@ -0,0 +1,48 @@ +package interpreter_test + +import ( + "testing" + + "github.com/mvertes/parscan/interpreter" +) + +func TestDump(t *testing.T) { + initProgram := "var a int = 2+1; a" + interp := interpreter.NewInterpreter(GoScanner) + r, e := interp.Eval(initProgram) + t.Log(r, e) + if e != nil { + t.Fatal(e) + } + + r, e = interp.Eval("a = 100") + t.Log(r, e) + if e != nil { + t.Fatal(e) + } + + d := interp.Dump() + t.Log(d) + + interp = interpreter.NewInterpreter(GoScanner) + r, e = interp.Eval(initProgram) + t.Log(r, e) + if e != nil { + t.Fatal(e) + } + + e = interp.ApplyDump(d) + if e != nil { + t.Fatal(e) + } + + r, e = interp.Eval("a = a + 1;a") + t.Log(r, e) + if e != nil { + t.Fatal(e) + } + + if r.Interface() != int(101) { + t.Fatalf("unexpected result: %v", r) + } +} |
