File tree 1 file changed +24
-0
lines changed
1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -336,6 +336,10 @@ impl<T: Component> Events<T> {
336
336
337
337
/// Creates a draining iterator that removes all events.
338
338
pub fn drain ( & mut self ) -> impl Iterator < Item = T > + ' _ {
339
+ self . a_start_event_count = 0 ;
340
+ self . b_start_event_count = 0 ;
341
+ self . event_count = 0 ;
342
+
339
343
let map = |i : EventInstance < T > | i. event ;
340
344
match self . state {
341
345
State :: A => self
@@ -480,4 +484,24 @@ mod tests {
480
484
) -> Vec < TestEvent > {
481
485
reader. iter ( events) . cloned ( ) . collect :: < Vec < TestEvent > > ( )
482
486
}
487
+
488
+ #[ test]
489
+ fn test_events_drain ( ) {
490
+ struct E ;
491
+ let mut events = Events :: < E > :: default ( ) ;
492
+ let mut reader = events. get_reader ( ) ;
493
+
494
+ assert ! ( reader. iter( & events) . next( ) . is_none( ) ) ;
495
+
496
+ events. send ( E ) ;
497
+ assert ! ( reader. iter( & events) . next( ) . is_some( ) ) ;
498
+ assert ! ( reader. iter( & events) . next( ) . is_none( ) ) ;
499
+
500
+ let _ = events. drain ( ) ;
501
+ assert ! ( reader. iter( & events) . next( ) . is_none( ) ) ;
502
+
503
+ events. send ( E ) ;
504
+ assert ! ( reader. iter( & events) . next( ) . is_some( ) ) ;
505
+ assert ! ( reader. iter( & events) . next( ) . is_none( ) ) ;
506
+ }
483
507
}
You can’t perform that action at this time.
0 commit comments