summaryrefslogtreecommitdiff
path: root/interpreter/dump_test.go
diff options
context:
space:
mode:
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)
+ }
+}