-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcyclebuffer_test.go
108 lines (92 loc) · 2.23 KB
/
cyclebuffer_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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package limitedbuffer
import (
"testing"
"github.com/stretchr/testify/assert"
)
var (
b1 = []byte("X")
b2 = []byte("YY")
b3 = []byte("ZZZ")
b4 = []byte("VVVV")
b8 = []byte("ABCDEFGH")
b10 = []byte("0123456789")
)
func makeByteSlice(n int) []byte {
return make([]byte, n)
}
func TestNewCycleBuffer(t *testing.T) {
assert := assert.New(t)
const bufSize = 8
cb := NewCycleBuffer(bufSize)
status := cb.Status()
assert.Equal(bufSize, status.Capacity())
}
func TestCycleBufferReadWrite(t *testing.T) {
assert := assert.New(t)
const bufSize = 8
var status BufferStatus
var err error
var wn int
var rn int
cb := NewCycleBuffer(bufSize)
status = cb.Status()
assert.Equal(bufSize, status.Capacity())
t.Logf("#0 %v", cb)
status = cb.Status()
wn, err = cb.Write(b10)
assert.Nil(err)
assert.Equal(status.Capacity(), wn)
t.Logf("#1 %v", cb)
var r1 = makeByteSlice(1)
rn, err = cb.Read(r1) // read '0'
assert.Nil(err)
assert.Equal(rn, len(r1))
assert.Equal(r1[0], b10[0])
t.Logf("#2 %v", cb)
// cannot write
_, err = cb.Write(b10)
assert.NotNil(err)
var r3 = makeByteSlice(3)
rn, err = cb.Read(r3)
assert.Nil(err)
assert.Equal(rn, len(r3)) // read '123'
assert.Equal(r3[0:3], b10[1:4])
t.Logf("#3 %v", cb)
status = cb.Status()
wn, err = cb.Write(b10)
assert.Nil(err)
assert.Equal(status.FreeWriteSpace(), wn)
assert.True(cb.IsFull())
t.Logf("#4 %v", cb)
var r12 = makeByteSlice(12)
status = cb.Status()
rn, err = cb.Read(r12)
assert.Nil(err)
assert.Equal(status.UnreadSize(), rn)
t.Logf("#5 %v", cb)
}
func TestCycleBufferReadWrite2(t *testing.T) {
assert := assert.New(t)
const bufSize = 8
var status BufferStatus
var err error
var wn int
// var rn int
cb := NewCycleBuffer(bufSize)
status = cb.Status()
assert.Equal(bufSize, status.Capacity())
t.Logf("NewCycleBuffer(%d), %v", bufSize, cb)
t.Logf("Before Write 3 Bytes to %v", cb)
cb.Write([]byte("ABC"))
// cb.Write([]byte("A"))
t.Logf("After Write 3 Bytes to %v", cb)
var r3 = makeByteSlice(3)
cb.Read(r3)
t.Logf("After read 3 byte from %v", cb)
status = cb.Status()
t.Logf("Try Write 8 Bytes to %v", cb)
wn, err = cb.Write([]byte("12345678"))
t.Logf("After Try Write 8 Bytes to %v", cb)
assert.Nil(err)
assert.Equal(status.FreeWriteSpace(), wn)
}