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