mirror of
https://github.com/reactos/reactos.git
synced 2024-11-09 16:20:37 +00:00
57 lines
1.8 KiB
C
57 lines
1.8 KiB
C
|
/*
|
||
|
* PROJECT: ReactOS api tests
|
||
|
* LICENSE: GPLv2+ - See COPYING in the top level directory
|
||
|
* PURPOSE: Tests for lstrlenA/W
|
||
|
* PROGRAMMER: Hermes Belusca-Maito
|
||
|
*/
|
||
|
|
||
|
#include <apitest.h>
|
||
|
|
||
|
#define WIN32_NO_STATUS
|
||
|
#include <stdio.h>
|
||
|
|
||
|
LONG WINAPI VEHandler_1(PEXCEPTION_POINTERS ExceptionInfo)
|
||
|
{
|
||
|
/*
|
||
|
* Vectored Exception Handler possibly called for lstrlen(NULL).
|
||
|
* Expected not to be called!
|
||
|
*/
|
||
|
ok(FALSE, "VEHandler_1 called!\n");
|
||
|
return EXCEPTION_CONTINUE_SEARCH;
|
||
|
}
|
||
|
|
||
|
LONG WINAPI VEHandler_2(PEXCEPTION_POINTERS ExceptionInfo)
|
||
|
{
|
||
|
/* Vectored Exception Handler that should be called for lstrlen(<invalid_ptr>) */
|
||
|
ok(TRUE, "VEHandler_2 not called?\n");
|
||
|
return EXCEPTION_CONTINUE_SEARCH;
|
||
|
}
|
||
|
|
||
|
START_TEST(lstrlen)
|
||
|
{
|
||
|
PVOID pVEH;
|
||
|
|
||
|
/* Test basic functionality */
|
||
|
ok(lstrlenA( "Hello World!") == 12, "lstrlenA failed!\n");
|
||
|
ok(lstrlenW(L"Hello World!") == 12, "lstrlenW failed!\n");
|
||
|
|
||
|
/*
|
||
|
* NULL buffer is special and is considered separately;
|
||
|
* no internal exception is generated.
|
||
|
* Use Vectored Exception Handling to monitor for first-chance exceptions.
|
||
|
*/
|
||
|
pVEH = AddVectoredExceptionHandler(1, VEHandler_1);
|
||
|
ok(lstrlenA(NULL) == 0, "lstrlenA should have returned 0.\n");
|
||
|
ok(lstrlenW(NULL) == 0, "lstrlenW should have returned 0.\n");
|
||
|
RemoveVectoredExceptionHandler(pVEH);
|
||
|
|
||
|
/*
|
||
|
* Test some invalid buffers. Internal exceptions should be generated.
|
||
|
* Use Vectored Exception Handling to monitor for first-chance exceptions.
|
||
|
*/
|
||
|
pVEH = AddVectoredExceptionHandler(1, VEHandler_2);
|
||
|
ok(lstrlenA( (LPSTR)0xbaadf00d) == 0, "lstrlenA should have returned 0.\n");
|
||
|
ok(lstrlenW((LPWSTR)0xbaadf00d) == 0, "lstrlenW should have returned 0.\n");
|
||
|
RemoveVectoredExceptionHandler(pVEH);
|
||
|
}
|