From e0d1efb9972343c76232641365284c50f1054851 Mon Sep 17 00:00:00 2001 From: John Doty Date: Mon, 19 Dec 2022 19:45:07 -0800 Subject: [PATCH] Add a test for that underflow I fixed --- src/client/config.rs | 5 +++++ src/client/ui.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/client/config.rs b/src/client/config.rs index 5f8c9b1..c7f0bea 100644 --- a/src/client/config.rs +++ b/src/client/config.rs @@ -15,6 +15,11 @@ pub struct ServerConfig { } impl ServerConfig { + #[cfg(test)] + pub fn default() -> ServerConfig { + ServerConfig { auto: true, ports: HashMap::new() } + } + pub fn contains_key(&self, port: u16) -> bool { self.ports.contains_key(&port) } diff --git a/src/client/ui.rs b/src/client/ui.rs index 8a6c9f6..c6e89bf 100644 --- a/src/client/ui.rs +++ b/src/client/ui.rs @@ -504,3 +504,30 @@ impl Drop for UI { _ = self.leave_alternate_screen(); } } + +#[cfg(test)] +mod tests { + use super::*; + use assert_matches::assert_matches; + + #[tokio::test] + async fn empty_ports() { + 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(), + }]))); + ui.selection.select(Some(0)); + + // ...but now there are no ports! + ui.handle_internal_event(Some(UIEvent::Ports(vec![]))); + assert_eq!(ui.ports.len(), 0); + assert_matches!(ui.selection.selected(), None); + + drop(sender); + } +}