mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-26 19:33:31 +00:00
[CRT_APITEST] Implement tests for _strlwr, _strupr, _wcslwr, _wcsupr
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* PROJECT: ReactOS API tests
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Tests for _strlwr
|
||||
* COPYRIGHT: Copyright 2025 Timo Kreuzer ([email protected])
|
||||
*/
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <apitest.h>
|
||||
#include <pseh/pseh2.h>
|
||||
#include <ndk/umtypes.h>
|
||||
|
||||
typedef char* (__cdecl *PFN_strlwr)(char* _String);
|
||||
static PFN_strlwr p_strlwr;
|
||||
|
||||
static BOOL Init(void)
|
||||
{
|
||||
HMODULE hdll = LoadLibraryA(TEST_DLL_NAME);
|
||||
p_strlwr = (PFN_strlwr)GetProcAddress(hdll, "_strlwr");
|
||||
ok(p_strlwr != NULL, "Failed to load _strlwr from %s\n", TEST_DLL_NAME);
|
||||
return (p_strlwr != NULL);
|
||||
}
|
||||
|
||||
START_TEST(_strlwr)
|
||||
{
|
||||
char *result;
|
||||
|
||||
#ifndef TEST_STATIC_CRT
|
||||
if (!Init())
|
||||
{
|
||||
skip("Skipping tests, because _strlwr is not available\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// The NT version of _strlwr does not have a NULL check
|
||||
StartSeh()
|
||||
result = p_strlwr(NULL);
|
||||
ok_ptr(result, NULL);
|
||||
#ifdef TEST_NTDLL
|
||||
EndSeh(STATUS_ACCESS_VIOLATION);
|
||||
#else
|
||||
EndSeh((is_reactos() || GetNTVersion() >= _WIN32_WINNT_VISTA) ? STATUS_SUCCESS : STATUS_ACCESS_VIOLATION);
|
||||
#endif
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* PROJECT: ReactOS API tests
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Tests for _strupr
|
||||
* COPYRIGHT: Copyright 2025 Timo Kreuzer ([email protected])
|
||||
*/
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <apitest.h>
|
||||
#include <pseh/pseh2.h>
|
||||
#include <ndk/umtypes.h>
|
||||
|
||||
typedef char* (__cdecl *PFN_strupr)(char* _String);
|
||||
static PFN_strupr p_strupr;
|
||||
|
||||
static BOOL Init(void)
|
||||
{
|
||||
HMODULE hdll = LoadLibraryA(TEST_DLL_NAME);
|
||||
p_strupr = (PFN_strupr)GetProcAddress(hdll, "_strupr");
|
||||
ok(p_strupr != NULL, "Failed to load _strupr from %s\n", TEST_DLL_NAME);
|
||||
return (p_strupr != NULL);
|
||||
}
|
||||
|
||||
START_TEST(_strupr)
|
||||
{
|
||||
char *result;
|
||||
|
||||
#ifndef TEST_STATIC_CRT
|
||||
if (!Init())
|
||||
{
|
||||
skip("Skipping tests, because _strupr is not available\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// The NT version of _strupr has a NULL check (as opposed to _strlwr)
|
||||
StartSeh()
|
||||
result = p_strupr(NULL);
|
||||
ok_ptr(result, NULL);
|
||||
EndSeh((is_reactos() || GetNTVersion() >= _WIN32_WINNT_VISTA) ? STATUS_SUCCESS : STATUS_ACCESS_VIOLATION);
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* PROJECT: ReactOS API tests
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Tests for _wcslwr
|
||||
* COPYRIGHT: Copyright 2025 Timo Kreuzer ([email protected])
|
||||
*/
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <apitest.h>
|
||||
#include <pseh/pseh2.h>
|
||||
#include <ndk/umtypes.h>
|
||||
|
||||
typedef wchar_t* (__cdecl *PFN_wcslwr)(wchar_t* _String);
|
||||
static PFN_wcslwr p_wcslwr;
|
||||
|
||||
static BOOL Init(void)
|
||||
{
|
||||
HMODULE hdll = LoadLibraryA(TEST_DLL_NAME);
|
||||
p_wcslwr = (PFN_wcslwr)GetProcAddress(hdll, "_wcslwr");
|
||||
ok(p_wcslwr != NULL, "Failed to load _wcslwr from %s\n", TEST_DLL_NAME);
|
||||
return (p_wcslwr != NULL);
|
||||
}
|
||||
|
||||
START_TEST(_wcslwr)
|
||||
{
|
||||
wchar_t *result;
|
||||
|
||||
#ifndef TEST_STATIC_CRT
|
||||
if (!Init())
|
||||
{
|
||||
skip("Skipping tests, because _wcslwr is not available\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// The NT version of _wcslwr has a NULL check (as opposed to _wcsupr)
|
||||
StartSeh()
|
||||
result = p_wcslwr(NULL);
|
||||
ok_ptr(result, NULL);
|
||||
EndSeh((is_reactos() || GetNTVersion() >= _WIN32_WINNT_VISTA) ? STATUS_SUCCESS : STATUS_ACCESS_VIOLATION);
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* PROJECT: ReactOS API tests
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Tests for _wcsupr
|
||||
* COPYRIGHT: Copyright 2025 Timo Kreuzer ([email protected])
|
||||
*/
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <apitest.h>
|
||||
#include <pseh/pseh2.h>
|
||||
#include <ndk/umtypes.h>
|
||||
|
||||
typedef wchar_t* (__cdecl *PFN_wcsupr)(wchar_t* _String);
|
||||
static PFN_wcsupr p_wcsupr;
|
||||
|
||||
static BOOL Init(void)
|
||||
{
|
||||
HMODULE hdll = LoadLibraryA(TEST_DLL_NAME);
|
||||
p_wcsupr = (PFN_wcsupr)GetProcAddress(hdll, "_wcsupr");
|
||||
ok(p_wcsupr != NULL, "Failed to load _wcsupr from %s\n", TEST_DLL_NAME);
|
||||
return (p_wcsupr != NULL);
|
||||
}
|
||||
|
||||
START_TEST(_wcsupr)
|
||||
{
|
||||
wchar_t *result;
|
||||
|
||||
#ifndef TEST_STATIC_CRT
|
||||
if (!Init())
|
||||
{
|
||||
skip("Skipping tests, because _wcsupr is not available\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// The NT version of _wcsupr does not have a NULL check
|
||||
StartSeh()
|
||||
result = p_wcsupr(NULL);
|
||||
ok_ptr(result, NULL);
|
||||
#ifdef TEST_NTDLL
|
||||
EndSeh(STATUS_ACCESS_VIOLATION);
|
||||
#else
|
||||
EndSeh((is_reactos() || GetNTVersion() >= _WIN32_WINNT_VISTA) ? STATUS_SUCCESS : STATUS_ACCESS_VIOLATION);
|
||||
#endif
|
||||
}
|
||||
@@ -17,13 +17,17 @@ list(APPEND SOURCE_CRT_TESTS
|
||||
../crt/_snprintf.c
|
||||
../crt/_snwprintf.c
|
||||
../crt/_stricmp.c
|
||||
../crt/_strlwr.c
|
||||
../crt/_strnicmp.c
|
||||
../crt/_strupr.c
|
||||
../crt/_vscprintf.c
|
||||
../crt/_vscwprintf.c
|
||||
../crt/_vsnprintf.c
|
||||
../crt/_vsnwprintf.c
|
||||
../crt/_wcsicmp.c
|
||||
../crt/_wcslwr.c
|
||||
../crt/_wcsnicmp.c
|
||||
../crt/_wcsupr.c
|
||||
../crt/_wsystem.c
|
||||
../crt/acos.c
|
||||
../crt/asin.c
|
||||
|
||||
@@ -11,13 +11,17 @@ extern void func__mbsstr(void);
|
||||
extern void func__snprintf(void);
|
||||
extern void func__snwprintf(void);
|
||||
extern void func__stricmp(void);
|
||||
extern void func__strlwr(void);
|
||||
extern void func__strnicmp(void);
|
||||
extern void func__strupr(void);
|
||||
extern void func__vscprintf(void);
|
||||
extern void func__vscwprintf(void);
|
||||
extern void func__vsnprintf(void);
|
||||
extern void func__vsnwprintf(void);
|
||||
extern void func__wcsicmp(void);
|
||||
extern void func__wcslwr(void);
|
||||
extern void func__wcsnicmp(void);
|
||||
extern void func__wcsupr(void);
|
||||
extern void func__wsystem(void);
|
||||
extern void func_acos(void);
|
||||
extern void func_asin(void);
|
||||
@@ -73,13 +77,17 @@ const struct test winetest_testlist[] =
|
||||
{ "_snprintf", func__snprintf },
|
||||
{ "_snwprintf", func__snwprintf },
|
||||
{ "_stricmp", func__stricmp },
|
||||
{ "_strlwr", func__strlwr },
|
||||
{ "_strnicmp", func__strnicmp },
|
||||
{ "_strupr", func__strupr },
|
||||
{ "_vscprintf", func__vscprintf },
|
||||
{ "_vscwprintf", func__vscwprintf },
|
||||
{ "_vsnprintf", func__vsnprintf },
|
||||
{ "_vsnwprintf", func__vsnwprintf },
|
||||
{ "_wcsicmp", func__wcsicmp },
|
||||
{ "_wcslwr", func__wcslwr },
|
||||
{ "_wcsnicmp", func__wcsnicmp },
|
||||
{ "_wcsupr", func__wcsupr },
|
||||
{ "_wsystem", func__wsystem },
|
||||
{ "acos", func_acos },
|
||||
{ "asin", func_asin },
|
||||
|
||||
@@ -11,12 +11,16 @@ list(APPEND SOURCE_CRT_TESTS
|
||||
../crt/_snprintf.c
|
||||
../crt/_snwprintf.c
|
||||
../crt/_stricmp.c
|
||||
../crt/_strlwr.c
|
||||
../crt/_strnicmp.c
|
||||
../crt/_strupr.c
|
||||
../crt/_vscwprintf.c
|
||||
../crt/_vsnprintf.c
|
||||
../crt/_vsnwprintf.c
|
||||
../crt/_wcsicmp.c
|
||||
../crt/_wcslwr.c
|
||||
../crt/_wcsnicmp.c
|
||||
../crt/_wcsupr.c
|
||||
../crt/mbstowcs.c
|
||||
../crt/setjmp.c
|
||||
../crt/sprintf.c
|
||||
|
||||
@@ -5,12 +5,16 @@
|
||||
extern void func__snprintf(void);
|
||||
extern void func__snwprintf(void);
|
||||
extern void func__stricmp(void);
|
||||
extern void func__strlwr(void);
|
||||
extern void func__strnicmp(void);
|
||||
extern void func__strupr(void);
|
||||
extern void func__vscwprintf(void);
|
||||
extern void func__vsnprintf(void);
|
||||
extern void func__vsnwprintf(void);
|
||||
extern void func__wcsicmp(void);
|
||||
extern void func__wcslwr(void);
|
||||
extern void func__wcsnicmp(void);
|
||||
extern void func__wcsupr(void);
|
||||
extern void func_mbstowcs(void);
|
||||
extern void func_setjmp(void);
|
||||
extern void func_sprintf(void);
|
||||
@@ -134,12 +138,16 @@ const struct test winetest_testlist[] =
|
||||
{ "_snprintf", func__snprintf },
|
||||
{ "_snwprintf", func__snwprintf },
|
||||
{ "_stricmp", func__stricmp },
|
||||
{ "_strlwr", func__strlwr },
|
||||
{ "_strnicmp", func__strnicmp },
|
||||
{ "_strupr", func__strupr },
|
||||
{ "_vscwprintf", func__vscwprintf },
|
||||
{ "_vsnprintf", func__vsnprintf },
|
||||
{ "_vsnwprintf", func__vsnwprintf },
|
||||
{ "_wcsicmp", func__wcsicmp },
|
||||
{ "_wcslwr", func__wcslwr },
|
||||
{ "_wcsnicmp", func__wcsnicmp },
|
||||
{ "_wcsupr", func__wcsupr },
|
||||
{ "mbstowcs", func_mbstowcs },
|
||||
{ "setjmp", func_setjmp },
|
||||
{ "sprintf", func_sprintf },
|
||||
|
||||
Reference in New Issue
Block a user