Home | History | Annotate | Download | only in poll
      1 // Copyright 2016 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 poll_test
      6 
      7 import (
      8 	"internal/poll"
      9 	"reflect"
     10 	"testing"
     11 )
     12 
     13 func TestConsume(t *testing.T) {
     14 	tests := []struct {
     15 		in      [][]byte
     16 		consume int64
     17 		want    [][]byte
     18 	}{
     19 		{
     20 			in:      [][]byte{[]byte("foo"), []byte("bar")},
     21 			consume: 0,
     22 			want:    [][]byte{[]byte("foo"), []byte("bar")},
     23 		},
     24 		{
     25 			in:      [][]byte{[]byte("foo"), []byte("bar")},
     26 			consume: 2,
     27 			want:    [][]byte{[]byte("o"), []byte("bar")},
     28 		},
     29 		{
     30 			in:      [][]byte{[]byte("foo"), []byte("bar")},
     31 			consume: 3,
     32 			want:    [][]byte{[]byte("bar")},
     33 		},
     34 		{
     35 			in:      [][]byte{[]byte("foo"), []byte("bar")},
     36 			consume: 4,
     37 			want:    [][]byte{[]byte("ar")},
     38 		},
     39 		{
     40 			in:      [][]byte{nil, nil, nil, []byte("bar")},
     41 			consume: 1,
     42 			want:    [][]byte{[]byte("ar")},
     43 		},
     44 		{
     45 			in:      [][]byte{nil, nil, nil, []byte("foo")},
     46 			consume: 0,
     47 			want:    [][]byte{[]byte("foo")},
     48 		},
     49 		{
     50 			in:      [][]byte{nil, nil, nil},
     51 			consume: 0,
     52 			want:    [][]byte{},
     53 		},
     54 	}
     55 	for i, tt := range tests {
     56 		in := tt.in
     57 		poll.Consume(&in, tt.consume)
     58 		if !reflect.DeepEqual(in, tt.want) {
     59 			t.Errorf("%d. after consume(%d) = %+v, want %+v", i, tt.consume, in, tt.want)
     60 		}
     61 	}
     62 }
     63