summaryrefslogtreecommitdiff
path: root/parser/dump_test.go
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2024-03-21 16:29:17 +0100
committerGitHub <noreply@github.com>2024-03-21 16:29:17 +0100
commitbf2d6438e95c60946c64a6692e3dae1d836364a6 (patch)
tree041f819cdeae47e3ed624dc2ce233cd2c1d143aa /parser/dump_test.go
parent5da3a651ba08859ccc1cdf1094603411696c8df2 (diff)
parent7a9ac73037f207e3895332e5ba2b30d465c9c339 (diff)
Merge pull request #7 from ajnavarro/feature/simple-memory-dump
feat: Add simple Dump creation and recovery.
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)
+ }
+}