Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 23 additions & 15 deletions Other/Lossless_Scaling_Manager.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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)
}
88 changes: 88 additions & 0 deletions tests/Other/Lossless_Scaling_Manager_Test.ahk
Original file line number Diff line number Diff line change
@@ -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)
Loading