summaryrefslogtreecommitdiffstats
path: root/xdr
diff options
context:
space:
mode:
authorJakob Borg <jakob@nym.se>2014-04-09 09:49:47 +0200
committerJakob Borg <jakob@nym.se>2014-04-09 09:49:47 +0200
commit711587492c7dd2c150944b7bb68007d5660252c7 (patch)
tree51d7d625ed17152821d2994e541ae2d89a71e5d6 /xdr
parent536613f008fce2caa16757e4d3ab1485a0319149 (diff)
Add limit tests for ReadBytesMaxInto
Diffstat (limited to 'xdr')
-rw-r--r--xdr/xdr_test.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/xdr/xdr_test.go b/xdr/xdr_test.go
index 1540386172..4800427067 100644
--- a/xdr/xdr_test.go
+++ b/xdr/xdr_test.go
@@ -55,3 +55,28 @@ func TestBytesGiven(t *testing.T) {
t.Error(err)
}
}
+
+func TestReadMaxInto(t *testing.T) {
+ var max = 64
+ for tot := 32; tot < 128; tot++ {
+ for diff := -32; diff <= 32; diff++ {
+ var b = new(bytes.Buffer)
+ var r = NewReader(b)
+ var w = NewWriter(b)
+
+ var toWrite = make([]byte, tot)
+ w.WriteBytes(toWrite)
+
+ var buf = make([]byte, tot+diff)
+ var bs = r.ReadBytesMaxInto(max, buf)
+
+ if tot <= max {
+ if read := len(bs); read != tot {
+ t.Errorf("Incorrect read bytes, wrote=%d, buf=%d, max=%d, read=%d", tot, tot+diff, max, read)
+ }
+ } else if r.err != ErrElementSizeExceeded {
+ t.Errorf("Unexpected non-ErrElementSizeExceeded error for wrote=%d, max=%d: %v", tot, max, r.err)
+ }
+ }
+ }
+}