Skip to content

Commit 262482a

Browse files
committed
Merge branch 'slice'
2 parents f58627a + dba6019 commit 262482a

2 files changed

Lines changed: 33 additions & 2 deletions

File tree

lib/circular_buffer.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ defmodule CircularBuffer do
8686
Enumerable.List.reduce(CB.to_list(cb), acc, fun)
8787
end
8888

89-
def slice(cb) do
90-
{:ok, cb.count, &Enumerable.List.slice(CB.to_list(cb), &1, &2)}
89+
def slice(_cb) do
90+
{:error, __MODULE__}
9191
end
9292
end
9393

test/circular_buffer_test.exs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,37 @@ defmodule CircularBufferTest do
112112
assert str == "#CircularBuffer<[1, 2, 3, 4]>"
113113
end
114114

115+
test "Enum.slice" do
116+
# Verify Elixir's Enum.slice tests for lists work
117+
cb = Enum.into([-2, -1, 0, 1, 2, 3, 4, 5], CB.new(5))
118+
assert Enum.slice(cb, 0..0) == [1]
119+
assert Enum.slice(cb, 0..1) == [1, 2]
120+
assert Enum.slice(cb, 0..2) == [1, 2, 3]
121+
assert Enum.slice(cb, 1, 2) == [2, 3]
122+
assert Enum.slice(cb, 1, 0) == []
123+
assert Enum.slice(cb, 2, 5) == [3, 4, 5]
124+
assert Enum.slice(cb, 2, 6) == [3, 4, 5]
125+
assert Enum.slice(cb, 5, 5) == []
126+
assert Enum.slice(cb, 6, 5) == []
127+
assert Enum.slice(cb, 6, 0) == []
128+
assert Enum.slice(cb, -6, 0) == []
129+
assert Enum.slice(cb, -6, 5) == []
130+
assert Enum.slice(cb, -2, 5) == [4, 5]
131+
assert Enum.slice(cb, -3, 1) == [3]
132+
133+
assert_raise FunctionClauseError, fn ->
134+
Enum.slice(cb, 0, -1)
135+
end
136+
137+
assert_raise FunctionClauseError, fn ->
138+
Enum.slice(cb, 0.99, 0)
139+
end
140+
141+
assert_raise FunctionClauseError, fn ->
142+
Enum.slice(cb, 0, 0.99)
143+
end
144+
end
145+
115146
def size_and_list do
116147
let size <- pos_integer() do
117148
let is <- ints(size*2, []) do

0 commit comments

Comments
 (0)