1package httpd
2
3import (
4	"bytes"
5	"io/ioutil"
6	"testing"
7)
8
9func TestTruncatedReader_Read(t *testing.T) {
10	tests := []struct {
11		name string
12		in   []byte
13		n    int64
14		err  error
15	}{
16		{"in(1000)-max(1000)", make([]byte, 1000), 1000, nil},
17		{"in(1000)-max(1001)", make([]byte, 1000), 1001, nil},
18		{"in(1001)-max(1000)", make([]byte, 1001), 1000, errTruncated},
19		{"in(10000)-max(1000)", make([]byte, 1e5), 1e3, errTruncated},
20	}
21
22	for _, tc := range tests {
23		t.Run(tc.name, func(t *testing.T) {
24			b := truncateReader(bytes.NewReader(tc.in), tc.n)
25			_, err := ioutil.ReadAll(b)
26			if err != tc.err {
27				t.Errorf("unexpected error; got=%v, exp=%v", err, tc.err)
28			}
29		})
30	}
31}
32