mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 10:46:33 +02:00
* [PowerRename][Feature] Add new date/time formatting patterns to GetDatedFileName * [PowerRename][UI] Add date/time shortcut patterns to cheat sheet * [PowerRename][Tests] Add tests for new date/time formatting patterns * [PowerRename] [Refactor] Simplify AM/PM string handling in time patterns
This commit is contained in:
@@ -207,5 +207,53 @@ TEST_METHOD(VerifyLookbehindFails)
|
||||
}
|
||||
}
|
||||
|
||||
TEST_METHOD (Verify12and24HourTimeFormats)
|
||||
{
|
||||
CComPtr<IPowerRenameRegEx> renameRegEx;
|
||||
Assert::IsTrue(CPowerRenameRegEx::s_CreateInstance(&renameRegEx) == S_OK);
|
||||
DWORD flags = MatchAllOccurrences | UseRegularExpressions;
|
||||
Assert::IsTrue(renameRegEx->PutFlags(flags) == S_OK);
|
||||
|
||||
struct TimeTestCase {
|
||||
SYSTEMTIME time; // Input time
|
||||
PCWSTR formatString; // Format pattern
|
||||
PCWSTR expectedResult; // Expected output
|
||||
PCWSTR description; // Description of what we're testing
|
||||
};
|
||||
|
||||
struct TimeTestCase testCases[] = {
|
||||
// Midnight (00:00 / 12:00 AM)
|
||||
{ { 2025, 4, 4, 10, 0, 0, 0, 0 }, L"[$hh:$mm] [$H:$mm $tt]", L"[00:00] [12:00 am]", L"Midnight formatting" },
|
||||
|
||||
// Noon (12:00 / 12:00 PM)
|
||||
{ { 2025, 4, 4, 10, 12, 0, 0, 0 }, L"[$hh:$mm] [$H:$mm $tt]", L"[12:00] [12:00 pm]", L"Noon formatting" },
|
||||
|
||||
// 1:05 AM
|
||||
{ { 2025, 4, 4, 10, 1, 5, 0, 0 }, L"[$h:$m] [$H:$m $tt] [$hh:$mm] [$HH:$mm $TT]",
|
||||
L"[1:5] [1:5 am] [01:05] [01:05 AM]", L"1 AM with various formats" },
|
||||
|
||||
// 11 PM
|
||||
{ { 2025, 4, 4, 10, 23, 45, 0, 0 }, L"[$h:$m] [$H:$m $tt] [$hh:$mm] [$HH:$mm $TT]",
|
||||
L"[23:45] [11:45 pm] [23:45] [11:45 PM]", L"11 PM with various formats" },
|
||||
|
||||
// Mixed formats in complex pattern
|
||||
{ { 2025, 4, 4, 10, 14, 30, 0, 0 }, L"Date: $YYYY-$MM-$DD Time: $hh:$mm (24h) / $H:$mm $tt (12h)",
|
||||
L"Date: 2025-04-10 Time: 14:30 (24h) / 2:30 pm (12h)", L"Complex combined format" },
|
||||
};
|
||||
|
||||
for (int i = 0; i < ARRAYSIZE(testCases); i++)
|
||||
{
|
||||
PWSTR result = nullptr;
|
||||
Assert::IsTrue(renameRegEx->PutSearchTerm(L"test") == S_OK);
|
||||
Assert::IsTrue(renameRegEx->PutReplaceTerm(testCases[i].formatString) == S_OK);
|
||||
Assert::IsTrue(renameRegEx->PutFileTime(testCases[i].time) == S_OK);
|
||||
unsigned long index = {};
|
||||
Assert::IsTrue(renameRegEx->Replace(L"test", &result, index) == S_OK);
|
||||
Assert::IsTrue(wcscmp(result, testCases[i].expectedResult) == 0,
|
||||
(std::wstring(L"Failed test case: ") + testCases[i].description).c_str());
|
||||
CoTaskMemFree(result);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user