| // Copyright 2016 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package poll_test | |
| import ( | |
| "internal/poll" | |
| "reflect" | |
| "testing" | |
| ) | |
| func TestConsume(t *testing.T) { | |
| tests := []struct { | |
| in [][]byte | |
| consume int64 | |
| want [][]byte | |
| }{ | |
| { | |
| in: [][]byte{[]byte("foo"), []byte("bar")}, | |
| consume: 0, | |
| want: [][]byte{[]byte("foo"), []byte("bar")}, | |
| }, | |
| { | |
| in: [][]byte{[]byte("foo"), []byte("bar")}, | |
| consume: 2, | |
| want: [][]byte{[]byte("o"), []byte("bar")}, | |
| }, | |
| { | |
| in: [][]byte{[]byte("foo"), []byte("bar")}, | |
| consume: 3, | |
| want: [][]byte{[]byte("bar")}, | |
| }, | |
| { | |
| in: [][]byte{[]byte("foo"), []byte("bar")}, | |
| consume: 4, | |
| want: [][]byte{[]byte("ar")}, | |
| }, | |
| { | |
| in: [][]byte{nil, nil, nil, []byte("bar")}, | |
| consume: 1, | |
| want: [][]byte{[]byte("ar")}, | |
| }, | |
| { | |
| in: [][]byte{nil, nil, nil, []byte("foo")}, | |
| consume: 0, | |
| want: [][]byte{[]byte("foo")}, | |
| }, | |
| { | |
| in: [][]byte{nil, nil, nil}, | |
| consume: 0, | |
| want: [][]byte{}, | |
| }, | |
| } | |
| for i, tt := range tests { | |
| in := tt.in | |
| poll.Consume(&in, tt.consume) | |
| if !reflect.DeepEqual(in, tt.want) { | |
| t.Errorf("%d. after consume(%d) = %+v, want %+v", i, tt.consume, in, tt.want) | |
| } | |
| } | |
| } |