github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/net/http2/fixed_buffer_test.go (about) 1 // Copyright 2014 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package http2 6 7 import ( 8 "reflect" 9 "testing" 10 ) 11 12 var bufferReadTests = []struct { 13 buf fixedBuffer 14 read, wn int 15 werr error 16 wp []byte 17 wbuf fixedBuffer 18 }{ 19 { 20 fixedBuffer{[]byte{'a', 0}, 0, 1}, 21 5, 1, nil, []byte{'a'}, 22 fixedBuffer{[]byte{'a', 0}, 0, 0}, 23 }, 24 { 25 fixedBuffer{[]byte{0, 'a'}, 1, 2}, 26 5, 1, nil, []byte{'a'}, 27 fixedBuffer{[]byte{0, 'a'}, 0, 0}, 28 }, 29 { 30 fixedBuffer{[]byte{'a', 'b'}, 0, 2}, 31 1, 1, nil, []byte{'a'}, 32 fixedBuffer{[]byte{'a', 'b'}, 1, 2}, 33 }, 34 { 35 fixedBuffer{[]byte{}, 0, 0}, 36 5, 0, errReadEmpty, []byte{}, 37 fixedBuffer{[]byte{}, 0, 0}, 38 }, 39 } 40 41 func TestBufferRead(t *testing.T) { 42 for i, tt := range bufferReadTests { 43 read := make([]byte, tt.read) 44 n, err := tt.buf.Read(read) 45 if n != tt.wn { 46 t.Errorf("#%d: wn = %d want %d", i, n, tt.wn) 47 continue 48 } 49 if err != tt.werr { 50 t.Errorf("#%d: werr = %v want %v", i, err, tt.werr) 51 continue 52 } 53 read = read[:n] 54 if !reflect.DeepEqual(read, tt.wp) { 55 t.Errorf("#%d: read = %+v want %+v", i, read, tt.wp) 56 } 57 if !reflect.DeepEqual(tt.buf, tt.wbuf) { 58 t.Errorf("#%d: buf = %+v want %+v", i, tt.buf, tt.wbuf) 59 } 60 } 61 } 62 63 var bufferWriteTests = []struct { 64 buf fixedBuffer 65 write, wn int 66 werr error 67 wbuf fixedBuffer 68 }{ 69 { 70 buf: fixedBuffer{ 71 buf: []byte{}, 72 }, 73 wbuf: fixedBuffer{ 74 buf: []byte{}, 75 }, 76 }, 77 { 78 buf: fixedBuffer{ 79 buf: []byte{1, 'a'}, 80 }, 81 write: 1, 82 wn: 1, 83 wbuf: fixedBuffer{ 84 buf: []byte{0, 'a'}, 85 w: 1, 86 }, 87 }, 88 { 89 buf: fixedBuffer{ 90 buf: []byte{'a', 1}, 91 r: 1, 92 w: 1, 93 }, 94 write: 2, 95 wn: 2, 96 wbuf: fixedBuffer{ 97 buf: []byte{0, 0}, 98 w: 2, 99 }, 100 }, 101 { 102 buf: fixedBuffer{ 103 buf: []byte{}, 104 }, 105 write: 5, 106 werr: errWriteFull, 107 wbuf: fixedBuffer{ 108 buf: []byte{}, 109 }, 110 }, 111 } 112 113 func TestBufferWrite(t *testing.T) { 114 for i, tt := range bufferWriteTests { 115 n, err := tt.buf.Write(make([]byte, tt.write)) 116 if n != tt.wn { 117 t.Errorf("#%d: wrote %d bytes; want %d", i, n, tt.wn) 118 continue 119 } 120 if err != tt.werr { 121 t.Errorf("#%d: error = %v; want %v", i, err, tt.werr) 122 continue 123 } 124 if !reflect.DeepEqual(tt.buf, tt.wbuf) { 125 t.Errorf("#%d: buf = %+v; want %+v", i, tt.buf, tt.wbuf) 126 } 127 } 128 }