Skip to content

Commit

Permalink
♻️✅ Refactor SequenceSet enumerator tests
Browse files Browse the repository at this point in the history
Less duplication, still fairly easy to read, IMO.
  • Loading branch information
nevans committed Jan 24, 2025
1 parent a9e1ce9 commit c26dc51
Showing 1 changed file with 26 additions and 20 deletions.
46 changes: 26 additions & 20 deletions test/net/imap/test_sequence_set.rb
Original file line number Diff line number Diff line change
Expand Up @@ -779,32 +779,38 @@ def test_inspect((expected, input, freeze))
assert_equal data[:elements], SequenceSet.new(data[:input]).elements
end

test "#each_element" do |data|
seqset = SequenceSet.new(data[:input])
def assert_seqset_enum(expected, seqset, enum)
array = []
assert_equal seqset, seqset.send(enum) { array << _1 }
assert_equal expected, array

array = []
assert_equal seqset, seqset.each_element { array << _1 }
assert_equal data[:elements], array
assert_equal data[:elements], seqset.each_element.to_a
assert_equal seqset, seqset.send(enum).each { array << _1 }
assert_equal expected, array

assert_equal expected, seqset.send(enum).to_a
end

test "#each_element" do |data|
seqset = SequenceSet.new(data[:input])
expected = data[:elements]
assert_seqset_enum expected, seqset, :each_element
end

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

test "#each_entry" do |data|
seqset = SequenceSet.new(data[:input])
array = []
assert_equal seqset, seqset.each_entry { array << _1 }
assert_equal data[:entries], array
assert_equal data[:entries], seqset.each_entry.to_a
seqset = SequenceSet.new(data[:input])
expected = data[:entries]
assert_seqset_enum expected, seqset, :each_entry
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
seqset = SequenceSet.new(data[:input])
expected = data[:ranges]
assert_seqset_enum expected, seqset, :each_range
end

test "#ranges" do |data|
Expand All @@ -814,15 +820,15 @@ def test_inspect((expected, input, freeze))
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
seqset.each_number do fail "shouldn't get here" end
end
enum = seqset.each_number
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
assert_seqset_enum expected, seqset, :each_number
end
end

Expand Down

0 comments on commit c26dc51

Please sign in to comment.