summaryrefslogtreecommitdiff
path: root/interp/dump_test.go
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2025-11-29 19:46:34 +0100
committerMarc Vertes <mvertes@free.fr>2025-11-29 19:46:34 +0100
commitf40a1c23467eef36f53635e525f8b25f591e8a45 (patch)
treebeae2442ecee1d734b9a676f7b176376a1d80af5 /interp/dump_test.go
parentfbc73922e9853d7e344e388f3fdfedb8fa323682 (diff)
chore: shorter name for packages, simpilfy vm values
Diffstat (limited to 'interp/dump_test.go')
-rw-r--r--interp/dump_test.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/interp/dump_test.go b/interp/dump_test.go
new file mode 100644
index 0000000..fbaa778
--- /dev/null
+++ b/interp/dump_test.go
@@ -0,0 +1,49 @@
+package interp_test
+
+import (
+ "testing"
+
+ "github.com/mvertes/parscan/interp"
+ "github.com/mvertes/parscan/lang/golang"
+)
+
+func TestDump(t *testing.T) {
+ initProgram := "var a int = 2+1; a"
+ intp := interp.NewInterpreter(golang.GoSpec)
+ r, e := intp.Eval(initProgram)
+ t.Log(r, e)
+ if e != nil {
+ t.Fatal(e)
+ }
+
+ r, e = intp.Eval("a = 100")
+ t.Log(r, e)
+ if e != nil {
+ t.Fatal(e)
+ }
+
+ d := intp.Dump()
+ t.Log(d)
+
+ intp = interp.NewInterpreter(golang.GoSpec)
+ r, e = intp.Eval(initProgram)
+ t.Log(r, e)
+ if e != nil {
+ t.Fatal(e)
+ }
+
+ e = intp.ApplyDump(d)
+ if e != nil {
+ t.Fatal(e)
+ }
+
+ r, e = intp.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)
+ }
+}