diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-08-09 10:26:31 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-08-09 10:28:10 +0200 |
| commit | c3ba5e72f5a8479dc1b0f50189f42842758597d5 (patch) | |
| tree | 8129300e45d9453ecc5be34344a8c36b5cbc2a1f /prog/prog_test.go | |
| parent | 0adfdffa8252c911afb71d348cafc5f35e4b3068 (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.go | 16 |
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++ { |
