@@ -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