diff options
Diffstat (limited to 'src/tests/cases/ui.rs')
-rw-r--r-- | src/tests/cases/ui.rs | 333 |
1 files changed, 158 insertions, 175 deletions
diff --git a/src/tests/cases/ui.rs b/src/tests/cases/ui.rs index 01fe8d1..2209284 100644 --- a/src/tests/cases/ui.rs +++ b/src/tests/cases/ui.rs @@ -1,7 +1,8 @@ -use std::{collections::HashMap, iter, net::IpAddr}; +use std::{collections::HashMap, net::IpAddr}; use crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers}; use insta::{assert_debug_snapshot, assert_snapshot}; +use itertools::Itertools; use pnet::datalink::DataLinkReceiver; use rstest::rstest; @@ -22,6 +23,8 @@ use crate::{ Opt, OsInputOutput, }; +const SNAPSHOT_SECTION_SEPARATOR: &str = "\n--- SECTION SEPARATOR ---\n"; + #[test] fn basic_startup() { let network_frames = vec![NetworkFrames::new(vec![ @@ -32,11 +35,11 @@ fn basic_startup() { let os_input = os_input_output(network_frames, 1); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 1); - assert_snapshot!(&terminal_draw_events_mirror[0]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -62,35 +65,28 @@ fn pause_by_space() { )), ]) 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(KeyEvent::new( - KeyCode::Char(' '), - KeyModifiers::NONE, - )))); - events.push(None); - events.push(None); - events.push(Some(Event::Key(KeyEvent::new( - KeyCode::Char(' '), - KeyModifiers::NONE, - )))); - events.push(Some(Event::Key(KeyEvent::new( - KeyCode::Char('c'), - KeyModifiers::CONTROL, - )))); + let events = [ + None, + Some(KeyEvent::new(KeyCode::Char(' '), KeyModifiers::NONE)), + None, + None, + Some(KeyEvent::new(KeyCode::Char(' '), KeyModifiers::NONE)), + Some(KeyEvent::new(KeyCode::Char('c'), KeyModifiers::CONTROL)), + ] + .into_iter() + .map(|ke| ke.map(Event::Key)) + .collect_vec(); let events = Box::new(TerminalEvents::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(); - - 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]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -116,34 +112,28 @@ fn rearranged_by_tab() { )), ]) as Box<dyn DataLinkReceiver>]; - // sleep for 1s, then press tab, sleep for 2s, then quit - let mut events: Vec<Option<Event>> = iter::repeat(None).take(1).collect(); - events.push(None); - events.push(Some(Event::Key(KeyEvent::new( - KeyCode::Tab, - KeyModifiers::NONE, - )))); - events.push(None); - events.push(None); - events.push(Some(Event::Key(KeyEvent::new( - KeyCode::Char('c'), - KeyModifiers::CONTROL, - )))); + let events = [ + None, + None, + Some(KeyEvent::new(KeyCode::Tab, KeyModifiers::NONE)), + None, + None, + Some(KeyEvent::new(KeyCode::Char('c'), KeyModifiers::CONTROL)), + ] + .into_iter() + .map(|ke| ke.map(Event::Key)) + .collect_vec(); let events = Box::new(TerminalEvents::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(); - - assert_eq!(terminal_draw_events_mirror.len(), 5); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2]); - assert_snapshot!(&terminal_draw_events_mirror[3]); - assert_snapshot!(&terminal_draw_events_mirror[4]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -162,10 +152,12 @@ fn basic_only_processes() { }, ..opts_ui() }; - start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - assert_snapshot!(&terminal_draw_events_mirror[0]); + + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); } #[test] @@ -184,10 +176,12 @@ fn basic_processes_with_dns_queries() { }, ..opts_ui() }; - start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - assert_snapshot!(&terminal_draw_events_mirror[0]); + + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); } #[test] @@ -205,10 +199,12 @@ fn basic_only_connections() { }, ..opts_ui() }; - start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - assert_snapshot!(&terminal_draw_events_mirror[0]); + + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); } #[test] @@ -226,10 +222,12 @@ fn basic_only_addresses() { }, ..opts_ui() }; - start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - assert_snapshot!(&terminal_draw_events_mirror[0]); + + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); } #[rstest(sample_frames_short as frames)] @@ -243,11 +241,12 @@ fn two_packets_only_processes(frames: Vec<Box<dyn DataLinkReceiver>>) { }, ..opts_ui() }; - start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); } #[rstest(sample_frames_short as frames)] @@ -261,11 +260,12 @@ fn two_packets_only_connections(frames: Vec<Box<dyn DataLinkReceiver>>) { }, ..opts_ui() }; - start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); } #[rstest(sample_frames_short as frames)] @@ -279,11 +279,12 @@ fn two_packets_only_addresses(frames: Vec<Box<dyn DataLinkReceiver>>) { }, ..opts_ui() }; - start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); } #[test] @@ -302,10 +303,12 @@ fn two_windows_split_horizontally() { }, ..opts_ui() }; - start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - assert_snapshot!(&terminal_draw_events_mirror[0]); + + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); } #[test] @@ -324,10 +327,12 @@ fn two_windows_split_vertically() { }, ..opts_ui() }; - start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - assert_snapshot!(&terminal_draw_events_mirror[0]); + + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); } #[test] @@ -343,12 +348,11 @@ fn one_packet_of_traffic() { let os_input = os_input_output(network_frames, 2); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 2); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -358,12 +362,11 @@ fn bi_directional_traffic(frames: Vec<Box<dyn DataLinkReceiver>>) { let os_input = os_input_output(frames, 2); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 2); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -390,12 +393,11 @@ fn multiple_packets_of_traffic_from_different_connections() { let os_input = os_input_output(network_frames, 2); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 2); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -422,12 +424,11 @@ fn multiple_packets_of_traffic_from_single_connection() { let os_input = os_input_output(network_frames, 2); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 2); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -454,12 +455,11 @@ fn one_process_with_multiple_connections() { let os_input = os_input_output(network_frames, 2); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 2); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -500,12 +500,11 @@ fn multiple_processes_with_multiple_connections() { let os_input = os_input_output(network_frames, 2); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 2); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -532,12 +531,11 @@ fn multiple_connections_from_remote_address() { let os_input = os_input_output(network_frames, 2); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 2); - assert_snapshot!(&terminal_draw_events_mirror[0]); - assert_snapshot!(&terminal_draw_events_mirror[1]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -548,12 +546,11 @@ fn sustained_traffic_from_one_process(frames: Vec<Box<dyn DataLinkReceiver>>) { let os_input = os_input_output(frames, 3); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 3); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -565,12 +562,11 @@ fn sustained_traffic_from_one_process_total(frames: Vec<Box<dyn DataLinkReceiver let mut opts = opts_ui(); opts.render_opts.total_utilization = true; start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 3); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2].replace("1 \n", "2 \n")); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -581,12 +577,11 @@ fn sustained_traffic_from_multiple_processes(frames: Vec<Box<dyn DataLinkReceive let os_input = os_input_output(frames, 3); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 3); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -598,12 +593,11 @@ fn sustained_traffic_from_multiple_processes_total(frames: Vec<Box<dyn DataLinkR let mut opts = opts_ui(); opts.render_opts.total_utilization = true; start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 3); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2].replace("1 \n", "2 \n")); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -616,12 +610,11 @@ fn sustained_traffic_from_multiple_processes_bi_directional( let os_input = os_input_output(frames, 3); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 3); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -635,12 +628,11 @@ fn sustained_traffic_from_multiple_processes_bi_directional_total( let mut opts = opts_ui(); opts.render_opts.total_utilization = true; start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 3); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2].replace("1 \n", "2 \n")); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -674,12 +666,11 @@ fn traffic_with_host_names(network_frames: Vec<Box<dyn DataLinkReceiver>>) { }; let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 3); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -713,12 +704,11 @@ fn truncate_long_hostnames(network_frames: Vec<Box<dyn DataLinkReceiver>>) { }; let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 3); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -752,12 +742,11 @@ fn no_resolve_mode(network_frames: Vec<Box<dyn DataLinkReceiver>>) { }; let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - assert_eq!(terminal_draw_events_mirror.len(), 3); - assert_snapshot!(&terminal_draw_events_mirror[1]); - assert_snapshot!(&terminal_draw_events_mirror[2]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -786,13 +775,11 @@ fn traffic_with_winch_event() { }; let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); - - 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]); + assert_snapshot!(terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR)); assert_debug_snapshot!(terminal_events.lock().unwrap().as_slice()); } @@ -839,20 +826,16 @@ fn layout(#[case] name: &str, #[case] width: u16, #[case] height: u16) { let os_input = os_input_output(network_frames, 2); let opts = opts_ui(); start(backend, os_input, opts); - let terminal_draw_events_mirror = terminal_draw_events.lock().unwrap(); + assert_snapshot!( + format!("layout-{name}-draw_events"), + terminal_draw_events + .lock() + .unwrap() + .join(SNAPSHOT_SECTION_SEPARATOR) + ); assert_debug_snapshot!( format!("layout-{name}-events"), terminal_events.lock().unwrap().as_slice() ); - - assert_eq!(terminal_draw_events_mirror.len(), 2); - assert_snapshot!( - format!("layout-{name}-draw_events-0"), - &terminal_draw_events_mirror[0] - ); - assert_snapshot!( - format!("layout-{name}-draw_events-1"), - &terminal_draw_events_mirror[1] - ); } |