summaryrefslogtreecommitdiff
path: root/parser/dump_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'parser/dump_test.go')
-rw-r--r--parser/dump_test.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/parser/dump_test.go b/parser/dump_test.go
new file mode 100644
index 0000000..db86c48
--- /dev/null
+++ b/parser/dump_test.go
@@ -0,0 +1,48 @@
+package parser_test
+
+import (
+ "testing"
+
+ "github.com/mvertes/parscan/parser"
+)
+
+func TestDump(t *testing.T) {
+ initProgram := "var a int = 2+1; a"
+ interp := parser.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 = parser.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)
+ }
+}