Skip to content

Commit 608a983

Browse files
committed
✅ Add missing specs for SequenceSet#at, #[]
Some of the `#[negative index]` specs were using non-negative indexes. They've been updated to use negative indexes. Previously, `#at` was indirectly tested only by the `SequenceSet#[]` test and the randomized "compare to reference Set" tests. The new tests specifically explicitly focus on `#[]`.
1 parent 257ede0 commit 608a983

File tree

1 file changed

+37
-8
lines changed

1 file changed

+37
-8
lines changed

test/net/imap/test_sequence_set.rb

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,21 @@ def obj.to_sequence_set; 192_168.001_255 end
167167
assert_raise DataFormatError do SequenceSet.try_convert(obj) end
168168
end
169169

170+
test "#at(non-negative index)" do
171+
assert_nil SequenceSet.empty.at(0)
172+
assert_equal 1, SequenceSet[1..].at(0)
173+
assert_equal 1, SequenceSet.full.at(0)
174+
assert_equal 111, SequenceSet.full.at(110)
175+
assert_equal 4, SequenceSet[2,4,6,8].at(1)
176+
assert_equal 8, SequenceSet[2,4,6,8].at(3)
177+
assert_equal 6, SequenceSet[4..6].at(2)
178+
assert_nil SequenceSet[4..6].at(3)
179+
assert_equal 205, SequenceSet["101:110,201:210,301:310"].at(14)
180+
assert_equal 310, SequenceSet["101:110,201:210,301:310"].at(29)
181+
assert_nil SequenceSet["101:110,201:210,301:310"].at(44)
182+
assert_equal :*, SequenceSet["1:10,*"].at(10)
183+
end
184+
170185
test "#[non-negative index]" do
171186
assert_nil SequenceSet.empty[0]
172187
assert_equal 1, SequenceSet[1..][0]
@@ -182,18 +197,32 @@ def obj.to_sequence_set; 192_168.001_255 end
182197
assert_equal :*, SequenceSet["1:10,*"][10]
183198
end
184199

200+
test "#at(negative index)" do
201+
assert_nil SequenceSet.empty.at(-1)
202+
assert_equal :*, SequenceSet[1..].at(-1)
203+
assert_equal 1, SequenceSet.full.at(-(2**32))
204+
assert_equal 111, SequenceSet[1..111].at(-1)
205+
assert_equal 6, SequenceSet[2,4,6,8].at(-2)
206+
assert_equal 2, SequenceSet[2,4,6,8].at(-4)
207+
assert_equal 4, SequenceSet[4..6].at(-3)
208+
assert_nil SequenceSet[4..6].at(-4)
209+
assert_equal 207, SequenceSet["101:110,201:210,301:310"].at(-14)
210+
assert_equal 102, SequenceSet["101:110,201:210,301:310"].at(-29)
211+
assert_nil SequenceSet["101:110,201:210,301:310"].at(-44)
212+
end
213+
185214
test "#[negative index]" do
186-
assert_nil SequenceSet.empty[0]
215+
assert_nil SequenceSet.empty[-1]
187216
assert_equal :*, SequenceSet[1..][-1]
188217
assert_equal 1, SequenceSet.full[-(2**32)]
189218
assert_equal 111, SequenceSet[1..111][-1]
190-
assert_equal 4, SequenceSet[2,4,6,8][1]
191-
assert_equal 8, SequenceSet[2,4,6,8][3]
192-
assert_equal 6, SequenceSet[4..6][2]
193-
assert_nil SequenceSet[4..6][3]
194-
assert_equal 205, SequenceSet["101:110,201:210,301:310"][14]
195-
assert_equal 310, SequenceSet["101:110,201:210,301:310"][29]
196-
assert_nil SequenceSet["101:110,201:210,301:310"][44]
219+
assert_equal 6, SequenceSet[2,4,6,8][-2]
220+
assert_equal 2, SequenceSet[2,4,6,8][-4]
221+
assert_equal 4, SequenceSet[4..6][-3]
222+
assert_nil SequenceSet[4..6][-4]
223+
assert_equal 207, SequenceSet["101:110,201:210,301:310"][-14]
224+
assert_equal 102, SequenceSet["101:110,201:210,301:310"][-29]
225+
assert_nil SequenceSet["101:110,201:210,301:310"][-44]
197226
end
198227

199228
test "#[start, length]" do

0 commit comments

Comments
 (0)