Reactos
1/*
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: Test for She* functions
5 * COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6 */
7
8#include "shelltest.h"
9#include <undocshell.h>
10
11typedef LPSTR (WINAPI *FN_SheRemoveQuotesA)(LPSTR psz);
12typedef LPWSTR (WINAPI *FN_SheRemoveQuotesW)(LPWSTR psz);
13
14static FN_SheRemoveQuotesA pSheRemoveQuotesA = NULL;
15static FN_SheRemoveQuotesW pSheRemoveQuotesW = NULL;
16
17static void test_SheRemoveQuotesA(void)
18{
19 CHAR sz0[] = "A\"Test\"";
20 CHAR sz1[] = "\"Test\"";
21 CHAR sz2[] = "\"Test\"123";
22
23 BOOL bGotException = FALSE;
24 _SEH2_TRY
25 {
26 pSheRemoveQuotesA(NULL);
27 }
28 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
29 {
30 bGotException = TRUE;
31 }
32 _SEH2_END;
33 ok_int(bGotException, TRUE);
34
35 ok_ptr(pSheRemoveQuotesA(sz0), sz0);
36 ok_str(sz0, "A\"Test\"");
37
38 ok_ptr(pSheRemoveQuotesA(sz1), sz1);
39 ok_str(sz1, "Test");
40
41 ok_ptr(pSheRemoveQuotesA(sz2), sz2);
42 ok_str(sz2, "Test");
43}
44
45static void test_SheRemoveQuotesW(void)
46{
47 WCHAR sz0[] = L"A\"Test\"";
48 WCHAR sz1[] = L"\"Test\"";
49 WCHAR sz2[] = L"\"Test\"123";
50
51 BOOL bGotException = FALSE;
52 _SEH2_TRY
53 {
54 pSheRemoveQuotesW(NULL);
55 }
56 _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
57 {
58 bGotException = TRUE;
59 }
60 _SEH2_END;
61 ok_int(bGotException, TRUE);
62
63 ok_ptr(pSheRemoveQuotesW(sz0), sz0);
64 ok_wstr(sz0, L"A\"Test\"");
65
66 ok_ptr(pSheRemoveQuotesW(sz1), sz1);
67 ok_wstr(sz1, L"Test");
68
69 ok_ptr(pSheRemoveQuotesW(sz2), sz2);
70 ok_wstr(sz2, L"Test");
71}
72
73START_TEST(She)
74{
75 HINSTANCE hShell32 = GetModuleHandleW(L"shell32");
76 pSheRemoveQuotesA = (FN_SheRemoveQuotesA)GetProcAddress(hShell32, "SheRemoveQuotesA");
77 pSheRemoveQuotesW = (FN_SheRemoveQuotesW)GetProcAddress(hShell32, "SheRemoveQuotesW");
78
79 if (!pSheRemoveQuotesA || !pSheRemoveQuotesW)
80 {
81 skip("SheRemoveQuotes not found");
82 return;
83 }
84
85 test_SheRemoveQuotesA();
86 test_SheRemoveQuotesW();
87}