Skip to content

Commit

Permalink
✅ Improve test coverage for SequenceSet enums
Browse files Browse the repository at this point in the history
`#each_range` and `#each_number` were previously tested indirectly via
`#ranges` and `#numbers`, but this adds tests on them directly.
  • Loading branch information
nevans committed Jan 24, 2025
1 parent 340d3e7 commit 4cabe29
Showing 1 changed file with 32 additions and 9 deletions.
41 changes: 32 additions & 9 deletions test/net/imap/test_sequence_set.rb
Original file line number Diff line number Diff line change
Expand Up @@ -797,10 +797,42 @@ def test_inspect((expected, input, freeze))
assert_equal data[:entries], seqset.each_entry.to_a
end

test "#each_range" do |data|
seqset = SequenceSet.new(data[:input])
array = []
assert_equal seqset, seqset.each_range { array << _1 }
assert_equal data[:ranges], array
assert_equal data[:ranges], seqset.each_range.to_a
end

test "#ranges" do |data|
assert_equal data[:ranges], SequenceSet.new(data[:input]).ranges
end

test "#each_number" do |data|
seqset = SequenceSet.new(data[:input])
expected = data[:numbers]
enum = seqset.each_number
if expected.is_a?(Class) && expected < Exception
assert_raise expected do enum.to_a end
assert_raise expected do enum.each do fail "shouldn't get here" end end
else
array = []
assert_equal seqset, seqset.each_number { array << _1 }
assert_equal expected, array
assert_equal expected, seqset.each_number.to_a
end
end

test "#numbers" do |data|
expected = data[:numbers]
if expected.is_a?(Class) && expected < Exception
assert_raise expected do SequenceSet.new(data[:input]).numbers end
else
assert_equal expected, SequenceSet.new(data[:input]).numbers
end
end

test "#string" do |data|
set = SequenceSet.new(data[:input])
str = data[:to_s]
Expand Down Expand Up @@ -862,15 +894,6 @@ def test_inspect((expected, input, freeze))
assert_equal(data[:complement], (~set).to_s)
end

test "#numbers" do |data|
expected = data[:numbers]
if expected.is_a?(Class) && expected < Exception
assert_raise expected do SequenceSet.new(data[:input]).numbers end
else
assert_equal expected, SequenceSet.new(data[:input]).numbers
end
end

test "SequenceSet[input]" do |input|
case (input = data[:input])
when nil
Expand Down

0 comments on commit 4cabe29

Please sign in to comment.