1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) 4 * PURPOSE: Tests for PathFileExistsDefExtAndAttributesW 5 * COPYRIGHT: Copyright 2024 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com> 6 */ 7 8 #include <apitest.h> 9 #include <shlobj.h> 10 #include <shlwapi.h> 11 #include <shlwapi_undoc.h> 12 13 START_TEST(PathFileExistsDefExtAndAttributesW) 14 { 15 WCHAR szPath[MAX_PATH]; 16 DWORD attrs; 17 BOOL ret; 18 19 /* NULL check */ 20 ret = PathFileExistsDefExtAndAttributesW(NULL, 0, NULL); 21 ok_int(ret, FALSE); 22 23 /* Not existent file */ 24 lstrcpynW(szPath, L"Not Existent File.txt", _countof(szPath)); 25 ret = PathFileExistsDefExtAndAttributesW(szPath, 0, NULL); 26 ok_int(ret, FALSE); 27 28 /* "Windows" directory */ 29 GetWindowsDirectoryW(szPath, _countof(szPath)); 30 ret = PathFileExistsDefExtAndAttributesW(szPath, 0, NULL); 31 ok_int(ret, TRUE); 32 33 /* "Windows" directory with attributes check */ 34 attrs = 0; 35 ret = PathFileExistsDefExtAndAttributesW(szPath, 0, &attrs); 36 ok_int(ret, TRUE); 37 ok(attrs != 0 && attrs != INVALID_FILE_ATTRIBUTES, "attrs was 0x%lX\n", attrs); 38 39 /* Find notepad.exe */ 40 SearchPathW(NULL, L"notepad.exe", NULL, _countof(szPath), szPath, NULL); 41 ret = PathFileExistsW(szPath); 42 ok_int(ret, TRUE); 43 44 /* Remove .exe */ 45 PathRemoveExtensionW(szPath); 46 ret = PathFileExistsW(szPath); 47 ok_int(ret, FALSE); 48 49 /* Add .exe */ 50 ret = PathFileExistsDefExtAndAttributesW(szPath, WHICH_EXE, NULL); 51 ok_int(ret, TRUE); 52 ret = PathFileExistsW(szPath); 53 ok_int(ret, TRUE); 54 55 /* notepad.cmd doesn't exist */ 56 PathRemoveExtensionW(szPath); 57 ret = PathFileExistsDefExtAndAttributesW(szPath, WHICH_CMD, NULL); 58 ok_int(ret, FALSE); 59 ret = PathFileExistsW(szPath); 60 ok_int(ret, FALSE); 61 } 62