From 84db05861c41440cb9e854b90429bfe7a22938c8 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sun, 22 Mar 2026 11:47:42 +0800 Subject: group(disband_on_empty): hyprtester --- .../src/tests/main/moveintoorcreategroup.cpp | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 hyprtester/src/tests/main/moveintoorcreategroup.cpp (limited to 'hyprtester/src') diff --git a/hyprtester/src/tests/main/moveintoorcreategroup.cpp b/hyprtester/src/tests/main/moveintoorcreategroup.cpp new file mode 100644 index 00000000..a604ea47 --- /dev/null +++ b/hyprtester/src/tests/main/moveintoorcreategroup.cpp @@ -0,0 +1,120 @@ +#include "tests.hpp" +#include "../../shared.hpp" +#include "../../hyprctlCompat.hpp" +#include +#include +#include +#include +#include +#include +#include +#include "../shared.hpp" + +static int ret = 0; + +using namespace Hyprutils::OS; +using namespace Hyprutils::Memory; + +static bool test() { + NLog::log("{}Testing moveintoorcreategroup", Colors::GREEN); + + NLog::log("{}Dispatching workspace `moveintoorcreategroup`", Colors::YELLOW); + getFromSocket("/dispatch workspace name:moveintoorcreategroup"); + + OK(getFromSocket("/keyword group:auto_group false")); + + NLog::log("{}Spawning kittyA", Colors::YELLOW); + auto kittyA = Tests::spawnKitty("kitty_A"); + if (!kittyA) { + NLog::log("{}Error: kittyA did not spawn", Colors::RED); + return false; + } + + NLog::log("{}Spawning kittyB", Colors::YELLOW); + auto kittyB = Tests::spawnKitty("kitty_B"); + if (!kittyB) { + NLog::log("{}Error: kittyB did not spawn", Colors::RED); + return false; + } + + NLog::log("{}Expecting 2 windows", Colors::YELLOW); + EXPECT(Tests::windowCount(), 2); + + { + auto str = getFromSocket("/clients"); + EXPECT_NOT_CONTAINS(str, "grouped:"); + } + + OK(getFromSocket("/dispatch focuswindow class:kitty_A")); + + NLog::log("{}Move kittyA into group with kittyB (creates group)", Colors::YELLOW); + OK(getFromSocket("/dispatch moveintoorcreategroup r")); + + { + auto str = getFromSocket("/clients"); + EXPECT_CONTAINS(str, "grouped:"); + } + + NLog::log("{}Verify active window is kitty_A (the moved window)", Colors::YELLOW); + { + auto str = getFromSocket("/activewindow"); + EXPECT_CONTAINS(str, "class: kitty_A"); + } + + NLog::log("{}Kill windows", Colors::YELLOW); + Tests::killAllWindows(); + + NLog::log("{}Expecting 0 windows", Colors::YELLOW); + EXPECT(Tests::windowCount(), 0); + + NLog::log("{}Testing moveintoorcreategroup into existing group", Colors::YELLOW); + + NLog::log("{}Spawning kittyC", Colors::YELLOW); + auto kittyC = Tests::spawnKitty("kitty_C"); + if (!kittyC) { + NLog::log("{}Error: kittyC did not spawn", Colors::RED); + return false; + } + NLog::log("{}Spawning kittyD", Colors::YELLOW); + auto kittyD = Tests::spawnKitty("kitty_D"); + if (!kittyD) { + NLog::log("{}Error: kittyD did not spawn", Colors::RED); + return false; + } + NLog::log("{}Spawning kittyE", Colors::YELLOW); + auto kittyE = Tests::spawnKitty("kitty_E"); + if (!kittyE) { + NLog::log("{}Error: kittyE did not spawn", Colors::RED); + return false; + } + + NLog::log("{}Expecting 3 windows", Colors::YELLOW); + EXPECT(Tests::windowCount(), 3); + + OK(getFromSocket("/dispatch focuswindow class:kitty_D")); + OK(getFromSocket("/dispatch togglegroup")); + + OK(getFromSocket("/dispatch focuswindow class:kitty_E")); + + NLog::log("{}Move kittyE into existing group with kittyD", Colors::YELLOW); + OK(getFromSocket("/dispatch moveintoorcreategroup l")); + + { + auto str = getFromSocket("/clients"); + EXPECT_CONTAINS(str, "grouped:"); + } + + NLog::log("{}Verify active window is kitty_E (the moved window)", Colors::YELLOW); + { + auto str = getFromSocket("/activewindow"); + EXPECT_CONTAINS(str, "class: kitty_E"); + } + + NLog::log("{}Kill windows", Colors::YELLOW); + Tests::killAllWindows(); + OK(getFromSocket("/keyword group:auto_group true")); + + return !ret; +} + +REGISTER_TEST_FN(test) -- cgit v1.2.3