diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-12-15 15:17:13 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-12-15 15:17:13 +0100 |
| commit | def91db3fe955168c82038ac2ee39783e81a2af0 (patch) | |
| tree | b6cbf100001e7b9fe34a8e2eb4ab00438f3e0154 /prog/encoding_test.go | |
| parent | 7a944a0a666587f229291814b30644cc0859674c (diff) | |
prog, pkg/csource: more readable serialization for strings
Always serialize strings in readable format (non-hex).
Serialize binary data in readable format in more cases.
Fixes #792
Diffstat (limited to 'prog/encoding_test.go')
| -rw-r--r-- | prog/encoding_test.go | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/prog/encoding_test.go b/prog/encoding_test.go index ac670a8ab..f828123db 100644 --- a/prog/encoding_test.go +++ b/prog/encoding_test.go @@ -28,23 +28,25 @@ func setToArray(s map[string]struct{}) []string { func TestSerializeData(t *testing.T) { t.Parallel() r := rand.New(rand.NewSource(0)) - for i := 0; i < 1e4; i++ { - data := make([]byte, r.Intn(4)) - for i := range data { - data[i] = byte(r.Intn(256)) - } - buf := new(bytes.Buffer) - serializeData(buf, data) - p := newParser(nil, buf.Bytes(), true) - if !p.Scan() { - t.Fatalf("parser does not scan") - } - data1, err := p.deserializeData() - if err != nil { - t.Fatalf("failed to deserialize %q -> %s: %v", data, buf.Bytes(), err) - } - if !bytes.Equal(data, data1) { - t.Fatalf("corrupted data %q -> %s -> %q", data, buf.Bytes(), data1) + for _, readable := range []bool{false, true} { + for i := 0; i < 1e3; i++ { + data := make([]byte, r.Intn(4)) + for i := range data { + data[i] = byte(r.Intn(256)) + } + buf := new(bytes.Buffer) + serializeData(buf, data, readable) + p := newParser(nil, buf.Bytes(), true) + if !p.Scan() { + t.Fatalf("parser does not scan") + } + data1, err := p.deserializeData() + if err != nil { + t.Fatalf("failed to deserialize %q -> %s: %v", data, buf.Bytes(), err) + } + if !bytes.Equal(data, data1) { + t.Fatalf("corrupted data %q -> %s -> %q", data, buf.Bytes(), data1) + } } } } @@ -253,6 +255,18 @@ func TestDeserialize(t *testing.T) { input: `test$auto0(AUTO, &AUTO={AUTO, AUTO, AUTO}, AUTO, 0x0)`, err: regexp.MustCompile(`wrong type \*prog\.IntType for AUTO`), }, + { + input: `test$str0(&AUTO="303100090a0d7022273a")`, + output: `test$str0(&(0x7f0000000040)='01\x00\t\n\rp\"\':')`, + }, + { + input: `test$blob0(&AUTO="303100090a0d7022273a")`, + output: `test$blob0(&(0x7f0000000040)='01\x00\t\n\rp\"\':')`, + }, + { + input: `test$blob0(&AUTO="3031000a0d7022273a01")`, + output: `test$blob0(&(0x7f0000000040)="3031000a0d7022273a01")`, + }, } buf := make([]byte, ExecBufferSize) for _, test := range tests { |
