Skip to content

Commit c26dc51

Browse files
committed
♻️✅ Refactor SequenceSet enumerator tests
Less duplication, still fairly easy to read, IMO.
1 parent a9e1ce9 commit c26dc51

File tree

1 file changed

+26
-20
lines changed

1 file changed

+26
-20
lines changed

test/net/imap/test_sequence_set.rb

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -779,32 +779,38 @@ def test_inspect((expected, input, freeze))
779779
assert_equal data[:elements], SequenceSet.new(data[:input]).elements
780780
end
781781

782-
test "#each_element" do |data|
783-
seqset = SequenceSet.new(data[:input])
782+
def assert_seqset_enum(expected, seqset, enum)
783+
array = []
784+
assert_equal seqset, seqset.send(enum) { array << _1 }
785+
assert_equal expected, array
786+
784787
array = []
785-
assert_equal seqset, seqset.each_element { array << _1 }
786-
assert_equal data[:elements], array
787-
assert_equal data[:elements], seqset.each_element.to_a
788+
assert_equal seqset, seqset.send(enum).each { array << _1 }
789+
assert_equal expected, array
790+
791+
assert_equal expected, seqset.send(enum).to_a
792+
end
793+
794+
test "#each_element" do |data|
795+
seqset = SequenceSet.new(data[:input])
796+
expected = data[:elements]
797+
assert_seqset_enum expected, seqset, :each_element
788798
end
789799

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

794804
test "#each_entry" do |data|
795-
seqset = SequenceSet.new(data[:input])
796-
array = []
797-
assert_equal seqset, seqset.each_entry { array << _1 }
798-
assert_equal data[:entries], array
799-
assert_equal data[:entries], seqset.each_entry.to_a
805+
seqset = SequenceSet.new(data[:input])
806+
expected = data[:entries]
807+
assert_seqset_enum expected, seqset, :each_entry
800808
end
801809

802810
test "#each_range" do |data|
803-
seqset = SequenceSet.new(data[:input])
804-
array = []
805-
assert_equal seqset, seqset.each_range { array << _1 }
806-
assert_equal data[:ranges], array
807-
assert_equal data[:ranges], seqset.each_range.to_a
811+
seqset = SequenceSet.new(data[:input])
812+
expected = data[:ranges]
813+
assert_seqset_enum expected, seqset, :each_range
808814
end
809815

810816
test "#ranges" do |data|
@@ -814,15 +820,15 @@ def test_inspect((expected, input, freeze))
814820
test "#each_number" do |data|
815821
seqset = SequenceSet.new(data[:input])
816822
expected = data[:numbers]
817-
enum = seqset.each_number
818823
if expected.is_a?(Class) && expected < Exception
824+
assert_raise expected do
825+
seqset.each_number do fail "shouldn't get here" end
826+
end
827+
enum = seqset.each_number
819828
assert_raise expected do enum.to_a end
820829
assert_raise expected do enum.each do fail "shouldn't get here" end end
821830
else
822-
array = []
823-
assert_equal seqset, seqset.each_number { array << _1 }
824-
assert_equal expected, array
825-
assert_equal expected, seqset.each_number.to_a
831+
assert_seqset_enum expected, seqset, :each_number
826832
end
827833
end
828834

0 commit comments

Comments
 (0)