From f9699528eb822d72c90975367011536403a580c5 Mon Sep 17 00:00:00 2001 From: Ven0m0 <82972344+Ven0m0@users.noreply.github.com> Date: Wed, 29 Apr 2026 00:35:56 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20Add=20tests=20for=20Lossless=5FS?= =?UTF-8?q?caling=5FManager=20ToggleLS=20logic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- Other/Lossless_Scaling_Manager.ahk | 38 ++++---- tests/Other/Lossless_Scaling_Manager_Test.ahk | 88 +++++++++++++++++++ 2 files changed, 111 insertions(+), 15 deletions(-) create mode 100644 tests/Other/Lossless_Scaling_Manager_Test.ahk diff --git a/Other/Lossless_Scaling_Manager.ahk b/Other/Lossless_Scaling_Manager.ahk index b82e254..4ed51be 100644 --- a/Other/Lossless_Scaling_Manager.ahk +++ b/Other/Lossless_Scaling_Manager.ahk @@ -13,7 +13,9 @@ EnsureAdmin() { try Run('*RunAs "' A_AhkPath '" "' A_ScriptFullPath '" ' A_Args.Join(" ")) ExitApp } -EnsureAdmin() +if (A_LineFile == A_ScriptFullPath) { + EnsureAdmin() +} MinimizeLS() { try { @@ -35,23 +37,29 @@ StopLS() { try ProcessClose("LosslessScaling.exe") } -ToggleLS() { - if ProcessExist("LosslessScaling.exe") - StopLS() +ToggleLS(mockProcessExist := "", mockStopLS := "", mockStartLS := "") { + fnProcessExist := (mockProcessExist != "") ? mockProcessExist : ProcessExist + fnStopLS := (mockStopLS != "") ? mockStopLS : StopLS + fnStartLS := (mockStartLS != "") ? mockStartLS : StartLS + + if fnProcessExist("LosslessScaling.exe") + fnStopLS() else - StartLS() + fnStartLS() } ; ---------- Dispatch ---------- -cmd := (A_Args.Length ? StrLower(A_Args[1]) : "toggle") -try { - switch cmd { - case "start": StartLS() - case "stop", "close": StopLS() - case "toggle": ToggleLS() - default: - MsgBox("Usage: " A_ScriptName " [start|stop|toggle]") +if (A_LineFile == A_ScriptFullPath) { + cmd := (A_Args.Length ? StrLower(A_Args[1]) : "toggle") + try { + switch cmd { + case "start": StartLS() + case "stop", "close": StopLS() + case "toggle": ToggleLS() + default: + MsgBox("Usage: " A_ScriptName " [start|stop|toggle]") + } + } catch Error as err { + MsgBox("Error: " err.Message) } -} catch Error as err { - MsgBox("Error: " err.Message) } diff --git a/tests/Other/Lossless_Scaling_Manager_Test.ahk b/tests/Other/Lossless_Scaling_Manager_Test.ahk new file mode 100644 index 0000000..c7b3581 --- /dev/null +++ b/tests/Other/Lossless_Scaling_Manager_Test.ahk @@ -0,0 +1,88 @@ +#Requires AutoHotkey v2.0 +#SingleInstance Force + +; Setup testing output +stdout := FileOpen("*", "w `n") +testsPassed := 0 +testsFailed := 0 + +AssertEqual(expected, actual, context) { + global testsPassed, testsFailed, stdout + if (expected == actual) { + testsPassed++ + stdout.WriteLine("PASS: " . context) + } else { + testsFailed++ + stdout.WriteLine("FAIL: " . context . " - Expected '" . expected . "', but got '" . actual . "'") + } +} + +#Include %A_ScriptDir%\..\..\Other\Lossless_Scaling_Manager.ahk + +global mockProcessExistCalled := 0 +global mockProcessExistArg := "" +global mockProcessExistResult := 0 + +global mockStartLSCalled := 0 +global mockStopLSCalled := 0 + +MockProcessExist(exeName) { + global mockProcessExistCalled, mockProcessExistArg, mockProcessExistResult + mockProcessExistCalled++ + mockProcessExistArg := exeName + return mockProcessExistResult +} + +MockStartLS() { + global mockStartLSCalled + mockStartLSCalled++ +} + +MockStopLS() { + global mockStopLSCalled + mockStopLSCalled++ +} + +ResetMocks() { + global mockProcessExistCalled := 0 + global mockProcessExistArg := "" + global mockProcessExistResult := 0 + global mockStartLSCalled := 0 + global mockStopLSCalled := 0 +} + +try { + stdout.WriteLine("Starting ToggleLS tests...") + + ; Test 1: Process exists, should call StopLS + ResetMocks() + mockProcessExistResult := 1234 ; some PID + ToggleLS(MockProcessExist, MockStopLS, MockStartLS) + AssertEqual(1, mockProcessExistCalled, "ToggleLS checks if process exists") + AssertEqual("LosslessScaling.exe", mockProcessExistArg, "ToggleLS checks for LosslessScaling.exe") + AssertEqual(1, mockStopLSCalled, "StopLS called when process exists") + AssertEqual(0, mockStartLSCalled, "StartLS NOT called when process exists") + + ; Test 2: Process does NOT exist, should call StartLS + ResetMocks() + mockProcessExistResult := 0 ; 0 means process not found + ToggleLS(MockProcessExist, MockStopLS, MockStartLS) + AssertEqual(1, mockProcessExistCalled, "ToggleLS checks if process exists") + AssertEqual("LosslessScaling.exe", mockProcessExistArg, "ToggleLS checks for LosslessScaling.exe") + AssertEqual(0, mockStopLSCalled, "StopLS NOT called when process does not exist") + AssertEqual(1, mockStartLSCalled, "StartLS called when process does not exist") + + ; Final Results + stdout.WriteLine("---") + stdout.WriteLine("Tests Passed: " . testsPassed) + stdout.WriteLine("Tests Failed: " . testsFailed) +} catch Error as err { + stdout.WriteLine("Test script threw an error: " . err.Message) + testsFailed++ +} + +if (testsFailed > 0) { + ExitApp(1) +} + +ExitApp(0)