-
-
Notifications
You must be signed in to change notification settings - Fork 530
Expand file tree
/
Copy pathcircular_buffer_test.rb
More file actions
132 lines (118 loc) · 3.27 KB
/
Copy pathcircular_buffer_test.rb
File metadata and controls
132 lines (118 loc) · 3.27 KB
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
require 'minitest/autorun'
require_relative 'circular_buffer'
class CircularBufferTest < Minitest::Test
def test_reading_empty_buffer_should_fail
# skip
buffer = CircularBuffer.new(1)
assert_raises(CircularBuffer::BufferEmptyException) { buffer.read }
end
def test_can_read_an_item_just_written
skip
buffer = CircularBuffer.new(1)
buffer.write('1')
assert_equal '1', buffer.read
end
def test_each_item_may_only_be_read_once
skip
buffer = CircularBuffer.new(1)
buffer.write('1')
assert_equal '1', buffer.read
assert_raises(CircularBuffer::BufferEmptyException) { buffer.read }
end
def test_items_are_read_in_the_order_they_are_written
skip
buffer = CircularBuffer.new(2)
buffer.write('1')
buffer.write('2')
assert_equal '1', buffer.read
assert_equal '2', buffer.read
end
def test_full_buffer_cant_be_written_to
skip
buffer = CircularBuffer.new(1)
buffer.write('1')
assert_raises(CircularBuffer::BufferFullException) { buffer.write('2') }
end
def test_a_read_frees_up_capacity_for_another_write
skip
buffer = CircularBuffer.new(1)
buffer.write('1')
assert_equal '1', buffer.read
buffer.write('2')
assert_equal '2', buffer.read
end
def test_read_position_is_maintained_even_across_multiple_writes
skip
buffer = CircularBuffer.new(3)
buffer.write('1')
buffer.write('2')
assert_equal '1', buffer.read
buffer.write('3')
assert_equal '2', buffer.read
assert_equal '3', buffer.read
end
def test_items_cleared_out_of_buffer_cant_be_read
skip
buffer = CircularBuffer.new(1)
buffer.write('1')
buffer.clear
assert_raises(CircularBuffer::BufferEmptyException) { buffer.read }
end
def test_clear_frees_up_capacity_for_another_write
skip
buffer = CircularBuffer.new(1)
buffer.write('1')
buffer.clear
buffer.write('2')
assert_equal '2', buffer.read
end
def test_clear_does_nothing_on_empty_buffer
skip
buffer = CircularBuffer.new(1)
buffer.clear
buffer.write('1')
assert_equal '1', buffer.read
end
def test_overwrite_acts_like_write_on_non_full_buffer
skip
buffer = CircularBuffer.new(2)
buffer.write('1')
buffer.write!('2')
assert_equal '1', buffer.read
assert_equal '2', buffer.read
end
def test_overwrite_replaces_the_oldest_item_on_full_buffer
skip
buffer = CircularBuffer.new(2)
buffer.write('1')
buffer.write('2')
buffer.write!('3')
assert_equal '2', buffer.read
assert_equal '3', buffer.read
end
def test_overwrite_replaces_the_oldest_item_remaining_in_buffer_following_a_read
skip
buffer = CircularBuffer.new(3)
buffer.write('1')
buffer.write('2')
buffer.write('3')
assert_equal '1', buffer.read
buffer.write('4')
buffer.write!('5')
assert_equal '3', buffer.read
assert_equal '4', buffer.read
assert_equal '5', buffer.read
end
def test_initial_clear_does_not_affect_wrapping_around
skip
buffer = CircularBuffer.new(2)
buffer.clear
buffer.write('1')
buffer.write('2')
buffer.write!('3')
buffer.write!('4')
assert_equal '3', buffer.read
assert_equal '4', buffer.read
assert_raises(CircularBuffer::BufferEmptyException) { buffer.read }
end
end