@@ -44,3 +44,189 @@ class TestUIDPlusData < Test::Unit::TestCase
44
44
end
45
45
46
46
end
47
+
48
+ class TestAppendUIDData < Test ::Unit ::TestCase
49
+ # alias for convenience
50
+ AppendUIDData = Net ::IMAP ::AppendUIDData
51
+ SequenceSet = Net ::IMAP ::SequenceSet
52
+ DataFormatError = Net ::IMAP ::DataFormatError
53
+ UINT32_MAX = 2 **32 - 1
54
+
55
+ test "#uidvalidity must be valid nz-number" do
56
+ assert_equal 1 , AppendUIDData . new ( 1 , 99 ) . uidvalidity
57
+ assert_equal UINT32_MAX , AppendUIDData . new ( UINT32_MAX , 1 ) . uidvalidity
58
+ assert_raise DataFormatError do AppendUIDData . new ( 0 , 1 ) end
59
+ assert_raise DataFormatError do AppendUIDData . new ( 2 **32 , 1 ) end
60
+ end
61
+
62
+ test "#assigned_uids must be a valid uid-set" do
63
+ assert_equal SequenceSet [ 1 ] , AppendUIDData . new ( 99 , "1" ) . assigned_uids
64
+ assert_equal SequenceSet [ 1 ..9 ] , AppendUIDData . new ( 1 , "1:9" ) . assigned_uids
65
+ assert_equal ( SequenceSet [ UINT32_MAX ] ,
66
+ AppendUIDData . new ( 1 , UINT32_MAX . to_s ) . assigned_uids )
67
+ assert_raise DataFormatError do AppendUIDData . new ( 1 , 0 ) end
68
+ assert_raise DataFormatError do AppendUIDData . new ( 1 , "*" ) end
69
+ assert_raise DataFormatError do AppendUIDData . new ( 1 , "1:*" ) end
70
+ end
71
+
72
+ test "#size returns the number of UIDs" do
73
+ assert_equal ( 10 , AppendUIDData . new ( 1 , "1:10" ) . size )
74
+ assert_equal ( 4_000_000_000 , AppendUIDData . new ( 1 , 1 ..4_000_000_000 ) . size )
75
+ end
76
+
77
+ test "#assigned_uids is converted to SequenceSet" do
78
+ assert_equal SequenceSet [ 1 ] , AppendUIDData . new ( 99 , "1" ) . assigned_uids
79
+ assert_equal SequenceSet [ 1 ..4 ] , AppendUIDData . new ( 1 , [ 1 , 2 , 3 , 4 ] ) . assigned_uids
80
+ end
81
+
82
+ end
83
+
84
+ class TestCopyUIDData < Test ::Unit ::TestCase
85
+ # alias for convenience
86
+ CopyUIDData = Net ::IMAP ::CopyUIDData
87
+ SequenceSet = Net ::IMAP ::SequenceSet
88
+ DataFormatError = Net ::IMAP ::DataFormatError
89
+ UINT32_MAX = 2 **32 - 1
90
+
91
+ test "#uidvalidity must be valid nz-number" do
92
+ assert_equal 1 , CopyUIDData . new ( 1 , 99 , 99 ) . uidvalidity
93
+ assert_equal UINT32_MAX , CopyUIDData . new ( UINT32_MAX , 1 , 1 ) . uidvalidity
94
+ assert_raise DataFormatError do CopyUIDData . new ( 0 , 1 , 1 ) end
95
+ assert_raise DataFormatError do CopyUIDData . new ( 2 **32 , 1 , 1 ) end
96
+ end
97
+
98
+ test "#source_uids must be valid uid-set" do
99
+ assert_equal SequenceSet [ 1 ] , CopyUIDData . new ( 99 , "1" , 99 ) . source_uids
100
+ assert_equal SequenceSet [ 5 ..8 ] , CopyUIDData . new ( 1 , 5 ..8 , 1 ..4 ) . source_uids
101
+ assert_equal ( SequenceSet [ UINT32_MAX ] ,
102
+ CopyUIDData . new ( 1 , UINT32_MAX . to_s , 1 ) . source_uids )
103
+ assert_raise DataFormatError do CopyUIDData . new ( 99 , nil , 99 ) end
104
+ assert_raise DataFormatError do CopyUIDData . new ( 1 , 0 , 1 ) end
105
+ assert_raise DataFormatError do CopyUIDData . new ( 1 , "*" , 1 ) end
106
+ end
107
+
108
+ test "#assigned_uids must be a valid uid-set" do
109
+ assert_equal SequenceSet [ 1 ] , CopyUIDData . new ( 99 , 1 , "1" ) . assigned_uids
110
+ assert_equal SequenceSet [ 1 ..9 ] , CopyUIDData . new ( 1 , 1 ..9 , "1:9" ) . assigned_uids
111
+ assert_equal ( SequenceSet [ UINT32_MAX ] ,
112
+ CopyUIDData . new ( 1 , 1 , UINT32_MAX . to_s ) . assigned_uids )
113
+ assert_raise DataFormatError do CopyUIDData . new ( 1 , 1 , 0 ) end
114
+ assert_raise DataFormatError do CopyUIDData . new ( 1 , 1 , "*" ) end
115
+ assert_raise DataFormatError do CopyUIDData . new ( 1 , 1 , "1:*" ) end
116
+ end
117
+
118
+ test "#size returns the number of UIDs" do
119
+ assert_equal ( 10 , CopyUIDData . new ( 1 , "9,8,7,6,1:5,10" , "1:10" ) . size )
120
+ assert_equal ( 4_000_000_000 ,
121
+ CopyUIDData . new (
122
+ 1 , "2000000000:4000000000,1:1999999999" , 1 ..4_000_000_000
123
+ ) . size )
124
+ end
125
+
126
+ test "#source_uids and #assigned_uids must be same size" do
127
+ assert_raise DataFormatError do CopyUIDData . new ( 1 , 1 ..5 , 1 ) end
128
+ assert_raise DataFormatError do CopyUIDData . new ( 1 , 1 , 1 ..5 ) end
129
+ end
130
+
131
+ test "#source_uids is converted to SequenceSet" do
132
+ assert_equal SequenceSet [ 1 ] , CopyUIDData . new ( 99 , "1" , 99 ) . source_uids
133
+ assert_equal SequenceSet [ 5 , 6 , 7 , 8 ] , CopyUIDData . new ( 1 , 5 ..8 , 1 ..4 ) . source_uids
134
+ end
135
+
136
+ test "#assigned_uids is converted to SequenceSet" do
137
+ assert_equal SequenceSet [ 1 ] , CopyUIDData . new ( 99 , 1 , "1" ) . assigned_uids
138
+ assert_equal SequenceSet [ 1 , 2 , 3 , 4 ] , CopyUIDData . new ( 1 , "1:4" , 1 ..4 ) . assigned_uids
139
+ end
140
+
141
+ test "#uid_mapping maps source_uids to assigned_uids" do
142
+ uidplus = CopyUIDData . new ( 9999 , "20:19,500:495" , "92:97,101:100" )
143
+ assert_equal (
144
+ {
145
+ 19 => 92 ,
146
+ 20 => 93 ,
147
+ 495 => 94 ,
148
+ 496 => 95 ,
149
+ 497 => 96 ,
150
+ 498 => 97 ,
151
+ 499 => 100 ,
152
+ 500 => 101 ,
153
+ } ,
154
+ uidplus . uid_mapping
155
+ )
156
+ end
157
+
158
+ test "#uid_mapping for with source_uids in unsorted order" do
159
+ uidplus = CopyUIDData . new ( 1 , "495:500,20:19" , "92:97,101:100" )
160
+ assert_equal (
161
+ {
162
+ 495 => 92 ,
163
+ 496 => 93 ,
164
+ 497 => 94 ,
165
+ 498 => 95 ,
166
+ 499 => 96 ,
167
+ 500 => 97 ,
168
+ 19 => 100 ,
169
+ 20 => 101 ,
170
+ } ,
171
+ uidplus . uid_mapping
172
+ )
173
+ end
174
+
175
+ test "#assigned_uid_for(source_uid)" do
176
+ uidplus = CopyUIDData . new ( 1 , "495:500,20:19" , "92:97,101:100" )
177
+ assert_equal 92 , uidplus . assigned_uid_for ( 495 )
178
+ assert_equal 93 , uidplus . assigned_uid_for ( 496 )
179
+ assert_equal 94 , uidplus . assigned_uid_for ( 497 )
180
+ assert_equal 95 , uidplus . assigned_uid_for ( 498 )
181
+ assert_equal 96 , uidplus . assigned_uid_for ( 499 )
182
+ assert_equal 97 , uidplus . assigned_uid_for ( 500 )
183
+ assert_equal 100 , uidplus . assigned_uid_for ( 19 )
184
+ assert_equal 101 , uidplus . assigned_uid_for ( 20 )
185
+ end
186
+
187
+ test "#[](source_uid)" do
188
+ uidplus = CopyUIDData . new ( 1 , "495:500,20:19" , "92:97,101:100" )
189
+ assert_equal 92 , uidplus [ 495 ]
190
+ assert_equal 93 , uidplus [ 496 ]
191
+ assert_equal 94 , uidplus [ 497 ]
192
+ assert_equal 95 , uidplus [ 498 ]
193
+ assert_equal 96 , uidplus [ 499 ]
194
+ assert_equal 97 , uidplus [ 500 ]
195
+ assert_equal 100 , uidplus [ 19 ]
196
+ assert_equal 101 , uidplus [ 20 ]
197
+ end
198
+
199
+ test "#source_uid_for(assigned_uid)" do
200
+ uidplus = CopyUIDData . new ( 1 , "495:500,20:19" , "92:97,101:100" )
201
+ assert_equal 495 , uidplus . source_uid_for ( 92 )
202
+ assert_equal 496 , uidplus . source_uid_for ( 93 )
203
+ assert_equal 497 , uidplus . source_uid_for ( 94 )
204
+ assert_equal 498 , uidplus . source_uid_for ( 95 )
205
+ assert_equal 499 , uidplus . source_uid_for ( 96 )
206
+ assert_equal 500 , uidplus . source_uid_for ( 97 )
207
+ assert_equal 19 , uidplus . source_uid_for ( 100 )
208
+ assert_equal 20 , uidplus . source_uid_for ( 101 )
209
+ end
210
+
211
+ test "#each_uid_pair" do
212
+ uidplus = CopyUIDData . new ( 1 , "495:500,20:19" , "92:97,101:100" )
213
+ expected = {
214
+ 495 => 92 ,
215
+ 496 => 93 ,
216
+ 497 => 94 ,
217
+ 498 => 95 ,
218
+ 499 => 96 ,
219
+ 500 => 97 ,
220
+ 19 => 100 ,
221
+ 20 => 101 ,
222
+ }
223
+ actual = { }
224
+ uidplus . each_uid_pair do |src , dst | actual [ src ] = dst end
225
+ assert_equal expected , actual
226
+ assert_equal expected , uidplus . each_uid_pair . to_h
227
+ assert_equal expected . to_a , uidplus . each_uid_pair . to_a
228
+ assert_equal expected , uidplus . each_pair . to_h
229
+ assert_equal expected , uidplus . each . to_h
230
+ end
231
+
232
+ end
0 commit comments