summaryrefslogtreecommitdiff
path: root/interpreter/dump_test.go
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2025-11-27 12:40:35 +0100
committerMarc Vertes <mvertes@free.fr>2025-11-27 12:40:35 +0100
commitd99d69391eeae129cad2d5c2c90ce700db01b11c (patch)
tree0286d21e88919b9a9f86081d057b065c19f8ec38 /interpreter/dump_test.go
parentaed20c1c453e50f716c454c0bd7e4995a0f5d898 (diff)
chore: move compiler and interpreter in their own packages
Diffstat (limited to 'interpreter/dump_test.go')
-rw-r--r--interpreter/dump_test.go48
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)
+ }
+}