mirror of
https://github.com/reactos/reactos.git
synced 2026-05-31 16:31:07 +08:00
[SHELL32][SHELL32_APITEST][SDK] Implement StrRStrA/W (#7621)
Implementing missing features... JIRA issue: CORE-19278 - Move function definitions from stubs.cpp to utils.cpp. - Add prototypes to <undocshell.h>.
This commit is contained in:
committed by
GitHub
parent
aa52c3f5eb
commit
157e18b215
97
modules/rostests/apitests/shell32/StrRStr.cpp
Normal file
97
modules/rostests/apitests/shell32/StrRStr.cpp
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* PROJECT: ReactOS API tests
|
||||
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
||||
* PURPOSE: Test for StrRStrA/W
|
||||
* COPYRIGHT: Copyright 2025 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
|
||||
*/
|
||||
|
||||
#include "shelltest.h"
|
||||
#include <versionhelpers.h>
|
||||
|
||||
typedef PSTR (WINAPI *FN_StrRStrA)(PCSTR, PCSTR, PCSTR pszSearch);
|
||||
typedef PWSTR (WINAPI *FN_StrRStrW)(PCWSTR, PCWSTR, PCWSTR pszSearch);
|
||||
|
||||
static VOID TEST_StrRStrA(VOID)
|
||||
{
|
||||
PCSTR psz, pch;
|
||||
PSTR ret;
|
||||
FN_StrRStrA StrRStrA = (FN_StrRStrA)GetProcAddress(GetModuleHandleW(L"shell32"), MAKEINTRESOURCEA(389));
|
||||
|
||||
if (!StrRStrA)
|
||||
{
|
||||
skip("StrRStrA not found\n");
|
||||
return;
|
||||
}
|
||||
|
||||
psz = "ABCBC";
|
||||
ret = StrRStrA(psz, NULL, "BC");
|
||||
ok_ptr(ret, psz + 3);
|
||||
|
||||
psz = "ABCBC";
|
||||
pch = &psz[2];
|
||||
ret = StrRStrA(psz, pch, "BC");
|
||||
ok_ptr(ret, &psz[1]);
|
||||
|
||||
psz = "ABCBC";
|
||||
ret = StrRStrA(psz, psz, "BC");
|
||||
ok(!ret, "ret was '%s'\n", ret);
|
||||
|
||||
psz = "ABCBC";
|
||||
pch = &psz[lstrlenA(psz)];
|
||||
ret = StrRStrA(psz, pch, "BC");
|
||||
ok_ptr(ret, psz + 3);
|
||||
}
|
||||
|
||||
static VOID TEST_StrRStrW(VOID)
|
||||
{
|
||||
PCWSTR psz, pch;
|
||||
PWSTR ret;
|
||||
FN_StrRStrW StrRStrW = (FN_StrRStrW)GetProcAddress(GetModuleHandleW(L"shell32"), MAKEINTRESOURCEA(392));
|
||||
|
||||
if (!StrRStrW)
|
||||
{
|
||||
skip("StrRStrW not found\n");
|
||||
return;
|
||||
}
|
||||
|
||||
psz = L"ABCBC";
|
||||
ret = StrRStrW(psz, NULL, L"BC");
|
||||
ok_ptr(ret, psz + 3);
|
||||
|
||||
psz = L"ABCBC";
|
||||
pch = &psz[2];
|
||||
ret = StrRStrW(psz, pch, L"BC");
|
||||
ok_ptr(ret, &psz[1]);
|
||||
|
||||
psz = L"ABCBC";
|
||||
ret = StrRStrW(psz, psz, L"BC");
|
||||
ok(!ret, "ret was '%S'\n", ret);
|
||||
|
||||
psz = L"ABCBC";
|
||||
pch = &psz[lstrlenW(psz)];
|
||||
ret = StrRStrW(psz, pch, L"BC");
|
||||
ok_ptr(ret, psz + 3);
|
||||
}
|
||||
|
||||
static BOOL IsWindowsServer2003SP2OrGreater(VOID)
|
||||
{
|
||||
return IsWindowsVersionOrGreater(5, 2, 2);
|
||||
}
|
||||
|
||||
START_TEST(StrRStr)
|
||||
{
|
||||
if (IsWindowsVistaOrGreater())
|
||||
{
|
||||
skip("Vista+\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IsWindowsServer2003SP2OrGreater())
|
||||
{
|
||||
skip("Before 2K3 SP3\n");
|
||||
return;
|
||||
}
|
||||
|
||||
TEST_StrRStrA();
|
||||
TEST_StrRStrW();
|
||||
}
|
||||
Reference in New Issue
Block a user