[EXPLORER] -Use WM_POPUPSYSTEMMENU to open the system menu of a window. CORE-13400
[reactos.git] / rostests / apitests / spoolss / ReallocSplStr.c
1 /*
2 * PROJECT: ReactOS Spooler Router API Tests
3 * LICENSE: GNU GPLv2 or any later version as published by the Free Software Foundation
4 * PURPOSE: Tests for ReallocSplStr
5 * COPYRIGHT: Copyright 2015 Colin Finck <colin@reactos.org>
6 */
7
8 #include <apitest.h>
9
10 #define WIN32_NO_STATUS
11 #include <windef.h>
12 #include <winbase.h>
13 #include <spoolss.h>
14
15 START_TEST(ReallocSplStr)
16 {
17 const WCHAR wszTestString1[] = L"Test";
18 const WCHAR wszTestString2[] = L"New";
19
20 DWORD dwResult;
21 PWSTR pwszBackup;
22 PWSTR pwszTest;
23
24 // Verify that ReallocSplStr raises an exception if all parameters are NULL.
25 _SEH2_TRY
26 {
27 dwResult = 0;
28 ReallocSplStr(NULL, NULL);
29 }
30 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
31 {
32 dwResult = _SEH2_GetExceptionCode();
33 }
34 _SEH2_END;
35
36 ok(dwResult == EXCEPTION_ACCESS_VIOLATION, "dwResult is %lx!\n", dwResult);
37
38 // Allocate a string for testing.
39 pwszTest = AllocSplStr(wszTestString1);
40 if (!pwszTest)
41 {
42 skip("AllocSplStr failed with error %lu!\n", GetLastError());
43 return;
44 }
45
46 // Verify that ReallocSplStr frees the old string even if pwszInput is NULL.
47 ok(ReallocSplStr(&pwszTest, NULL), "ReallocSplStr is FALSE!\n");
48 ok(pwszTest == NULL, "pwszTest is %p\n", pwszTest);
49
50 // Now verify that ReallocSplStr copies the new string into a new block and frees the old one.
51 pwszBackup = pwszTest;
52 ok(ReallocSplStr(&pwszTest, wszTestString2), "ReallocSplStr is FALSE!\n");
53 ok(wcscmp(pwszTest, wszTestString2) == 0, "New string was not copied into pwszTest!\n");
54
55 _SEH2_TRY
56 {
57 dwResult = (DWORD)wcscmp(pwszBackup, wszTestString1);
58 }
59 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
60 {
61 dwResult = _SEH2_GetExceptionCode();
62 }
63 _SEH2_END;
64
65 ok(dwResult == EXCEPTION_ACCESS_VIOLATION, "dwResult is %lx!\n", dwResult);
66 }