Something went wrong. Try again.
Reactos
Something went wrong. Try again.
C
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120/* * PROJECT: ReactOS api tests * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory * PURPOSE: Tests for PathUnExpandEnvStringsForUser * PROGRAMMERS: Katayama Hirofumi MZ */
#include <apitest.h>#include <shlwapi.h>#include <strsafe.h>
#define DO_TEST(Res, hToken, TestStr, ExpStr, Len) \do { \ BOOL ret = PathUnExpandEnvStringsForUserW((hToken), (TestStr), OutStr, Len); \ ok(ret == (Res), "Tested %s, expected returned value %d, got %d\n", \ wine_dbgstr_w((TestStr)), (Res), ret); \ if (ret) \ ok(_wcsicmp(OutStr, (ExpStr)) == 0, "Tested %s, expected %s, got %s\n", \ wine_dbgstr_w((TestStr)), wine_dbgstr_w((ExpStr)), wine_dbgstr_w(OutStr)); \} while (0)
// PathUnExpandEnvStringsForUserWtypedef BOOL (WINAPI *PATHUNEXPANDENVSTRINGSFORUSERW)(HANDLE hToken, LPCWSTR pszPath, LPWSTR pszUnExpanded, INT cchUnExpanded);PATHUNEXPANDENVSTRINGSFORUSERW pPathUnExpandEnvStringsForUserW = NULL;
START_TEST(PathUnExpandEnvStringsForUser){ DWORD ret; WCHAR OutStr[MAX_PATH], TestStr[MAX_PATH]; HINSTANCE hShlwapi;
hShlwapi = GetModuleHandleW(L"shlwapi"); if (hShlwapi == NULL) { skip("shlwapi.dll was not loaded\n"); return; }
pPathUnExpandEnvStringsForUserW = (PATHUNEXPANDENVSTRINGSFORUSERW)GetProcAddress(hShlwapi, "PathUnExpandEnvStringsForUserW");
if (pPathUnExpandEnvStringsForUserW == NULL) { trace("PathUnExpandEnvStringsForUserW is not public\n"); pPathUnExpandEnvStringsForUserW = (PATHUNEXPANDENVSTRINGSFORUSERW)GetProcAddress(hShlwapi, (LPCSTR)(LONG_PTR)466); } if (pPathUnExpandEnvStringsForUserW == NULL) { skip("PathUnExpandEnvStringsForUserW was not found\n"); return; }
#define PathUnExpandEnvStringsForUserW (*pPathUnExpandEnvStringsForUserW)
/* empty string */ DO_TEST(FALSE, NULL, L"", L"", 0); DO_TEST(FALSE, NULL, L"", L"", -1); DO_TEST(FALSE, NULL, L"", L"", 2); DO_TEST(FALSE, NULL, L"", L"", MAX_PATH);
/* No unexpansion possible */ DO_TEST(FALSE, NULL, L"ZZ:\\foobar\\directory", L"", 0); DO_TEST(FALSE, NULL, L"ZZ:\\foobar\\directory", L"", -1); DO_TEST(FALSE, NULL, L"ZZ:\\foobar\\directory", L"", 2); DO_TEST(FALSE, NULL, L"ZZ:\\foobar\\directory", L"", MAX_PATH);
/* %APPDATA% */ ret = GetEnvironmentVariableW(L"APPDATA", TestStr, _countof(TestStr)); ok(ret, "got %lu\n", ret); DO_TEST(FALSE, NULL, TestStr, L"%APPDATA%", 0); DO_TEST(FALSE, NULL, TestStr, L"%APPDATA%", -1); DO_TEST(FALSE, NULL, TestStr, L"%APPDATA%", 2); DO_TEST(TRUE, NULL, TestStr, L"%APPDATA%", MAX_PATH); StringCbCatW(TestStr, sizeof(TestStr), L"\\TEST"); DO_TEST(FALSE, NULL, TestStr, L"%APPDATA%\\TEST", 0); DO_TEST(FALSE, NULL, TestStr, L"%APPDATA%\\TEST", -1); DO_TEST(FALSE, NULL, TestStr, L"%APPDATA%\\TEST", 2); DO_TEST(TRUE, NULL, TestStr, L"%APPDATA%\\TEST", MAX_PATH);
/* %USERPROFILE% */ ret = GetEnvironmentVariableW(L"USERPROFILE", TestStr, _countof(TestStr)); ok(ret, "got %lu\n", ret); DO_TEST(FALSE, NULL, TestStr, L"%USERPROFILE%", 0); DO_TEST(FALSE, NULL, TestStr, L"%USERPROFILE%", -1); DO_TEST(FALSE, NULL, TestStr, L"%USERPROFILE%", 2); DO_TEST(TRUE, NULL, TestStr, L"%USERPROFILE%", MAX_PATH); StringCbCatW(TestStr, sizeof(TestStr), L"\\TEST"); DO_TEST(FALSE, NULL, TestStr, L"%USERPROFILE%\\TEST", 0); DO_TEST(FALSE, NULL, TestStr, L"%USERPROFILE%\\TEST", -1); DO_TEST(FALSE, NULL, TestStr, L"%USERPROFILE%\\TEST", 2); DO_TEST(TRUE, NULL, TestStr, L"%USERPROFILE%\\TEST", MAX_PATH);
/* %ALLUSERSPROFILE% */ ret = GetEnvironmentVariableW(L"ALLUSERSPROFILE", TestStr, _countof(TestStr)); ok(ret, "got %lu\n", ret); DO_TEST(FALSE, NULL, TestStr, L"%ALLUSERSPROFILE%", 0); DO_TEST(FALSE, NULL, TestStr, L"%ALLUSERSPROFILE%", -1); DO_TEST(FALSE, NULL, TestStr, L"%ALLUSERSPROFILE%", 2); DO_TEST(TRUE, NULL, TestStr, L"%ALLUSERSPROFILE%", MAX_PATH); StringCbCatW(TestStr, sizeof(TestStr), L"\\TEST"); DO_TEST(FALSE, NULL, TestStr, L"%ALLUSERSPROFILE%\\TEST", 0); DO_TEST(FALSE, NULL, TestStr, L"%ALLUSERSPROFILE%\\TEST", -1); DO_TEST(FALSE, NULL, TestStr, L"%ALLUSERSPROFILE%\\TEST", 2); DO_TEST(TRUE, NULL, TestStr, L"%ALLUSERSPROFILE%\\TEST", MAX_PATH);
/* %ProgramFiles% */ ret = GetEnvironmentVariableW(L"ProgramFiles", TestStr, _countof(TestStr)); ok(ret, "got %lu\n", ret); DO_TEST(FALSE, NULL, TestStr, L"%ProgramFiles%", 0); DO_TEST(FALSE, NULL, TestStr, L"%ProgramFiles%", -1); DO_TEST(FALSE, NULL, TestStr, L"%ProgramFiles%", 2); DO_TEST(TRUE, NULL, TestStr, L"%ProgramFiles%", MAX_PATH); StringCbCatW(TestStr, sizeof(TestStr), L"\\TEST"); DO_TEST(FALSE, NULL, TestStr, L"%ProgramFiles%\\TEST", 0); DO_TEST(FALSE, NULL, TestStr, L"%ProgramFiles%\\TEST", -1); DO_TEST(FALSE, NULL, TestStr, L"%ProgramFiles%\\TEST", 2); DO_TEST(TRUE, NULL, TestStr, L"%ProgramFiles%\\TEST", MAX_PATH);}