mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 01:13:38 +00:00
67 lines
1.9 KiB
C
67 lines
1.9 KiB
C
|
/*
|
||
|
* PROJECT: ReactOS Spooler Router API Tests
|
||
|
* LICENSE: GNU GPLv2 or any later version as published by the Free Software Foundation
|
||
|
* PURPOSE: Tests for ReallocSplStr
|
||
|
* COPYRIGHT: Copyright 2015 Colin Finck <colin@reactos.org>
|
||
|
*/
|
||
|
|
||
|
#include <apitest.h>
|
||
|
|
||
|
#define WIN32_NO_STATUS
|
||
|
#include <windef.h>
|
||
|
#include <winbase.h>
|
||
|
#include <spoolss.h>
|
||
|
|
||
|
START_TEST(ReallocSplStr)
|
||
|
{
|
||
|
const WCHAR wszTestString1[] = L"Test";
|
||
|
const WCHAR wszTestString2[] = L"New";
|
||
|
|
||
|
DWORD dwResult;
|
||
|
PWSTR pwszBackup;
|
||
|
PWSTR pwszTest;
|
||
|
|
||
|
// Verify that ReallocSplStr raises an exception if all parameters are NULL.
|
||
|
_SEH2_TRY
|
||
|
{
|
||
|
dwResult = 0;
|
||
|
ReallocSplStr(NULL, NULL);
|
||
|
}
|
||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||
|
{
|
||
|
dwResult = _SEH2_GetExceptionCode();
|
||
|
}
|
||
|
_SEH2_END;
|
||
|
|
||
|
ok(dwResult == EXCEPTION_ACCESS_VIOLATION, "dwResult is %lx!\n", dwResult);
|
||
|
|
||
|
// Allocate a string for testing.
|
||
|
pwszTest = AllocSplStr(wszTestString1);
|
||
|
if (!pwszTest)
|
||
|
{
|
||
|
skip("AllocSplStr failed with error %lu!\n", GetLastError());
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Verify that ReallocSplStr frees the old string even if pwszInput is NULL.
|
||
|
ok(ReallocSplStr(&pwszTest, NULL), "ReallocSplStr is FALSE!\n");
|
||
|
ok(pwszTest == NULL, "pwszTest is %p\n", pwszTest);
|
||
|
|
||
|
// Now verify that ReallocSplStr copies the new string into a new block and frees the old one.
|
||
|
pwszBackup = pwszTest;
|
||
|
ok(ReallocSplStr(&pwszTest, wszTestString2), "ReallocSplStr is FALSE!\n");
|
||
|
ok(wcscmp(pwszTest, wszTestString2) == 0, "New string was not copied into pwszTest!\n");
|
||
|
|
||
|
_SEH2_TRY
|
||
|
{
|
||
|
dwResult = (DWORD)wcscmp(pwszBackup, wszTestString1);
|
||
|
}
|
||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||
|
{
|
||
|
dwResult = _SEH2_GetExceptionCode();
|
||
|
}
|
||
|
_SEH2_END;
|
||
|
|
||
|
ok(dwResult == EXCEPTION_ACCESS_VIOLATION, "dwResult is %lx!\n", dwResult);
|
||
|
}
|