From c26dc510c2e76227cbafde3def293fe555ca4ea8 Mon Sep 17 00:00:00 2001 From: nick evans Date: Fri, 24 Jan 2025 18:05:26 -0500 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=E2=9C=85=20Refactor=20Sequen?= =?UTF-8?q?ceSet=20enumerator=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Less duplication, still fairly easy to read, IMO. --- test/net/imap/test_sequence_set.rb | 46 +++++++++++++++++------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/test/net/imap/test_sequence_set.rb b/test/net/imap/test_sequence_set.rb index 971a81fd..436eef53 100644 --- a/test/net/imap/test_sequence_set.rb +++ b/test/net/imap/test_sequence_set.rb @@ -779,12 +779,22 @@ 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| @@ -792,19 +802,15 @@ def test_inspect((expected, input, freeze)) 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| @@ -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