From 81b53355f21f30c73c0e42dcef8ae66b8416d145 Mon Sep 17 00:00:00 2001 From: John Doty Date: Mon, 19 Dec 2022 20:53:26 -0800 Subject: [PATCH] Some more bad tests because I'm bored --- src/client/ui.rs | 75 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 2 deletions(-) diff --git a/src/client/ui.rs b/src/client/ui.rs index c6e89bf..a6da4e6 100644 --- a/src/client/ui.rs +++ b/src/client/ui.rs @@ -510,8 +510,8 @@ mod tests { use super::*; use assert_matches::assert_matches; - #[tokio::test] - async fn empty_ports() { + #[test] + fn empty_ports() { let (sender, receiver) = mpsc::channel(64); let config = ServerConfig::default(); let mut ui = UI::new(receiver, config); @@ -530,4 +530,75 @@ mod tests { drop(sender); } + + #[test] + fn port_change_selection() { + let (sender, receiver) = mpsc::channel(64); + let config = ServerConfig::default(); + let mut ui = UI::new(receiver, config); + + // There are ports... + ui.handle_internal_event(Some(UIEvent::Ports(vec![ + PortDesc { + port: 8080, + desc: "my-service".to_string(), + }, + PortDesc { + port: 8081, + desc: "my-service".to_string(), + }, + ]))); + ui.selection.select(Some(1)); + + // ...but now there is one fewer port, selection should move. + ui.handle_internal_event(Some(UIEvent::Ports(vec![PortDesc { + port: 8080, + desc: "my-service".to_string(), + }]))); + assert_eq!(ui.ports.len(), 1); + assert_matches!(ui.selection.selected(), Some(0)); + + // Put it back but selection doesn't move + ui.handle_internal_event(Some(UIEvent::Ports(vec![ + PortDesc { + port: 8080, + desc: "my-service".to_string(), + }, + PortDesc { + port: 8081, + desc: "my-service".to_string(), + }, + ]))); + assert_eq!(ui.ports.len(), 2); + assert_matches!(ui.selection.selected(), Some(0)); + + drop(sender); + } + + #[test] + fn log_lines() { + let (sender, receiver) = mpsc::channel(64); + let config = ServerConfig::default(); + let mut ui = UI::new(receiver, config); + + // Client and server are all formatted right you know. + ui.handle_internal_event(Some(UIEvent::ServerLine("A".to_string()))); + ui.handle_internal_event(Some(UIEvent::LogLine( + Level::Info, + "A".to_string(), + ))); + assert_eq!(ui.lines.len(), 2); + assert_eq!(ui.lines[0], "[SERVER] A".to_string()); + assert_eq!(ui.lines[1], "[CLIENT] A".to_string()); + + // Make sure we bound the log. + for _ in 1..2048 { + ui.handle_internal_event(Some(UIEvent::ServerLine( + "A".to_string(), + ))); + } + assert_eq!(ui.lines.len(), 1024); + + drop(sender); + } }