cubefs
74 строки · 1.9 Кб
1// Copyright 2023 The CubeFS Authors.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12// implied. See the License for the specific language governing
13// permissions and limitations under the License.
14
15package unboundedchan
16
17import (
18"errors"
19"testing"
20)
21
22func TestReadEmptyRingBuffer(t *testing.T) {
23buffer := NewRingBuffer(10)
24v, err := buffer.Read()
25if v != nil || err == nil {
26t.Errorf("expected:(%v %v), got:(%v %v)", nil, errors.New("ringbuffer is empty"), v, err)
27}
28}
29
30func TestWriteAndReadOne(t *testing.T) {
31data := "value"
32buffer := NewRingBuffer(10)
33// write
34buffer.Write(data)
35if buffer.Len() != 1 {
36t.Errorf("expected buf len:(%v), got:(%v)", 1, buffer.Len())
37}
38if buffer.wIndex != 1 {
39t.Errorf("expected buf len:(%v), got:(%v)", 1, buffer.wIndex)
40}
41
42v, err := buffer.Read()
43if err != nil {
44t.Errorf("expected err:(%v), got:(%v)", nil, err)
45}
46if v != data {
47t.Errorf("expected data:(%v), got:(%v)", data, v)
48}
49if buffer.Len() != 0 {
50t.Errorf("expected buf len:(%v), got:(%v)", 0, buffer.Len())
51}
52}
53
54func TestBufferScaleUp(t *testing.T) {
55buffer := NewRingBuffer(10)
56// write till buffer full
57for i := 0; i < 9; i++ {
58buffer.Write(i)
59}
60
61if buffer.size != 10 {
62t.Errorf("expected buffer size:(%v), got(%v", 10, buffer.size)
63}
64
65// trigger scaling up
66buffer.Write(10)
67// scale buffer size up to double the size of the current buffer
68if buffer.size != 20 {
69t.Errorf("expected buffer size:(%v), got(%v", 20, buffer.size)
70}
71if buffer.Len() != 10 {
72t.Errorf("expected buffer len:(%v), got(%v)", 10, buffer.Len())
73}
74}
75