Skip to content

Commit 36ecc26

Browse files
authored
🔀 Merge pull request #644 from ruby/fix-empty-search_result-to_sequence_set
🐛 Fix empty search result to sequence set
2 parents 3e29393 + 4299df8 commit 36ecc26

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

lib/net/imap/search_result.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,11 @@ def to_s(type = "SEARCH")
123123
# Net::IMAP::SearchResult[9, 1, 2, 4, 10, 12, 3, modseq: 123_456]
124124
# .to_sequence_set
125125
# # => Net::IMAP::SequenceSet["1:4,9:10,12"]
126-
def to_sequence_set; SequenceSet[*self] end
126+
#
127+
# >>>
128+
# *NOTE:* +SORT+ order is not preserved. The result will be sorted.
129+
#
130+
def to_sequence_set; empty? ? SequenceSet.empty : SequenceSet[to_a] end
127131

128132
def pretty_print(pp)
129133
return super if modseq.nil?

test/net/imap/test_search_result.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,21 @@ class SearchDataTests < Net::IMAP::TestCase
8989
assert_equal("99 111 44 (MODSEQ 999)",
9090
Net::IMAP::SearchResult[99, 111, 44, modseq: 999].to_s(nil))
9191
end
92+
93+
test "#to_sequence_set" do
94+
assert_equal("1,3", Net::IMAP::SearchResult[1, 3].to_sequence_set.to_s)
95+
assert Net::IMAP::SearchResult[1, 3].to_sequence_set.frozen?
96+
assert_equal("1:3", Net::IMAP::SearchResult[1, 2, 3].to_sequence_set.to_s)
97+
assert_equal(
98+
"44,99,111",
99+
Net::IMAP::SearchResult[99, 111, 44, modseq: 999].to_sequence_set.to_s
100+
)
101+
assert_equal(
102+
"1:4,9:10,12",
103+
Net::IMAP::SearchResult[9, 1, 2, 3, 4, 10, 12].to_sequence_set.to_s
104+
)
105+
assert_equal(Net::IMAP::SequenceSet.empty,
106+
Net::IMAP::SearchResult[].to_sequence_set)
107+
assert Net::IMAP::SearchResult[].to_sequence_set.frozen?
108+
end
92109
end

0 commit comments

Comments
 (0)