aboutsummaryrefslogtreecommitdiffstats
path: root/prog/prog_test.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-08-09 10:26:31 +0200
committerDmitry Vyukov <dvyukov@google.com>2017-08-09 10:28:10 +0200
commitc3ba5e72f5a8479dc1b0f50189f42842758597d5 (patch)
tree8129300e45d9453ecc5be34344a8c36b5cbc2a1f /prog/prog_test.go
parent0adfdffa8252c911afb71d348cafc5f35e4b3068 (diff)
prog: fix restoration of default arguments
Currently fails on: - pointers - VMAs - structs - fixed-size structs
Diffstat (limited to 'prog/prog_test.go')
-rw-r--r--prog/prog_test.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/prog/prog_test.go b/prog/prog_test.go
index 2d05058ea..369b8dc78 100644
--- a/prog/prog_test.go
+++ b/prog/prog_test.go
@@ -5,6 +5,7 @@ package prog
import (
"bytes"
+ "fmt"
"math/rand"
"testing"
"time"
@@ -44,6 +45,21 @@ func TestDefault(t *testing.T) {
}
}
+func TestDefaultCallArgs(t *testing.T) {
+ initTest(t)
+ for _, meta := range sys.CallMap {
+ // Ensure that we can restore all arguments of all calls.
+ prog := fmt.Sprintf("%v()", meta.Name)
+ p, err := Deserialize([]byte(prog))
+ if err != nil {
+ t.Fatalf("failed to restore default args in prog %q: %v", prog, err)
+ }
+ if len(p.Calls) != 1 || p.Calls[0].Meta.Name != meta.Name {
+ t.Fatalf("restored bad program from prog %q: %q", prog, p.Serialize())
+ }
+ }
+}
+
func TestSerialize(t *testing.T) {
rs, iters := initTest(t)
for i := 0; i < iters; i++ {