Skip to content

Commit 2a70812

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 8484205 commit 2a70812

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
@@ -325,7 +325,7 @@ def [](first, *rest)
325325
# raised.
326326
def try_convert(obj)
327327
return obj if obj.is_a?(SequenceSet)
328-
return nil unless respond_to?(:to_sequence_set)
328+
return nil unless obj.respond_to?(:to_sequence_set)
329329
obj = obj.to_sequence_set
330330
return obj if obj.is_a?(SequenceSet)
331331
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
@@ -148,6 +148,22 @@ def compare_to_reference_set(nums, set, seqset)
148148
assert_raise DataFormatError do SequenceSet[""] end
149149
end
150150

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

0 commit comments

Comments
 (0)