summaryrefslogtreecommitdiffstats
path: root/src/tests
diff options
context:
space:
mode:
authorremgodow <remgodow@users.noreply.github.com>2020-09-14 15:57:41 +0200
committerGitHub <noreply@github.com>2020-09-14 15:57:41 +0200
commite8a3f31348d48bafaa2dbe818cf7bc850d4d3ec5 (patch)
tree9c1f08c179119b898a940eabcb679c8cb985477b /src/tests
parentd993d070a319c164096e6a1dc7b81cf3d3f409a2 (diff)
feat(ui): crossplatform terminal resize handling using crossterm Event::Resize (#186)
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/cases/snapshots/ui__traffic_with_winch_event-2.snap6
-rw-r--r--src/tests/cases/snapshots/ui__traffic_with_winch_event-3.snap6
-rw-r--r--src/tests/cases/test_utils.rs25
-rw-r--r--src/tests/cases/ui.rs34
-rw-r--r--src/tests/fakes/fake_input.rs18
5 files changed, 34 insertions, 55 deletions
diff --git a/src/tests/cases/snapshots/ui__traffic_with_winch_event-2.snap b/src/tests/cases/snapshots/ui__traffic_with_winch_event-2.snap
index 9365740..7707702 100644
--- a/src/tests/cases/snapshots/ui__traffic_with_winch_event-2.snap
+++ b/src/tests/cases/snapshots/ui__traffic_with_winch_event-2.snap
@@ -2,9 +2,11 @@
source: src/tests/cases/ui.rs
expression: "&terminal_draw_events_mirror[1]"
---
+ 21Bps / 0Bps
+ 1 1 21Bps / 0Bps 1.1.1.1 1 21Bps / 0Bps
@@ -28,9 +30,7 @@ expression: "&terminal_draw_events_mirror[1]"
-
-
-
+ <interface_name>:443 => 1.1.1.1:12345 (tcp) 1 21Bps / 0Bps
diff --git a/src/tests/cases/snapshots/ui__traffic_with_winch_event-3.snap b/src/tests/cases/snapshots/ui__traffic_with_winch_event-3.snap
index e973e48..d710afb 100644
--- a/src/tests/cases/snapshots/ui__traffic_with_winch_event-3.snap
+++ b/src/tests/cases/snapshots/ui__traffic_with_winch_event-3.snap
@@ -2,11 +2,9 @@
source: src/tests/cases/ui.rs
expression: "&terminal_draw_events_mirror[2]"
---
- 21Bps / 0Bps
- 1 1 21Bps / 0Bps 1.1.1.1 1 21Bps / 0Bps
@@ -30,7 +28,9 @@ expression: "&terminal_draw_events_mirror[2]"
- <interface_name>:443 => 1.1.1.1:12345 (tcp) 1 21Bps / 0Bps
+
+
+
diff --git a/src/tests/cases/test_utils.rs b/src/tests/cases/test_utils.rs
index 7982a2d..bd90399 100644
--- a/src/tests/cases/test_utils.rs
+++ b/src/tests/cases/test_utils.rs
@@ -1,6 +1,6 @@
use crate::tests::fakes::{
- create_fake_dns_client, create_fake_on_winch, get_interfaces, get_open_sockets, KeyboardEvents,
- NetworkFrames, TerminalEvent, TestBackend,
+ create_fake_dns_client, get_interfaces, get_open_sockets, NetworkFrames, TerminalEvent,
+ TerminalEvents, TestBackend,
};
use std::iter;
@@ -17,13 +17,23 @@ use packet_builder::payload::PayloadData;
use pnet::packet::Packet;
use pnet_base::MacAddr;
-pub fn sleep_and_quit_events(sleep_num: usize) -> Box<KeyboardEvents> {
+pub fn sleep_and_quit_events(sleep_num: usize) -> Box<TerminalEvents> {
let mut events: Vec<Option<Event>> = iter::repeat(None).take(sleep_num).collect();
events.push(Some(Event::Key(KeyEvent {
modifiers: KeyModifiers::CONTROL,
code: KeyCode::Char('c'),
})));
- Box::new(KeyboardEvents::new(events))
+ Box::new(TerminalEvents::new(events))
+}
+
+pub fn sleep_resize_and_quit_events(sleep_num: usize) -> Box<TerminalEvents> {
+ let mut events: Vec<Option<Event>> = iter::repeat(None).take(sleep_num).collect();
+ events.push(Some(Event::Resize(100, 100)));
+ events.push(Some(Event::Key(KeyEvent {
+ modifiers: KeyModifiers::CONTROL,
+ code: KeyCode::Char('c'),
+ })));
+ Box::new(TerminalEvents::new(events))
}
pub fn build_tcp_packet(
@@ -114,9 +124,6 @@ pub fn os_input_output_factory(
dns_client: Option<Client>,
keyboard_events: Box<dyn Iterator<Item = Event> + Send>,
) -> OsInputOutput {
- let on_winch = create_fake_on_winch(false);
- let cleanup = Box::new(|| {});
-
let write_to_stdout: Box<dyn FnMut(String) + Send> = match stdout {
Some(stdout) => Box::new({
move |output: String| {
@@ -131,10 +138,8 @@ pub fn os_input_output_factory(
network_interfaces: get_interfaces(),
network_frames,
get_open_sockets,
- keyboard_events,
+ terminal_events: keyboard_events,
dns_client,
- on_winch,
- cleanup,
write_to_stdout,
}
}
diff --git a/src/tests/cases/ui.rs b/src/tests/cases/ui.rs
index 1037a67..9bbcf86 100644
--- a/src/tests/cases/ui.rs
+++ b/src/tests/cases/ui.rs
@@ -1,6 +1,6 @@
use crate::tests::fakes::TerminalEvent::*;
use crate::tests::fakes::{
- create_fake_dns_client, create_fake_on_winch, get_interfaces, get_open_sockets, NetworkFrames,
+ create_fake_dns_client, get_interfaces, get_open_sockets, NetworkFrames,
};
use ::insta::assert_snapshot;
@@ -10,13 +10,13 @@ use ::std::net::IpAddr;
use crate::tests::cases::test_utils::{
build_tcp_packet, opts_ui, os_input_output, os_input_output_factory, sample_frames,
- sleep_and_quit_events, test_backend_factory,
+ sleep_and_quit_events, sleep_resize_and_quit_events, test_backend_factory,
};
use ::crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers};
use pnet::datalink::DataLinkReceiver;
use std::iter;
-use crate::tests::fakes::KeyboardEvents;
+use crate::tests::fakes::TerminalEvents;
use crate::{start, Opt, OsInputOutput, RenderOpts};
@@ -81,7 +81,7 @@ fn pause_by_space() {
code: KeyCode::Char('c'),
})));
- let events = Box::new(KeyboardEvents::new(events));
+ 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();
@@ -136,7 +136,7 @@ fn rearranged_by_tab() {
code: KeyCode::Char('c'),
})));
- let events = Box::new(KeyboardEvents::new(events));
+ 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();
@@ -1077,18 +1077,14 @@ fn traffic_with_host_names() {
String::from("i-like-cheese.com"),
);
let dns_client = create_fake_dns_client(ips_to_hostnames);
- let on_winch = create_fake_on_winch(false);
- let cleanup = Box::new(|| {});
let write_to_stdout = Box::new(move |_output: String| {});
let os_input = OsInputOutput {
network_interfaces: get_interfaces(),
network_frames,
get_open_sockets,
- keyboard_events: sleep_and_quit_events(3),
+ terminal_events: sleep_and_quit_events(3),
dns_client,
- on_winch,
- cleanup,
write_to_stdout,
};
let opts = opts_ui();
@@ -1186,18 +1182,14 @@ fn truncate_long_hostnames() {
String::from("i-like-cheese.com"),
);
let dns_client = create_fake_dns_client(ips_to_hostnames);
- let on_winch = create_fake_on_winch(false);
- let cleanup = Box::new(|| {});
let write_to_stdout = Box::new(move |_output: String| {});
let os_input = OsInputOutput {
network_interfaces: get_interfaces(),
network_frames,
get_open_sockets,
- keyboard_events: sleep_and_quit_events(3),
+ terminal_events: sleep_and_quit_events(3),
dns_client,
- on_winch,
- cleanup,
write_to_stdout,
};
let opts = opts_ui();
@@ -1294,18 +1286,14 @@ fn no_resolve_mode() {
String::from("i-like-cheese.com"),
);
let dns_client = None;
- let on_winch = create_fake_on_winch(false);
- let cleanup = Box::new(|| {});
let write_to_stdout = Box::new(move |_output: String| {});
let os_input = OsInputOutput {
network_interfaces: get_interfaces(),
network_frames,
get_open_sockets,
- keyboard_events: sleep_and_quit_events(3),
+ terminal_events: sleep_and_quit_events(3),
dns_client,
- on_winch,
- cleanup,
write_to_stdout,
};
let opts = opts_ui();
@@ -1338,18 +1326,14 @@ fn traffic_with_winch_event() {
let (terminal_events, terminal_draw_events, backend) = test_backend_factory(190, 50);
let dns_client = create_fake_dns_client(HashMap::new());
- let on_winch = create_fake_on_winch(true);
- let cleanup = Box::new(|| {});
let write_to_stdout = Box::new(move |_output: String| {});
let os_input = OsInputOutput {
network_interfaces: get_interfaces(),
network_frames,
get_open_sockets,
- keyboard_events: sleep_and_quit_events(2),
+ terminal_events: sleep_resize_and_quit_events(2),
dns_client,
- on_winch,
- cleanup,
write_to_stdout,
};
let opts = opts_ui();
diff --git a/src/tests/fakes/fake_input.rs b/src/tests/fakes/fake_input.rs
index 5e9e913..0fdf63a 100644
--- a/src/tests/fakes/fake_input.rs
+++ b/src/tests/fakes/fake_input.rs
@@ -13,21 +13,20 @@ use crate::{
dns::{self, Lookup},
Connection, Protocol,
},
- os::OnSigWinch,
OpenSockets,
};
-pub struct KeyboardEvents {
+pub struct TerminalEvents {
pub events: Vec<Option<Event>>,
}
-impl KeyboardEvents {
+impl TerminalEvents {
pub fn new(mut events: Vec<Option<Event>>) -> Self {
events.reverse(); // this is so that we do not have to shift the array
- KeyboardEvents { events }
+ TerminalEvents { events }
}
}
-impl Iterator for KeyboardEvents {
+impl Iterator for TerminalEvents {
type Item = Event;
fn next(&mut self) -> Option<Event> {
match self.events.pop() {
@@ -157,15 +156,6 @@ pub fn get_interfaces() -> Vec<NetworkInterface> {
}]
}
-pub fn create_fake_on_winch(should_send_winch_event: bool) -> Box<OnSigWinch> {
- Box::new(move |cb| {
- if should_send_winch_event {
- thread::sleep(time::Duration::from_millis(900));
- cb()
- }
- })
-}
-
pub fn create_fake_dns_client(ips_to_hosts: HashMap<IpAddr, String>) -> Option<dns::Client> {
let runtime = Runtime::new().unwrap();
let dns_client = dns::Client::new(FakeResolver(ips_to_hosts), runtime).unwrap();