summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2019-10-09 21:53:23 +0200
committerAram Drevekenin <aram@poor.dev>2019-10-09 21:53:23 +0200
commit3e1b6d18bcc0a678c1da1be4a8bf53c19fbb98bd (patch)
treed02586aa62c16e7d5c69368777463a219dea71d6
parent55c830d6bb15af66534ba81fdb9a130b63144d4a (diff)
test(ui): new details and responsive layout
-rw-r--r--src/tests/fakes/fake_input.rs10
-rw-r--r--src/tests/fakes/fake_output.rs23
-rw-r--r--src/tests/mod.rs407
-rw-r--r--src/tests/snapshots/tests__basic_startup.snap8
-rw-r--r--src/tests/snapshots/tests__bi_directional_traffic-2.snap8
-rw-r--r--src/tests/snapshots/tests__bi_directional_traffic.snap8
-rw-r--r--src/tests/snapshots/tests__layout_full_width_under_30_height-2.snap34
-rw-r--r--src/tests/snapshots/tests__layout_full_width_under_30_height.snap34
-rw-r--r--src/tests/snapshots/tests__layout_under_120_width_full_height-2.snap55
-rw-r--r--src/tests/snapshots/tests__layout_under_120_width_full_height.snap55
-rw-r--r--src/tests/snapshots/tests__layout_under_120_width_under_30_height-2.snap34
-rw-r--r--src/tests/snapshots/tests__layout_under_120_width_under_30_height.snap34
-rw-r--r--src/tests/snapshots/tests__layout_under_120_width_under_full_height-2.snap55
-rw-r--r--src/tests/snapshots/tests__layout_under_120_width_under_full_height.snap55
-rw-r--r--src/tests/snapshots/tests__layout_under_150_width_full_height-2.snap55
-rw-r--r--src/tests/snapshots/tests__layout_under_150_width_full_height.snap55
-rw-r--r--src/tests/snapshots/tests__layout_under_150_width_under_30_height-2.snap34
-rw-r--r--src/tests/snapshots/tests__layout_under_150_width_under_30_height.snap34
-rw-r--r--src/tests/snapshots/tests__multiple_connections_from_remote_ip-2.snap10
-rw-r--r--src/tests/snapshots/tests__multiple_connections_from_remote_ip.snap8
-rw-r--r--src/tests/snapshots/tests__multiple_packets_of_traffic_from_different_connections-2.snap12
-rw-r--r--src/tests/snapshots/tests__multiple_packets_of_traffic_from_different_connections.snap8
-rw-r--r--src/tests/snapshots/tests__multiple_packets_of_traffic_from_single_connection-2.snap8
-rw-r--r--src/tests/snapshots/tests__multiple_packets_of_traffic_from_single_connection.snap8
-rw-r--r--src/tests/snapshots/tests__multiple_processes_with_multiple_connections-2.snap20
-rw-r--r--src/tests/snapshots/tests__multiple_processes_with_multiple_connections.snap8
-rw-r--r--src/tests/snapshots/tests__one_packet_of_traffic-2.snap8
-rw-r--r--src/tests/snapshots/tests__one_packet_of_traffic.snap8
-rw-r--r--src/tests/snapshots/tests__one_process_with_multiple_connections-2.snap12
-rw-r--r--src/tests/snapshots/tests__one_process_with_multiple_connections.snap8
-rw-r--r--src/tests/snapshots/tests__sustained_traffic_from_multiple_processes-2.snap12
-rw-r--r--src/tests/snapshots/tests__sustained_traffic_from_multiple_processes.snap12
-rw-r--r--src/tests/snapshots/tests__sustained_traffic_from_multiple_processes_bi_directional-2.snap12
-rw-r--r--src/tests/snapshots/tests__sustained_traffic_from_multiple_processes_bi_directional.snap12
-rw-r--r--src/tests/snapshots/tests__sustained_traffic_from_one_process-2.snap8
-rw-r--r--src/tests/snapshots/tests__sustained_traffic_from_one_process.snap8
-rw-r--r--src/tests/snapshots/tests__traffic_with_host_names-2.snap12
-rw-r--r--src/tests/snapshots/tests__traffic_with_host_names.snap12
-rw-r--r--src/tests/snapshots/tests__traffic_with_winch_event-3.snap6
-rw-r--r--src/tests/snapshots/tests__traffic_with_winch_event.snap6
40 files changed, 1070 insertions, 146 deletions
diff --git a/src/tests/fakes/fake_input.rs b/src/tests/fakes/fake_input.rs
index ea1f34c..b45587b 100644
--- a/src/tests/fakes/fake_input.rs
+++ b/src/tests/fakes/fake_input.rs
@@ -89,8 +89,8 @@ pub fn get_open_sockets() -> HashMap<Connection, String> {
let mut open_sockets = HashMap::new();
open_sockets.insert(
Connection::new(
- SocketAddr::new(IpAddr::V4(Ipv4Addr::new(10, 0, 0, 2)), 443),
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(1, 1, 1, 1)), 12345),
+ 443,
Protocol::Tcp,
)
.unwrap(),
@@ -98,8 +98,8 @@ pub fn get_open_sockets() -> HashMap<Connection, String> {
);
open_sockets.insert(
Connection::new(
- SocketAddr::new(IpAddr::V4(Ipv4Addr::new(10, 0, 0, 2)), 443),
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(2, 2, 2, 2)), 54321),
+ 443,
Protocol::Tcp,
)
.unwrap(),
@@ -107,8 +107,8 @@ pub fn get_open_sockets() -> HashMap<Connection, String> {
);
open_sockets.insert(
Connection::new(
- SocketAddr::new(IpAddr::V4(Ipv4Addr::new(10, 0, 0, 2)), 443),
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(3, 3, 3, 3)), 1337),
+ 443,
Protocol::Tcp,
)
.unwrap(),
@@ -116,8 +116,8 @@ pub fn get_open_sockets() -> HashMap<Connection, String> {
);
open_sockets.insert(
Connection::new(
- SocketAddr::new(IpAddr::V4(Ipv4Addr::new(10, 0, 0, 2)), 443),
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(4, 4, 4, 4)), 1337),
+ 443,
Protocol::Tcp,
)
.unwrap(),
@@ -125,8 +125,8 @@ pub fn get_open_sockets() -> HashMap<Connection, String> {
);
open_sockets.insert(
Connection::new(
- SocketAddr::new(IpAddr::V4(Ipv4Addr::new(10, 0, 0, 2)), 443),
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(1, 1, 1, 1)), 12346),
+ 443,
Protocol::Tcp,
)
.unwrap(),
diff --git a/src/tests/fakes/fake_output.rs b/src/tests/fakes/fake_output.rs
index 6fb356c..2112371 100644
--- a/src/tests/fakes/fake_output.rs
+++ b/src/tests/fakes/fake_output.rs
@@ -18,20 +18,24 @@ pub enum TerminalEvent {
pub struct TestBackend {
pub events: Arc<Mutex<Vec<TerminalEvent>>>,
pub draw_events: Arc<Mutex<Vec<String>>>,
- terminal_width: u16,
- terminal_height: u16,
+ terminal_width: Arc<Mutex<u16>>,
+ terminal_height: Arc<Mutex<u16>>,
}
impl TestBackend {
pub fn new(
log: Arc<Mutex<Vec<TerminalEvent>>>,
draw_log: Arc<Mutex<Vec<String>>>,
+ terminal_width: Arc<Mutex<u16>>, // 190
+ terminal_height: Arc<Mutex<u16>>, // 50
) -> TestBackend {
TestBackend {
events: log,
draw_events: draw_log,
- terminal_width: 190,
- terminal_height: 50,
+ terminal_width,
+ terminal_height,
+// terminal_width: 190,
+// terminal_height: 50,
}
}
}
@@ -78,8 +82,10 @@ impl Backend for TestBackend {
for (x, y, cell) in content {
coordinates.insert(Point { x, y }, cell);
}
- for y in 0..self.terminal_height {
- for x in 0..self.terminal_width {
+ let terminal_height = self.terminal_height.lock().unwrap();
+ let terminal_width = self.terminal_width.lock().unwrap();
+ for y in 0..*terminal_height {
+ for x in 0..*terminal_width {
match coordinates.get(&Point { x, y }) {
Some(cell) => {
// this will contain no style information at all
@@ -98,7 +104,10 @@ impl Backend for TestBackend {
}
fn size(&self) -> io::Result<Rect> {
- Ok(Rect::new(0, 0, self.terminal_width, self.terminal_height))
+ let terminal_height = self.terminal_height.lock().unwrap();
+ let terminal_width = self.terminal_width.lock().unwrap();
+
+ Ok(Rect::new(0, 0, *terminal_width, *terminal_height))
}
fn flush(&mut self) -> io::Result<()> {
diff --git a/src/tests/mod.rs b/src/tests/mod.rs
index 853a056..bb6da95 100644
--- a/src/tests/mod.rs
+++ b/src/tests/mod.rs
@@ -59,10 +59,12 @@ fn basic_startup() {
None, // sleep
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -102,10 +104,12 @@ fn one_packet_of_traffic() {
b"I am a fake tcp packet",
))]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -157,10 +161,12 @@ fn bi_directional_traffic() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -212,10 +218,12 @@ fn multiple_packets_of_traffic_from_different_connections() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let receive_winch = Box::new(create_fake_receive_winch(false));
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
@@ -267,10 +275,12 @@ fn multiple_packets_of_traffic_from_single_connection() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -322,10 +332,12 @@ fn one_process_with_multiple_connections() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -391,10 +403,12 @@ fn multiple_processes_with_multiple_connections() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -446,10 +460,12 @@ fn multiple_connections_from_remote_ip() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -503,10 +519,12 @@ fn sustained_traffic_from_one_process() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -574,10 +592,12 @@ fn sustained_traffic_from_multiple_processes() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -673,10 +693,12 @@ fn sustained_traffic_from_multiple_processes_bi_directional() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(false));
@@ -772,10 +794,12 @@ fn traffic_with_host_names() {
)),
]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let mut ips_to_hostnames = HashMap::new();
ips_to_hostnames.insert(
@@ -831,10 +855,12 @@ fn traffic_with_winch_event() {
b"I am a fake tcp packet",
))]);
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(50));
let terminal_events = LogWithMirror::new(Vec::new());
let terminal_draw_events = LogWithMirror::new(Vec::new());
- let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write);
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
let network_interface = get_interface();
let lookup_addr = create_fake_lookup_addr(HashMap::new());
let receive_winch = Box::new(create_fake_receive_winch(true));
@@ -862,3 +888,358 @@ fn traffic_with_winch_event() {
assert_snapshot!(&terminal_draw_events_mirror[1]);
assert_snapshot!(&terminal_draw_events_mirror[2]);
}
+
+#[test]
+fn layout_full_width_under_30_height() {
+ let keyboard_events = Box::new(KeyboardEvents::new(vec![
+ None, // sleep
+ None, // sleep
+ Some(Event::Key(Key::Ctrl('c'))),
+ ]));
+ let network_frames = 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",
+ )),
+ Some(build_tcp_packet(
+ "3.3.3.3",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"Awesome, I'm from 3.3.3.3",
+ )),
+ Some(build_tcp_packet(
+ "2.2.2.2",
+ "10.0.0.2",
+ 54321,
+ 443,
+ b"You know, 2.2.2.2 is really nice!",
+ )),
+ Some(build_tcp_packet(
+ "4.4.4.4",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"I'm partial to 4.4.4.4",
+ )),
+ ]);
+
+ let terminal_width = Arc::new(Mutex::new(190));
+ let terminal_height = Arc::new(Mutex::new(29));
+ let terminal_events = LogWithMirror::new(Vec::new());
+ let terminal_draw_events = LogWithMirror::new(Vec::new());
+
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
+ let network_interface = get_interface();
+ let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let receive_winch = Box::new(create_fake_receive_winch(false));
+
+ let os_input = crate::OsInput {
+ network_interface,
+ network_frames,
+ get_open_sockets,
+ keyboard_events,
+ lookup_addr,
+ receive_winch,
+ };
+ crate::start(backend, os_input);
+
+ let terminal_events_mirror = terminal_events.mirror.lock().unwrap();
+ let terminal_draw_events_mirror = terminal_draw_events.mirror.lock().unwrap();
+
+ let expected_terminal_events = vec![
+ Clear, HideCursor, Draw, Flush, Draw, Flush, Clear, ShowCursor,
+ ];
+ assert_eq!(&terminal_events_mirror[..], &expected_terminal_events[..]);
+
+ assert_eq!(terminal_draw_events_mirror.len(), 2);
+ assert_snapshot!(&terminal_draw_events_mirror[0]);
+ assert_snapshot!(&terminal_draw_events_mirror[1]);
+}
+
+#[test]
+fn layout_under_150_width_full_height() {
+ let keyboard_events = Box::new(KeyboardEvents::new(vec![
+ None, // sleep
+ None, // sleep
+ Some(Event::Key(Key::Ctrl('c'))),
+ ]));
+ let network_frames = 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",
+ )),
+ Some(build_tcp_packet(
+ "3.3.3.3",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"Awesome, I'm from 3.3.3.3",
+ )),
+ Some(build_tcp_packet(
+ "2.2.2.2",
+ "10.0.0.2",
+ 54321,
+ 443,
+ b"You know, 2.2.2.2 is really nice!",
+ )),
+ Some(build_tcp_packet(
+ "4.4.4.4",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"I'm partial to 4.4.4.4",
+ )),
+ ]);
+
+ let terminal_width = Arc::new(Mutex::new(149));
+ let terminal_height = Arc::new(Mutex::new(50));
+ let terminal_events = LogWithMirror::new(Vec::new());
+ let terminal_draw_events = LogWithMirror::new(Vec::new());
+
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
+ let network_interface = get_interface();
+ let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let receive_winch = Box::new(create_fake_receive_winch(false));
+
+ let os_input = crate::OsInput {
+ network_interface,
+ network_frames,
+ get_open_sockets,
+ keyboard_events,
+ lookup_addr,
+ receive_winch,
+ };
+ crate::start(backend, os_input);
+
+ let terminal_events_mirror = terminal_events.mirror.lock().unwrap();
+ let terminal_draw_events_mirror = terminal_draw_events.mirror.lock().unwrap();
+
+ let expected_terminal_events = vec![
+ Clear, HideCursor, Draw, Flush, Draw, Flush, Clear, ShowCursor,
+ ];
+ assert_eq!(&terminal_events_mirror[..], &expected_terminal_events[..]);
+
+ assert_eq!(terminal_draw_events_mirror.len(), 2);
+ assert_snapshot!(&terminal_draw_events_mirror[0]);
+ assert_snapshot!(&terminal_draw_events_mirror[1]);
+}
+
+#[test]
+fn layout_under_150_width_under_30_height () {
+ let keyboard_events = Box::new(KeyboardEvents::new(vec![
+ None, // sleep
+ None, // sleep
+ Some(Event::Key(Key::Ctrl('c'))),
+ ]));
+ let network_frames = 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",
+ )),
+ Some(build_tcp_packet(
+ "3.3.3.3",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"Awesome, I'm from 3.3.3.3",
+ )),
+ Some(build_tcp_packet(
+ "2.2.2.2",
+ "10.0.0.2",
+ 54321,
+ 443,
+ b"You know, 2.2.2.2 is really nice!",
+ )),
+ Some(build_tcp_packet(
+ "4.4.4.4",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"I'm partial to 4.4.4.4",
+ )),
+ ]);
+
+ let terminal_width = Arc::new(Mutex::new(149));
+ let terminal_height = Arc::new(Mutex::new(29));
+ let terminal_events = LogWithMirror::new(Vec::new());
+ let terminal_draw_events = LogWithMirror::new(Vec::new());
+
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
+ let network_interface = get_interface();
+ let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let receive_winch = Box::new(create_fake_receive_winch(false));
+
+ let os_input = crate::OsInput {
+ network_interface,
+ network_frames,
+ get_open_sockets,
+ keyboard_events,
+ lookup_addr,
+ receive_winch,
+ };
+ crate::start(backend, os_input);
+
+ let terminal_events_mirror = terminal_events.mirror.lock().unwrap();
+ let terminal_draw_events_mirror = terminal_draw_events.mirror.lock().unwrap();
+
+ let expected_terminal_events = vec![
+ Clear, HideCursor, Draw, Flush, Draw, Flush, Clear, ShowCursor,
+ ];
+ assert_eq!(&terminal_events_mirror[..], &expected_terminal_events[..]);
+
+ assert_eq!(terminal_draw_events_mirror.len(), 2);
+ assert_snapshot!(&terminal_draw_events_mirror[0]);
+ assert_snapshot!(&terminal_draw_events_mirror[1]);
+}
+
+#[test]
+fn layout_under_120_width_full_height () {
+ let keyboard_events = Box::new(KeyboardEvents::new(vec![
+ None, // sleep
+ None, // sleep
+ Some(Event::Key(Key::Ctrl('c'))),
+ ]));
+ let network_frames = 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",
+ )),
+ Some(build_tcp_packet(
+ "3.3.3.3",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"Awesome, I'm from 3.3.3.3",
+ )),
+ Some(build_tcp_packet(
+ "2.2.2.2",
+ "10.0.0.2",
+ 54321,
+ 443,
+ b"You know, 2.2.2.2 is really nice!",
+ )),
+ Some(build_tcp_packet(
+ "4.4.4.4",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"I'm partial to 4.4.4.4",
+ )),
+ ]);
+
+ let terminal_width = Arc::new(Mutex::new(119));
+ let terminal_height = Arc::new(Mutex::new(50));
+ let terminal_events = LogWithMirror::new(Vec::new());
+ let terminal_draw_events = LogWithMirror::new(Vec::new());
+
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
+ let network_interface = get_interface();
+ let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let receive_winch = Box::new(create_fake_receive_winch(false));
+
+ let os_input = crate::OsInput {
+ network_interface,
+ network_frames,
+ get_open_sockets,
+ keyboard_events,
+ lookup_addr,
+ receive_winch,
+ };
+ crate::start(backend, os_input);
+
+ let terminal_events_mirror = terminal_events.mirror.lock().unwrap();
+ let terminal_draw_events_mirror = terminal_draw_events.mirror.lock().unwrap();
+
+ let expected_terminal_events = vec![
+ Clear, HideCursor, Draw, Flush, Draw, Flush, Clear, ShowCursor,
+ ];
+ assert_eq!(&terminal_events_mirror[..], &expected_terminal_events[..]);
+
+ assert_eq!(terminal_draw_events_mirror.len(), 2);
+ assert_snapshot!(&terminal_draw_events_mirror[0]);
+ assert_snapshot!(&terminal_draw_events_mirror[1]);
+}
+
+#[test]
+fn layout_under_120_width_under_30_height () {
+ let keyboard_events = Box::new(KeyboardEvents::new(vec![
+ None, // sleep
+ None, // sleep
+ Some(Event::Key(Key::Ctrl('c'))),
+ ]));
+ let network_frames = 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",
+ )),
+ Some(build_tcp_packet(
+ "3.3.3.3",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"Awesome, I'm from 3.3.3.3",
+ )),
+ Some(build_tcp_packet(
+ "2.2.2.2",
+ "10.0.0.2",
+ 54321,
+ 443,
+ b"You know, 2.2.2.2 is really nice!",
+ )),
+ Some(build_tcp_packet(
+ "4.4.4.4",
+ "10.0.0.2",
+ 1337,
+ 443,
+ b"I'm partial to 4.4.4.4",
+ )),
+ ]);
+
+ let terminal_width = Arc::new(Mutex::new(119));
+ let terminal_height = Arc::new(Mutex::new(29));
+ let terminal_events = LogWithMirror::new(Vec::new());
+ let terminal_draw_events = LogWithMirror::new(Vec::new());
+
+ let backend = TestBackend::new(terminal_events.write, terminal_draw_events.write, terminal_width, terminal_height);
+ let network_interface = get_interface();
+ let lookup_addr = create_fake_lookup_addr(HashMap::new());
+ let receive_winch = Box::new(create_fake_receive_winch(false));
+
+ let os_input = crate::OsInput {
+ network_interface,
+ network_frames,
+ get_open_sockets,
+ keyboard_events,
+ lookup_addr,
+ receive_winch,