aboutsummaryrefslogtreecommitdiffstats
path: root/prog/encoding_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'prog/encoding_test.go')
-rw-r--r--prog/encoding_test.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/prog/encoding_test.go b/prog/encoding_test.go
index a46428526..39063a055 100644
--- a/prog/encoding_test.go
+++ b/prog/encoding_test.go
@@ -4,7 +4,9 @@
package prog
import (
+ "bytes"
"fmt"
+ "math/rand"
"reflect"
"regexp"
"sort"
@@ -20,6 +22,30 @@ func setToArray(s map[string]struct{}) []string {
return a
}
+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(buf.Bytes())
+ if !p.Scan() {
+ t.Fatalf("parser does not scan")
+ }
+ data1, err := deserializeData(p)
+ 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)
+ }
+ }
+}
+
func TestCallSet(t *testing.T) {
tests := []struct {
prog string
@@ -137,3 +163,24 @@ func TestDeserialize(t *testing.T) {
}
}
}
+
+func TestSerializeDeserialize(t *testing.T) {
+ target := initTargetTest(t, "test", "64")
+ tests := [][2]string{
+ {
+ `serialize(&(0x7f0000408000)={"6861736800000000000000000000", "4849000000"})`,
+ `serialize(&(0x7f0000408000)={'hash\x00', 'HI\x00'})`,
+ },
+ }
+ for _, test := range tests {
+ p, err := target.Deserialize([]byte(test[0]))
+ if err != nil {
+ t.Fatal(err)
+ }
+ data := p.Serialize()
+ test[1] += "\n"
+ if string(data) != test[1] {
+ t.Fatalf("\ngot : %s\nwant: %s", data, test[1])
+ }
+ }
+}