Reactos
at master 87 lines 2.1 kB view raw
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}