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  }