diff options
Diffstat (limited to 'src/tests/cases/ui.rs')
-rw-r--r-- | src/tests/cases/ui.rs | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/src/tests/cases/ui.rs b/src/tests/cases/ui.rs index cd5aad9..c5addcf 100644 --- a/src/tests/cases/ui.rs +++ b/src/tests/cases/ui.rs @@ -9,13 +9,17 @@ use ::std::collections::HashMap; use ::std::net::IpAddr; use crate::tests::cases::test_utils::{ - opts_ui, os_input_output, sleep_and_quit_events, test_backend_factory, + opts_ui, os_input_output, os_input_output_factory, sleep_and_quit_events, test_backend_factory, }; +use ::termion::event::{Event, Key}; use packet_builder::payload::PayloadData; use packet_builder::*; use pnet_bandwhich_fork::datalink::DataLinkReceiver; use pnet_bandwhich_fork::packet::Packet; use pnet_base::MacAddr; +use std::iter; + +use crate::tests::fakes::KeyboardEvents; use crate::{start, Opt, OsInputOutput}; @@ -60,6 +64,55 @@ fn basic_startup() { } #[test] +fn pause_by_space() { + let network_frames = vec![NetworkFrames::new(vec![ + Some(build_tcp_packet( + "1.1.1.1", + "10.0.0.2", + 12345, + 443, + b"I have come from 1.1.1.1", + )), + None, // sleep + None, // sleep + None, // sleep + Some(build_tcp_packet( + "1.1.1.1", + "10.0.0.2", + 12345, + 443, + b"Same here, but one second later", + )), + ]) as Box<dyn DataLinkReceiver>]; + + // sleep for 1s, then press space, sleep for 2s, then quit + let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect(); + events.push(Some(Event::Key(Key::Char(' ')))); + events.push(None); + events.push(None); + events.push(Some(Event::Key(Key::Char(' ')))); + events.push(Some(Event::Key(Key::Ctrl('c')))); + + let events = Box::new(KeyboardEvents::new(events)); + let os_input = os_input_output_factory(network_frames, None, None, events); + let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50); + let opts = opts_ui(); + start(backend, os_input, opts); + let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); + let expected_terminal_events = vec![ + Clear, HideCursor, Draw, Flush, Draw, Flush, Draw, Flush, Clear, ShowCursor, + ]; + assert_eq!( + &terminal_events.lock().unwrap()[..], + &expected_terminal_events[..] + ); + assert_eq!(terminal_draw_events_mirror.len(), 3); + assert_snapshot!(&terminal_draw_events_mirror[0]); + assert_snapshot!(&terminal_draw_events_mirror[1]); + assert_snapshot!(&terminal_draw_events_mirror[2]); +} + +#[test] fn one_packet_of_traffic() { let network_frames = vec![NetworkFrames::new(vec![Some(build_tcp_packet( "10.0.0.2", |