瀏覽代碼

Forgot to put in regular bytes during decompression

obscuren 11 年之前
父節點
當前提交
5dcf59bdf4
共有 2 個文件被更改,包括 24 次插入0 次删除
  1. 2 0
      compression/rle/read_write.go
  2. 22 0
      compression/rle/read_write_test.go

+ 2 - 0
compression/rle/read_write.go

@@ -37,6 +37,8 @@ func Decompress(dat []byte) ([]byte, error) {
 			} else {
 				return nil, errors.New("error reading bytes. token encountered without proceeding bytes")
 			}
+		} else {
+			buf.WriteByte(dat[i])
 		}
 	}
 

+ 22 - 0
compression/rle/read_write_test.go

@@ -91,3 +91,25 @@ func TestCompressMulti(t *testing.T) {
 		t.Error("expected", exp, "got", res)
 	}
 }
+
+func TestCompressDecompress(t *testing.T) {
+	var in []byte
+
+	for i := 0; i < 20; i++ {
+		in = append(in, []byte{0, 0, 0, 0, 0}...)
+		in = append(in, crypto.Sha3([]byte(""))...)
+		in = append(in, crypto.Sha3([]byte{0x80})...)
+		in = append(in, []byte{123, 2, 19, 89, 245, 254, 255, token, 98, 233}...)
+		in = append(in, token)
+	}
+
+	c := Compress(in)
+	d, err := Decompress(c)
+	if err != nil {
+		t.Error(err)
+	}
+
+	if bytes.Compare(d, in) != 0 {
+		t.Error("multi failed\n", d, "\n", in)
+	}
+}