Parcourir la source

Add limit tests for ReadBytesMaxInto

Jakob Borg il y a 11 ans
Parent
commit
711587492c
1 fichiers modifiés avec 25 ajouts et 0 suppressions
  1. 25 0
      xdr/xdr_test.go

+ 25 - 0
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)
+			}
+		}
+	}
+}