-
Notifications
You must be signed in to change notification settings - Fork 56
/
bytepool_test.go
53 lines (41 loc) · 1.26 KB
/
bytepool_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package bpool
import "testing"
func TestBytePool(t *testing.T) {
var size int = 4
var width int = 10
bufPool := NewBytePool(size, width)
// Check the width
if bufPool.Width() != width {
t.Fatalf("bytepool width invalid: got %v want %v", bufPool.Width(), width)
}
// Check that retrieved buffer are of the expected width
b := bufPool.Get()
if len(b) != width {
t.Fatalf("bytepool length invalid: got %v want %v", len(b), width)
}
// Try putting some invalid buffers into pool
bufPool.Put(make([]byte, width-1))
bufPool.Put(make([]byte, width)[2:])
if len(bufPool.c) > 0 {
t.Fatal("bytepool should have rejected invalid packets")
}
// Try putting a short slice into pool
bufPool.Put(make([]byte, width)[:2])
if len(bufPool.c) != 1 {
t.Fatal("bytepool should have accepted short slice with sufficient capacity")
}
b = bufPool.Get()
if len(b) != width {
t.Fatalf("bytepool length invalid: got %v want %v", len(b), width)
}
// Fill the pool beyond the capped pool size.
for i := 0; i < size*2; i++ {
bufPool.Put(make([]byte, bufPool.w))
}
// Close the channel so we can iterate over it.
close(bufPool.c)
// Check the size of the pool.
if bufPool.NumPooled() != size {
t.Fatalf("bytepool size invalid: got %v want %v", len(bufPool.c), size)
}
}