Make test_register_deregister use Poll API (#653)

diff --git a/test/test_register_deregister.rs b/test/test_register_deregister.rs
index 3ffe633..775ba73 100644
--- a/test/test_register_deregister.rs
+++ b/test/test_register_deregister.rs
@@ -1,6 +1,5 @@
 use {localhost, TryWrite};
 use mio::*;
-use mio::deprecated::{EventLoop, Handler};
 use mio::tcp::*;
 use bytes::SliceBuf;
 use std::time::Duration;
@@ -23,7 +22,7 @@
         }
     }
 
-    fn handle_read(&mut self, event_loop: &mut EventLoop<TestHandler>, token: Token, _: Ready) {
+    fn handle_read(&mut self, poll: &mut Poll, token: Token) {
         match token {
             SERVER => {
                 trace!("handle_read; token=SERVER");
@@ -34,41 +33,21 @@
                 trace!("handle_read; token=CLIENT");
                 assert!(self.state == 0, "unexpected state {}", self.state);
                 self.state = 1;
-                event_loop.reregister(&self.client, CLIENT, Ready::writable(), PollOpt::level()).unwrap();
+                poll.reregister(&self.client, CLIENT, Ready::writable(), PollOpt::level()).unwrap();
             }
             _ => panic!("unexpected token"),
         }
     }
 
-    fn handle_write(&mut self, event_loop: &mut EventLoop<TestHandler>, token: Token, _: Ready) {
+    fn handle_write(&mut self, poll: &mut Poll, token: Token) {
         debug!("handle_write; token={:?}; state={:?}", token, self.state);
 
         assert!(token == CLIENT, "unexpected token {:?}", token);
         assert!(self.state == 1, "unexpected state {}", self.state);
 
         self.state = 2;
-        event_loop.deregister(&self.client).unwrap();
-        event_loop.timeout(1, Duration::from_millis(200)).unwrap();
-    }
-}
-
-impl Handler for TestHandler {
-    type Timeout = usize;
-    type Message = ();
-
-    fn ready(&mut self, event_loop: &mut EventLoop<TestHandler>, token: Token, events: Ready) {
-        if events.is_readable() {
-            self.handle_read(event_loop, token, events);
-        }
-
-        if events.is_writable() {
-            self.handle_write(event_loop, token, events);
-        }
-    }
-
-    fn timeout(&mut self, event_loop: &mut EventLoop<TestHandler>, _: usize) {
-        trace!("timeout");
-        event_loop.shutdown();
+        poll.deregister(&self.client).unwrap();
+        poll.deregister(&self.server).unwrap();
     }
 }
 
@@ -77,26 +56,40 @@
     let _ = ::env_logger::init();
 
     debug!("Starting TEST_REGISTER_DEREGISTER");
-    let mut event_loop = EventLoop::new().unwrap();
+    let mut poll = Poll::new().unwrap();
+    let mut events = Events::with_capacity(1024);
 
     let addr = localhost();
 
     let server = TcpListener::bind(&addr).unwrap();
 
     info!("register server socket");
-    event_loop.register(&server, SERVER, Ready::readable(), PollOpt::edge()).unwrap();
+    poll.register(&server, SERVER, Ready::readable(), PollOpt::edge()).unwrap();
 
     let client = TcpStream::connect(&addr).unwrap();
 
     // Register client socket only as writable
-    event_loop.register(&client, CLIENT, Ready::readable(), PollOpt::level()).unwrap();
+    poll.register(&client, CLIENT, Ready::readable(), PollOpt::level()).unwrap();
 
     let mut handler = TestHandler::new(server, client);
 
-    // Start the event loop
-    event_loop.run(&mut handler).unwrap();
+    loop {
+        poll.poll(&mut events, None).unwrap();
 
-    assert!(handler.state == 2, "unexpected final state {}", handler.state);
+        if let Some(event) = events.get(0) {
+            if event.readiness().is_readable() {
+                handler.handle_read(&mut poll, event.token());
+            }
+
+            if event.readiness().is_writable() {
+                handler.handle_write(&mut poll, event.token());
+                break;
+            }
+        }
+    }
+
+    poll.poll(&mut events, Some(Duration::from_millis(100))).unwrap();
+    assert_eq!(events.len(), 0);
 }
 
 #[test]