cubefs

Форк
0
/
ringbuffer_test.go 
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

15
package unboundedchan
16

17
import (
18
	"errors"
19
	"testing"
20
)
21

22
func TestReadEmptyRingBuffer(t *testing.T) {
23
	buffer := NewRingBuffer(10)
24
	v, err := buffer.Read()
25
	if v != nil || err == nil {
26
		t.Errorf("expected:(%v %v), got:(%v %v)", nil, errors.New("ringbuffer is empty"), v, err)
27
	}
28
}
29

30
func TestWriteAndReadOne(t *testing.T) {
31
	data := "value"
32
	buffer := NewRingBuffer(10)
33
	// write
34
	buffer.Write(data)
35
	if buffer.Len() != 1 {
36
		t.Errorf("expected buf len:(%v), got:(%v)", 1, buffer.Len())
37
	}
38
	if buffer.wIndex != 1 {
39
		t.Errorf("expected buf len:(%v), got:(%v)", 1, buffer.wIndex)
40
	}
41

42
	v, err := buffer.Read()
43
	if err != nil {
44
		t.Errorf("expected err:(%v), got:(%v)", nil, err)
45
	}
46
	if v != data {
47
		t.Errorf("expected data:(%v), got:(%v)", data, v)
48
	}
49
	if buffer.Len() != 0 {
50
		t.Errorf("expected buf len:(%v), got:(%v)", 0, buffer.Len())
51
	}
52
}
53

54
func TestBufferScaleUp(t *testing.T) {
55
	buffer := NewRingBuffer(10)
56
	// write till buffer full
57
	for i := 0; i < 9; i++ {
58
		buffer.Write(i)
59
	}
60

61
	if buffer.size != 10 {
62
		t.Errorf("expected buffer size:(%v), got(%v", 10, buffer.size)
63
	}
64

65
	// trigger scaling up
66
	buffer.Write(10)
67
	// scale buffer size up to double the size of the current buffer
68
	if buffer.size != 20 {
69
		t.Errorf("expected buffer size:(%v), got(%v", 20, buffer.size)
70
	}
71
	if buffer.Len() != 10 {
72
		t.Errorf("expected buffer len:(%v), got(%v)", 10, buffer.Len())
73
	}
74
}
75

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.