@@ -144,18 +144,30 @@ mod tests {
144
144
assert_eq ! ( values. iter( & world) . size_hint( ) . 1 . unwrap( ) , n) ;
145
145
assert_eq ! ( values. iter( & world) . len( ) , n) ;
146
146
assert_eq ! ( values. iter( & world) . count( ) , n) ;
147
+ let mut iterator = values. iter ( & world) ;
148
+ let _ = iterator. next ( ) ;
149
+ assert_eq ! ( iterator. len( ) , n - 1 ) ;
150
+
147
151
let mut values = world. query_filtered :: < & A , Or < ( With < B > , Without < C > ) > > ( ) ;
148
152
let n = 7 ;
149
153
assert_eq ! ( values. iter( & world) . size_hint( ) . 0 , n) ;
150
154
assert_eq ! ( values. iter( & world) . size_hint( ) . 1 . unwrap( ) , n) ;
151
155
assert_eq ! ( values. iter( & world) . len( ) , n) ;
152
156
assert_eq ! ( values. iter( & world) . count( ) , n) ;
157
+ let mut iterator = values. iter ( & world) ;
158
+ let _ = iterator. next ( ) ;
159
+ assert_eq ! ( iterator. len( ) , n - 1 ) ;
160
+
153
161
let mut values = world. query_filtered :: < & A , Or < ( Without < B > , With < C > ) > > ( ) ;
154
162
let n = 8 ;
155
163
assert_eq ! ( values. iter( & world) . size_hint( ) . 0 , n) ;
156
164
assert_eq ! ( values. iter( & world) . size_hint( ) . 1 . unwrap( ) , n) ;
157
165
assert_eq ! ( values. iter( & world) . len( ) , n) ;
158
166
assert_eq ! ( values. iter( & world) . count( ) , n) ;
167
+ let mut iterator = values. iter ( & world) ;
168
+ let _ = iterator. next ( ) ;
169
+ assert_eq ! ( iterator. len( ) , n - 1 ) ;
170
+
159
171
let mut values = world. query_filtered :: < & A , Or < ( Without < B > , Without < C > ) > > ( ) ;
160
172
let n = 9 ;
161
173
assert_eq ! ( values. iter( & world) . size_hint( ) . 0 , n) ;
@@ -169,6 +181,12 @@ mod tests {
169
181
assert_eq ! ( values. iter( & world) . size_hint( ) . 1 . unwrap( ) , n) ;
170
182
assert_eq ! ( values. iter( & world) . len( ) , n) ;
171
183
assert_eq ! ( values. iter( & world) . count( ) , n) ;
184
+ let mut iterator = values. iter ( & world) ;
185
+ let _ = iterator. next ( ) ;
186
+ assert_eq ! ( iterator. len( ) , 0 ) ;
187
+ let _ = iterator. next ( ) ;
188
+ assert_eq ! ( iterator. len( ) , 0 ) ;
189
+
172
190
let mut values = world. query_filtered :: < & A , Or < ( Or < ( With < B > , With < C > ) > , With < D > ) > > ( ) ;
173
191
let n = 6 ;
174
192
assert_eq ! ( values. iter( & world) . size_hint( ) . 0 , n) ;
@@ -218,6 +236,18 @@ mod tests {
218
236
assert_eq ! ( a_query. iter_combinations:: <128 >( w) . count( ) , 0 ) ;
219
237
assert_eq ! ( a_query. iter_combinations:: <128 >( w) . size_hint( ) . 1 , Some ( 0 ) ) ;
220
238
239
+ let mut combination = a_query. iter_combinations :: < 2 > ( w) ;
240
+ let mut expected = 6 ;
241
+ for _ in 0 ..6 {
242
+ let _ = combination. next ( ) ;
243
+ expected -= 1 ;
244
+ assert_eq ! ( combination. size_hint( ) . 1 , Some ( expected) ) ;
245
+ }
246
+
247
+ let mut combination = a_query. iter_combinations :: < 4 > ( w) ;
248
+ let _ = combination. next ( ) ;
249
+ assert_eq ! ( combination. size_hint( ) . 1 , Some ( 0 ) ) ;
250
+
221
251
let values: Vec < [ & A ; 2 ] > = world. query :: < & A > ( ) . iter_combinations ( & world) . collect ( ) ;
222
252
assert_eq ! (
223
253
values,
@@ -299,6 +329,10 @@ mod tests {
299
329
assert_eq ! ( a_with_b. iter_combinations:: <128 >( w) . count( ) , 0 ) ;
300
330
assert_eq ! ( a_with_b. iter_combinations:: <128 >( w) . size_hint( ) . 1 , Some ( 0 ) ) ;
301
331
332
+ let mut combination = a_with_b. iter_combinations :: < 1 > ( w) ;
333
+ _ = combination. next ( ) ;
334
+ assert_eq ! ( combination. size_hint( ) . 1 , Some ( 0 ) ) ;
335
+
302
336
let mut a_wout_b = world. query_filtered :: < & A , Without < B > > ( ) ;
303
337
let w = & world;
304
338
assert_eq ! ( a_wout_b. iter_combinations:: <0 >( w) . count( ) , 0 ) ;
@@ -316,6 +350,10 @@ mod tests {
316
350
assert_eq ! ( a_wout_b. iter_combinations:: <128 >( w) . count( ) , 0 ) ;
317
351
assert_eq ! ( a_wout_b. iter_combinations:: <128 >( w) . size_hint( ) . 1 , Some ( 0 ) ) ;
318
352
353
+ let mut combination = a_wout_b. iter_combinations :: < 2 > ( w) ;
354
+ _ = combination. next ( ) ;
355
+ assert_eq ! ( combination. size_hint( ) . 1 , Some ( 2 ) ) ;
356
+
319
357
let values: HashSet < [ & A ; 2 ] > = a_wout_b. iter_combinations ( & world) . collect ( ) ;
320
358
assert_eq ! (
321
359
values,
0 commit comments