@@ -497,3 +497,47 @@ where
497
497
self . stop ( )
498
498
}
499
499
}
500
+
501
+ #[ cfg( test) ]
502
+ mod tests {
503
+ use std:: net:: { IpAddr , Ipv4Addr , SocketAddr } ;
504
+
505
+ use super :: * ;
506
+
507
+ #[ test]
508
+ fn register_and_deregister ( ) {
509
+ let addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) , 1000 ) ;
510
+ let stream = mio:: net:: TcpStream :: connect ( & addr) . unwrap ( ) ;
511
+
512
+ let mut event_loop = EventLoopBuilder :: new ( ) . build :: < IoManager < ( ) > > ( ) . unwrap ( ) ;
513
+ event_loop. register ( & stream, Token ( 1 ) , Ready :: empty ( ) , PollOpt :: edge ( ) ) . unwrap ( ) ;
514
+ event_loop. deregister ( & stream) . unwrap ( ) ;
515
+ }
516
+
517
+ #[ test]
518
+ fn cannot_move_socket_to_other_event_loop ( ) {
519
+ let addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) , 1000 ) ;
520
+ let stream = mio:: net:: TcpStream :: connect ( & addr) . unwrap ( ) ;
521
+
522
+ let mut event_loop1 = EventLoopBuilder :: new ( ) . build :: < IoManager < ( ) > > ( ) . unwrap ( ) ;
523
+ event_loop1. register ( & stream, Token ( 1 ) , Ready :: empty ( ) , PollOpt :: edge ( ) ) . unwrap ( ) ;
524
+ event_loop1. reregister ( & stream, Token ( 1 ) , Ready :: empty ( ) , PollOpt :: edge ( ) ) . unwrap ( ) ;
525
+ event_loop1. deregister ( & stream) . unwrap ( ) ;
526
+
527
+ let mut event_loop2 = EventLoopBuilder :: new ( ) . build :: < IoManager < ( ) > > ( ) . unwrap ( ) ;
528
+ let result = event_loop2. register ( & stream, Token ( 2 ) , Ready :: empty ( ) , PollOpt :: edge ( ) ) ;
529
+ assert ! ( result. is_err( ) ) ;
530
+ }
531
+
532
+ #[ test]
533
+ fn register_to_the_same_event_loop ( ) {
534
+ let addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 127 , 0 , 0 , 1 ) ) , 1000 ) ;
535
+ let stream = mio:: net:: TcpStream :: connect ( & addr) . unwrap ( ) ;
536
+
537
+ let mut event_loop = EventLoopBuilder :: new ( ) . build :: < IoManager < ( ) > > ( ) . unwrap ( ) ;
538
+ event_loop. register ( & stream, Token ( 1 ) , Ready :: empty ( ) , PollOpt :: edge ( ) ) . unwrap ( ) ;
539
+ event_loop. deregister ( & stream) . unwrap ( ) ;
540
+
541
+ event_loop. register ( & stream, Token ( 2 ) , Ready :: empty ( ) , PollOpt :: edge ( ) ) . unwrap ( ) ;
542
+ }
543
+ }
0 commit comments