diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/mio/test/test_tick.rs | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/mio/test/test_tick.rs')
-rw-r--r-- | third_party/rust/mio/test/test_tick.rs | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/third_party/rust/mio/test/test_tick.rs b/third_party/rust/mio/test/test_tick.rs new file mode 100644 index 0000000000..8c4cec9b25 --- /dev/null +++ b/third_party/rust/mio/test/test_tick.rs @@ -0,0 +1,64 @@ +use mio::*; +use mio::deprecated::{EventLoop, Handler}; +use mio::net::{TcpListener, TcpStream}; +use {sleep_ms}; + +struct TestHandler { + tick: usize, + state: usize, +} + +impl TestHandler { + fn new() -> TestHandler { + TestHandler { + tick: 0, + state: 0, + } + } +} + +impl Handler for TestHandler { + type Timeout = usize; + type Message = String; + + fn tick(&mut self, _event_loop: &mut EventLoop<TestHandler>) { + debug!("Handler::tick()"); + self.tick += 1; + + assert_eq!(self.state, 1); + self.state = 0; + } + + fn ready(&mut self, _event_loop: &mut EventLoop<TestHandler>, token: Token, events: Ready) { + debug!("READY: {:?} - {:?}", token, events); + if events.is_readable() { + debug!("Handler::ready() readable event"); + assert_eq!(token, Token(0)); + assert_eq!(self.state, 0); + self.state = 1; + } + } +} + +#[test] +pub fn test_tick() { + debug!("Starting TEST_TICK"); + let mut event_loop = EventLoop::new().expect("Couldn't make event loop"); + + let listener = TcpListener::bind(&"127.0.0.1:0".parse().unwrap()).unwrap(); + event_loop.register(&listener, Token(0), Ready::readable(), PollOpt::level()).unwrap(); + + let client = TcpStream::connect(&listener.local_addr().unwrap()).unwrap(); + event_loop.register(&client, Token(1), Ready::readable(), PollOpt::edge()).unwrap(); + + sleep_ms(250); + + let mut handler = TestHandler::new(); + + for _ in 0..2 { + event_loop.run_once(&mut handler, None).unwrap(); + } + + assert!(handler.tick == 2, "actual={}", handler.tick); + assert!(handler.state == 0, "actual={}", handler.state); +} |