File tree Expand file tree Collapse file tree 2 files changed +27
-1
lines changed Expand file tree Collapse file tree 2 files changed +27
-1
lines changed Original file line number Diff line number Diff line change @@ -47,6 +47,10 @@ def take
47
47
end
48
48
end
49
49
50
+ def peek
51
+ @mutex . synchronize { @buffer [ @first ] }
52
+ end
53
+
50
54
private
51
55
52
56
def wait_while_full
Original file line number Diff line number Diff line change @@ -5,7 +5,7 @@ module Concurrent
5
5
describe RingBuffer do
6
6
7
7
let ( :capacity ) { 3 }
8
- let ( :buffer ) { RingBuffer . new ( capacity ) }
8
+ let ( :buffer ) { RingBuffer . new ( capacity ) }
9
9
10
10
def fill_buffer
11
11
capacity . times { buffer . put 3 }
@@ -111,6 +111,28 @@ def fill_buffer
111
111
end
112
112
end
113
113
114
+ describe '#peek' do
115
+ context 'buffer empty' do
116
+ it 'returns nil when buffer is empty' do
117
+ buffer . peek . should be_nil
118
+ end
119
+ end
120
+
121
+ context 'not empty' do
122
+
123
+ before ( :each ) { buffer . put 'element' }
124
+
125
+ it 'returns the first value' do
126
+ buffer . peek . should eq 'element'
127
+ end
128
+
129
+ it 'does not change buffer' do
130
+ buffer . peek
131
+ buffer . count . should eq 1
132
+ end
133
+ end
134
+ end
135
+
114
136
context 'circular condition' do
115
137
it 'can filled many times' do
116
138
fill_buffer
You can’t perform that action at this time.
0 commit comments