From 371ef88ecb187d15a85a94ff1355b4bb0718dae6 Mon Sep 17 00:00:00 2001 From: Jerry Kingsbury Date: Tue, 1 Apr 2025 21:15:02 -0500 Subject: [PATCH] test(workspace): visible windows test Created a test for the visible_windows function. The test creates two windows in a workspace and checks to see if the the first created window is the visible window. The test then maximizes the second window and checks to ensure both windows are visible. Expanded visible window test to ensure that a visible window will display when adding another container. --- komorebi/src/workspace.rs | 50 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/komorebi/src/workspace.rs b/komorebi/src/workspace.rs index 700b6b99..cf2d25a1 100644 --- a/komorebi/src/workspace.rs +++ b/komorebi/src/workspace.rs @@ -1779,7 +1779,6 @@ impl Workspace { #[cfg(test)] mod tests { use super::*; - use crate::container::Container; use crate::Window; use std::collections::BTreeSet; @@ -2492,4 +2491,53 @@ mod tests { let floating_windows = workspace.floating_windows_mut(); assert!(floating_windows.contains(&Window { hwnd: 0 })); } + + #[test] + fn test_visible_windows() { + let mut workspace = Workspace::default(); + + { + // Create and add a default Container with 2 windows + let mut container = Container::default(); + container.windows_mut().push_back(Window::from(100)); + container.windows_mut().push_back(Window::from(200)); + workspace.add_container_to_back(container); + } + + { + // visible_windows should return None and 100 + let visible_windows = workspace.visible_windows(); + assert_eq!(visible_windows.len(), 2); + assert!(visible_windows[0].is_none()); + assert_eq!(visible_windows[1].unwrap().hwnd, 100); + } + + { + // Create and add a default Container with 1 window + let mut container = Container::default(); + container.windows_mut().push_back(Window::from(300)); + workspace.add_container_to_back(container); + } + + { + // visible_windows should return None, 100, and 300 + let visible_windows = workspace.visible_windows(); + assert_eq!(visible_windows.len(), 3); + assert!(visible_windows[0].is_none()); + assert_eq!(visible_windows[1].unwrap().hwnd, 100); + assert_eq!(visible_windows[2].unwrap().hwnd, 300); + } + + // Maximize window 200 + workspace.set_maximized_window(Some(Window { hwnd: 200 })); + + { + // visible_windows should return 200, 100, and 300 + let visible_windows = workspace.visible_windows(); + assert_eq!(visible_windows.len(), 3); + assert_eq!(visible_windows[0].unwrap().hwnd, 200); + assert_eq!(visible_windows[1].unwrap().hwnd, 100); + assert_eq!(visible_windows[2].unwrap().hwnd, 300); + } + } }