62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
// 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)
|
|
}
|
|
}
|
|
}
|