|
|
@@ -665,6 +665,26 @@ func TestDecodeWithByteReader(t *testing.T) {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+func testDecodeWithEncReader(t *testing.T, n int) {
|
|
|
+ s := strings.Repeat("0", n)
|
|
|
+ _, r, _ := EncodeToReader(s)
|
|
|
+ var decoded string
|
|
|
+ err := Decode(r, &decoded)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("Unexpected decode error with n=%v: %v", n, err)
|
|
|
+ }
|
|
|
+ if decoded != s {
|
|
|
+ t.Errorf("Decode mismatch with n=%v", n)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// This is a regression test checking that decoding from encReader
|
|
|
+// works for RLP values of size 8192 bytes or more.
|
|
|
+func TestDecodeWithEncReader(t *testing.T) {
|
|
|
+ testDecodeWithEncReader(t, 8188) // length with header is 8191
|
|
|
+ testDecodeWithEncReader(t, 8189) // length with header is 8192
|
|
|
+}
|
|
|
+
|
|
|
// plainReader reads from a byte slice but does not
|
|
|
// implement ReadByte. It is also not recognized by the
|
|
|
// size validation. This is useful to test how the decoder
|