From 5357db39cde8fc04bcc88042e7b4933a5f1ed483 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Tue, 2 Sep 2025 16:46:38 +0300 Subject: layout/tests: Extract fullscreen tests to submodule --- src/layout/tests.rs | 397 +--------------------------------------------------- 1 file changed, 1 insertion(+), 396 deletions(-) (limited to 'src/layout/tests.rs') diff --git a/src/layout/tests.rs b/src/layout/tests.rs index 83cb47c2..dc628198 100644 --- a/src/layout/tests.rs +++ b/src/layout/tests.rs @@ -12,6 +12,7 @@ use smithay::utils::Rectangle; use super::*; mod animations; +mod fullscreen; impl Default for Layout { fn default() -> Self { @@ -2185,39 +2186,6 @@ fn move_workspace_to_output() { assert!(monitors[1].workspaces[0].has_windows()); } -#[test] -fn fullscreen() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::FullscreenWindow(1), - ]; - - check_ops(&ops); -} - -#[test] -fn unfullscreen_window_in_column() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::AddWindow { - params: TestWindowParams::new(2), - }, - Op::ConsumeOrExpelWindowLeft { id: None }, - Op::SetFullscreenWindow { - window: 2, - is_fullscreen: false, - }, - ]; - - check_ops(&ops); -} - #[test] fn open_right_of_on_different_workspace() { let ops = [ @@ -2293,95 +2261,6 @@ fn open_right_of_on_different_workspace_ewaf() { ); } -#[test] -fn unfullscreen_view_offset_not_reset_on_removal() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::FullscreenWindow(0), - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::ConsumeOrExpelWindowRight { id: None }, - ]; - - check_ops(&ops); -} - -#[test] -fn unfullscreen_view_offset_not_reset_on_consume() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::FullscreenWindow(0), - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::ConsumeWindowIntoColumn, - ]; - - check_ops(&ops); -} - -#[test] -fn unfullscreen_view_offset_not_reset_on_quick_double_toggle() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::FullscreenWindow(0), - Op::FullscreenWindow(0), - ]; - - check_ops(&ops); -} - -#[test] -fn unfullscreen_view_offset_set_on_fullscreening_inactive_tile_in_column() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::ConsumeOrExpelWindowLeft { id: None }, - Op::FullscreenWindow(0), - ]; - - check_ops(&ops); -} - -#[test] -fn unfullscreen_view_offset_not_reset_on_gesture() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::FullscreenWindow(1), - Op::ViewOffsetGestureBegin { - output_idx: 1, - workspace_idx: None, - is_touchpad: true, - }, - Op::ViewOffsetGestureEnd { - is_touchpad: Some(true), - }, - ]; - - check_ops(&ops); -} - #[test] fn removing_all_outputs_preserves_empty_named_workspaces() { let ops = [ @@ -2521,39 +2400,6 @@ fn one_window_in_column_becomes_weight_1() { check_ops(&ops); } -#[test] -fn one_window_in_column_becomes_weight_1_after_fullscreen() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::ConsumeOrExpelWindowLeft { id: None }, - Op::AddWindow { - params: TestWindowParams::new(2), - }, - Op::ConsumeOrExpelWindowLeft { id: None }, - Op::SetWindowHeight { - id: None, - change: SizeChange::SetFixed(100), - }, - Op::Communicate(2), - Op::FocusWindowUp, - Op::SetWindowHeight { - id: None, - change: SizeChange::SetFixed(200), - }, - Op::Communicate(1), - Op::CloseWindow(0), - Op::FullscreenWindow(1), - ]; - - check_ops(&ops); -} - #[test] fn fixed_height_takes_max_non_auto_into_account() { let ops = [ @@ -3364,146 +3210,6 @@ fn preset_column_width_reset_after_set_width() { assert_eq!(win.requested_size().unwrap().w, 500); } -#[test] -fn disable_tabbed_mode_in_fullscreen() { - let ops = [ - Op::AddOutput(0), - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::ConsumeOrExpelWindowLeft { id: None }, - Op::ToggleColumnTabbedDisplay, - Op::FullscreenWindow(0), - Op::ToggleColumnTabbedDisplay, - ]; - - check_ops(&ops); -} - -#[test] -fn unfullscreen_with_large_border() { - let ops = [ - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::FullscreenWindow(0), - Op::Communicate(0), - Op::FullscreenWindow(0), - ]; - - let options = Options { - border: niri_config::Border { - off: false, - width: niri_config::FloatOrInt(10000.), - ..Default::default() - }, - ..Default::default() - }; - check_ops_with_options(options, &ops); -} - -#[test] -fn fullscreen_to_windowed_fullscreen() { - let ops = [ - Op::AddOutput(0), - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::FullscreenWindow(0), - Op::Communicate(0), // Make sure it goes into fullscreen. - Op::ToggleWindowedFullscreen(0), - ]; - - check_ops(&ops); -} - -#[test] -fn windowed_fullscreen_to_fullscreen() { - let ops = [ - Op::AddOutput(0), - Op::AddWindow { - params: TestWindowParams::new(0), - }, - Op::FullscreenWindow(0), - Op::Communicate(0), // Commit fullscreen state. - Op::ToggleWindowedFullscreen(0), // Switch is_fullscreen() to false. - Op::FullscreenWindow(0), // Switch is_fullscreen() back to true. - ]; - - check_ops(&ops); -} - -#[test] -fn move_pending_unfullscreen_window_out_of_active_column() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::FullscreenWindow(1), - Op::Communicate(1), - Op::AddWindow { - params: TestWindowParams::new(2), - }, - Op::ConsumeWindowIntoColumn, - // Window 1 is now pending unfullscreen. - // Moving it out should reset view_offset_before_fullscreen. - Op::MoveWindowToWorkspaceDown(true), - ]; - - check_ops(&ops); -} - -#[test] -fn move_unfocused_pending_unfullscreen_window_out_of_active_column() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(1), - }, - Op::FullscreenWindow(1), - Op::Communicate(1), - Op::AddWindow { - params: TestWindowParams::new(2), - }, - Op::ConsumeWindowIntoColumn, - // Window 1 is now pending unfullscreen. - // Moving it out should reset view_offset_before_fullscreen. - Op::FocusWindowDown, - Op::MoveWindowToWorkspace { - window_id: Some(1), - workspace_idx: 1, - }, - ]; - - check_ops(&ops); -} - -#[test] -fn interactive_resize_on_pending_unfullscreen_column() { - let ops = [ - Op::AddWindow { - params: TestWindowParams::new(2), - }, - Op::FullscreenWindow(2), - Op::Communicate(2), - Op::SetFullscreenWindow { - window: 2, - is_fullscreen: false, - }, - Op::InteractiveResizeBegin { - window: 2, - edges: ResizeEdge::RIGHT, - }, - Op::Communicate(2), - ]; - - check_ops(&ops); -} - #[test] fn move_column_to_workspace_unfocused_with_multiple_monitors() { let ops = [ @@ -3567,107 +3273,6 @@ fn move_column_to_workspace_unfocused_with_multiple_monitors() { } } -#[test] -fn interactive_move_unfullscreen_to_floating_stops_dnd_scroll() { - let ops = [ - Op::AddOutput(3), - Op::AddWindow { - params: TestWindowParams { - is_floating: true, - ..TestWindowParams::new(4) - }, - }, - // This moves the window to tiling. - Op::SetFullscreenWindow { - window: 4, - is_fullscreen: true, - }, - // This starts a DnD scroll since we're dragging a tiled window. - Op::InteractiveMoveBegin { - window: 4, - output_idx: 3, - px: 0.0, - py: 0.0, - }, - // This will cause the window to unfullscreen to floating, and should stop the DnD scroll - // since we're no longer dragging a tiled window, but rather a floating one. - Op::InteractiveMoveUpdate { - window: 4, - dx: 0.0, - dy: 15035.31210741684, - output_idx: 3, - px: 0.0, - py: 0.0, - }, - Op::InteractiveMoveEnd { window: 4 }, - ]; - - check_ops(&ops); -} - -#[test] -fn unfullscreen_view_offset_not_reset_during_dnd_gesture() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(3), - }, - Op::FullscreenWindow(3), - Op::Communicate(3), - Op::DndUpdate { - output_idx: 1, - px: 0.0, - py: 0.0, - }, - Op::FullscreenWindow(3), - Op::Communicate(3), - ]; - - check_ops(&ops); -} - -#[test] -fn unfullscreen_view_offset_not_reset_during_gesture() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(3), - }, - Op::FullscreenWindow(3), - Op::Communicate(3), - Op::ViewOffsetGestureBegin { - output_idx: 1, - workspace_idx: None, - is_touchpad: false, - }, - Op::FullscreenWindow(3), - Op::Communicate(3), - ]; - - check_ops(&ops); -} - -#[test] -fn unfullscreen_view_offset_not_reset_during_ongoing_gesture() { - let ops = [ - Op::AddOutput(1), - Op::AddWindow { - params: TestWindowParams::new(3), - }, - Op::ViewOffsetGestureBegin { - output_idx: 1, - workspace_idx: None, - is_touchpad: false, - }, - Op::FullscreenWindow(3), - Op::Communicate(3), - Op::FullscreenWindow(3), - Op::Communicate(3), - ]; - - check_ops(&ops); -} - #[test] fn move_column_to_workspace_down_focus_false_on_floating_window() { let ops = [ -- cgit