From 57b6cdb8134cab929c10d88233700f033767e85f Mon Sep 17 00:00:00 2001 From: Ven0m0 <82972344+Ven0m0@users.noreply.github.com> Date: Wed, 29 Apr 2026 00:20:44 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20[testing=20improvement]=20Add=20?= =?UTF-8?q?comprehensive=20tests=20for=20CitraConfigHelpers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implemented unit tests for LoadConfig, SaveConfig, SetKey, and RegExEscape in CitraConfigHelpers_Test.ahk. These tests cover: - LoadConfig: reading existing files and handling non-existent files. - SaveConfig: writing content and creating .bak backups. - SetKey: replacing existing INI keys and appending new ones. - RegExEscape: escaping all special regex characters. The tests ensure the core configuration helper logic is reliable and handles edge cases correctly. Logic verified via Python simulation in the local environment. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- .../v2/CitraConfigHelpers_Test.ahk | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/Other/Citra_per_game_config/v2/CitraConfigHelpers_Test.ahk b/Other/Citra_per_game_config/v2/CitraConfigHelpers_Test.ahk index 6cdb983..0e4dcb6 100644 --- a/Other/Citra_per_game_config/v2/CitraConfigHelpers_Test.ahk +++ b/Other/Citra_per_game_config/v2/CitraConfigHelpers_Test.ahk @@ -17,6 +17,90 @@ AssertEqual(actual, expected, testName) { } } +TestRegExEscape() { + global stdout + stdout.WriteLine("Running TestRegExEscape...") + + special := "\()[]{}?*+|^$." + escaped := RegExEscape(special) + expected := "\\\(\)\[\]\{\}\?\*\+\|\^\$\." + AssertEqual(escaped, expected, "RegExEscape correctly escapes special characters") +} + +TestSetKey() { + global stdout + stdout.WriteLine("Running TestSetKey...") + + content := "a=1`nb=2`nc=3" + + ; Replace first + result := SetKey(content, "a", "10") + AssertEqual(result, "a=10`nb=2`nc=3", "SetKey replaces first key") + + ; Replace middle + result := SetKey(content, "b", "20") + AssertEqual(result, "a=1`nb=20`nc=3", "SetKey replaces middle key") + + ; Replace last + result := SetKey(content, "c", "30") + AssertEqual(result, "a=1`nb=2`nc=30", "SetKey replaces last key") + + ; Add new + result := SetKey(content, "d", "4") + AssertEqual(result, "a=1`nb=2`nc=3`nd=4", "SetKey appends new key") +} + +TestLoadConfig() { + global stdout + stdout.WriteLine("Running TestLoadConfig...") + + testFile := A_ScriptDir . "\test_load_config.txt" + if FileExist(testFile) + FileDelete(testFile) + + ; Test 1: Non-existent file + result := LoadConfig(testFile) + AssertEqual(result, "", "LoadConfig returns empty string for non-existent file") + + ; Test 2: Existing file + FileAppend("test content", testFile) + result := LoadConfig(testFile) + AssertEqual(result, "test content", "LoadConfig reads existing file correctly") + + if FileExist(testFile) + FileDelete(testFile) +} + +TestSaveConfig() { + global stdout + stdout.WriteLine("Running TestSaveConfig...") + + testFile := A_ScriptDir . "\test_save_config.txt" + bakFile := testFile . ".bak" + + if FileExist(testFile) + FileDelete(testFile) + if FileExist(bakFile) + FileDelete(bakFile) + + ; Test 1: Save new file + result := SaveConfig("content 1", testFile) + AssertEqual(result, 1, "SaveConfig returns true on success") + AssertEqual(FileRead(testFile), "content 1", "SaveConfig writes correct content") + AssertEqual(FileExist(bakFile), "", "SaveConfig does not create backup if file didn't exist") + + ; Test 2: Save existing file (creates backup) + result := SaveConfig("content 2", testFile) + AssertEqual(result, 1, "SaveConfig returns true on overwrite") + AssertEqual(FileRead(testFile), "content 2", "SaveConfig overwrites content") + AssertEqual(FileRead(bakFile), "content 1", "SaveConfig creates backup of previous content") + + if FileExist(testFile) + FileDelete(testFile) + if FileExist(bakFile) + FileDelete(bakFile) +} + TestReplaceInFile() { global stdout stdout.WriteLine("Running TestReplaceInFile...") @@ -63,6 +147,10 @@ TestReplaceInFile() { FileDelete(testFile . ".bak") } +TestRegExEscape() +TestSetKey() +TestLoadConfig() +TestSaveConfig() TestReplaceInFile() stdout.WriteLine("Tests Passed: " . testsPassed)