github.com/coreos/mantle@v0.13.0/lang/bufpipe/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 // Licensed under the same terms as Go itself: 5 // https://github.com/golang/go/blob/master/LICENSE 6 7 package bufpipe 8 9 import ( 10 "reflect" 11 "testing" 12 ) 13 14 var bufferReadTests = []struct { 15 buf fixedBuffer 16 read, wn int 17 werr error 18 wp []byte 19 wbuf fixedBuffer 20 }{ 21 { 22 fixedBuffer{[]byte{'a', 0}, 0, 1}, 23 5, 1, nil, []byte{'a'}, 24 fixedBuffer{[]byte{'a', 0}, 0, 0}, 25 }, 26 { 27 fixedBuffer{[]byte{0, 'a'}, 1, 2}, 28 5, 1, nil, []byte{'a'}, 29 fixedBuffer{[]byte{0, 'a'}, 0, 0}, 30 }, 31 { 32 fixedBuffer{[]byte{'a', 'b'}, 0, 2}, 33 1, 1, nil, []byte{'a'}, 34 fixedBuffer{[]byte{'a', 'b'}, 1, 2}, 35 }, 36 { 37 fixedBuffer{[]byte{}, 0, 0}, 38 5, 0, errReadEmpty, []byte{}, 39 fixedBuffer{[]byte{}, 0, 0}, 40 }, 41 } 42 43 func TestBufferRead(t *testing.T) { 44 for i, tt := range bufferReadTests { 45 read := make([]byte, tt.read) 46 n, err := tt.buf.Read(read) 47 if n != tt.wn { 48 t.Errorf("#%d: wn = %d want %d", i, n, tt.wn) 49 continue 50 } 51 if err != tt.werr { 52 t.Errorf("#%d: werr = %v want %v", i, err, tt.werr) 53 continue 54 } 55 read = read[:n] 56 if !reflect.DeepEqual(read, tt.wp) { 57 t.Errorf("#%d: read = %+v want %+v", i, read, tt.wp) 58 } 59 if !reflect.DeepEqual(tt.buf, tt.wbuf) { 60 t.Errorf("#%d: buf = %+v want %+v", i, tt.buf, tt.wbuf) 61 } 62 } 63 } 64 65 var bufferWriteTests = []struct { 66 buf fixedBuffer 67 write, wn int 68 werr error 69 wbuf fixedBuffer 70 }{ 71 { 72 buf: fixedBuffer{ 73 buf: []byte{}, 74 }, 75 wbuf: fixedBuffer{ 76 buf: []byte{}, 77 }, 78 }, 79 { 80 buf: fixedBuffer{ 81 buf: []byte{1, 'a'}, 82 }, 83 write: 1, 84 wn: 1, 85 wbuf: fixedBuffer{ 86 buf: []byte{0, 'a'}, 87 w: 1, 88 }, 89 }, 90 { 91 buf: fixedBuffer{ 92 buf: []byte{'a', 1}, 93 r: 1, 94 w: 1, 95 }, 96 write: 2, 97 wn: 2, 98 wbuf: fixedBuffer{ 99 buf: []byte{0, 0}, 100 w: 2, 101 }, 102 }, 103 { 104 buf: fixedBuffer{ 105 buf: []byte{}, 106 }, 107 write: 5, 108 werr: errWriteFull, 109 wbuf: fixedBuffer{ 110 buf: []byte{}, 111 }, 112 }, 113 } 114 115 func TestBufferWrite(t *testing.T) { 116 for i, tt := range bufferWriteTests { 117 n, err := tt.buf.Write(make([]byte, tt.write)) 118 if n != tt.wn { 119 t.Errorf("#%d: wrote %d bytes; want %d", i, n, tt.wn) 120 continue 121 } 122 if err != tt.werr { 123 t.Errorf("#%d: error = %v; want %v", i, err, tt.werr) 124 continue 125 } 126 if !reflect.DeepEqual(tt.buf, tt.wbuf) { 127 t.Errorf("#%d: buf = %+v; want %+v", i, tt.buf, tt.wbuf) 128 } 129 } 130 }