Skip to content

Commit 950a992

Browse files
committed
🐛 Fix SequenceSet.try_convert
It's a silly mistake, but it had no test coverage. I'm sure I did have this working at one point, but no test coverage!
1 parent 8591ec0 commit 950a992

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

lib/net/imap/sequence_set.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ def [](first, *rest)
320320
# raised.
321321
def try_convert(obj)
322322
return obj if obj.is_a?(SequenceSet)
323-
return nil unless respond_to?(:to_sequence_set)
323+
return nil unless obj.respond_to?(:to_sequence_set)
324324
obj = obj.to_sequence_set
325325
return obj if obj.is_a?(SequenceSet)
326326
raise DataFormatError, "invalid object returned from to_sequence_set"

test/net/imap/test_sequence_set.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,22 @@ def compare_to_reference_set(nums, set, seqset)
151151
assert_raise DataFormatError do SequenceSet[Set.new] end
152152
end
153153

154+
test ".try_convert" do
155+
assert_nil SequenceSet.try_convert(nil)
156+
assert_nil SequenceSet.try_convert(123)
157+
assert_nil SequenceSet.try_convert(12..34)
158+
assert_nil SequenceSet.try_convert("12:34")
159+
assert_nil SequenceSet.try_convert(Object.new)
160+
161+
obj = Object.new
162+
def obj.to_sequence_set; SequenceSet[192, 168, 1, 255] end
163+
assert_equal SequenceSet[192, 168, 1, 255], SequenceSet.try_convert(obj)
164+
165+
obj = Object.new
166+
def obj.to_sequence_set; 192_168.001_255 end
167+
assert_raise DataFormatError do SequenceSet.try_convert(obj) end
168+
end
169+
154170
test "#[non-negative index]" do
155171
assert_nil SequenceSet.empty[0]
156172
assert_equal 1, SequenceSet[1..][0]

0 commit comments

Comments
 (0)