2 * PROJECT: ReactOS api tests
3 * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory
4 * PURPOSE: Tests for PathUnExpandEnvStringsForUser
5 * PROGRAMMERS: Katayama Hirofumi MZ
12 #define DO_TEST(Res, hToken, TestStr, ExpStr, Len) \
14 BOOL ret = PathUnExpandEnvStringsForUserW((hToken), (TestStr), OutStr, Len); \
15 ok(ret == (Res), "Tested %s, expected returned value %d, got %d\n", \
16 wine_dbgstr_w((TestStr)), (Res), ret); \
18 ok(_wcsicmp(OutStr, (ExpStr)) == 0, "Tested %s, expected %s, got %s\n", \
19 wine_dbgstr_w((TestStr)), wine_dbgstr_w((ExpStr)), wine_dbgstr_w(OutStr)); \
22 // PathUnExpandEnvStringsForUserW
23 typedef BOOL (WINAPI
*PATHUNEXPANDENVSTRINGSFORUSERW
)(HANDLE hToken
, LPCWSTR pszPath
, LPWSTR pszUnExpanded
, INT cchUnExpanded
);
24 PATHUNEXPANDENVSTRINGSFORUSERW pPathUnExpandEnvStringsForUserW
= NULL
;
26 START_TEST(PathUnExpandEnvStringsForUser
)
29 WCHAR OutStr
[MAX_PATH
], TestStr
[MAX_PATH
];
32 hShlwapi
= GetModuleHandleW(L
"shlwapi");
35 skip("shlwapi.dll was not loaded\n");
39 pPathUnExpandEnvStringsForUserW
=
40 (PATHUNEXPANDENVSTRINGSFORUSERW
)GetProcAddress(hShlwapi
, "PathUnExpandEnvStringsForUserW");
42 if (pPathUnExpandEnvStringsForUserW
== NULL
)
44 trace("PathUnExpandEnvStringsForUserW is not public\n");
45 pPathUnExpandEnvStringsForUserW
=
46 (PATHUNEXPANDENVSTRINGSFORUSERW
)GetProcAddress(hShlwapi
, (LPCSTR
)(LONG_PTR
)466);
48 if (pPathUnExpandEnvStringsForUserW
== NULL
)
50 skip("PathUnExpandEnvStringsForUserW was not found\n");
54 #define PathUnExpandEnvStringsForUserW (*pPathUnExpandEnvStringsForUserW)
57 DO_TEST(FALSE
, NULL
, L
"", L
"", 0);
58 DO_TEST(FALSE
, NULL
, L
"", L
"", -1);
59 DO_TEST(FALSE
, NULL
, L
"", L
"", 2);
60 DO_TEST(FALSE
, NULL
, L
"", L
"", MAX_PATH
);
62 /* No unexpansion possible */
63 DO_TEST(FALSE
, NULL
, L
"ZZ:\\foobar\\directory", L
"", 0);
64 DO_TEST(FALSE
, NULL
, L
"ZZ:\\foobar\\directory", L
"", -1);
65 DO_TEST(FALSE
, NULL
, L
"ZZ:\\foobar\\directory", L
"", 2);
66 DO_TEST(FALSE
, NULL
, L
"ZZ:\\foobar\\directory", L
"", MAX_PATH
);
69 ret
= GetEnvironmentVariableW(L
"APPDATA", TestStr
, _countof(TestStr
));
70 ok(ret
, "got %lu\n", ret
);
71 DO_TEST(FALSE
, NULL
, TestStr
, L
"%APPDATA%", 0);
72 DO_TEST(FALSE
, NULL
, TestStr
, L
"%APPDATA%", -1);
73 DO_TEST(FALSE
, NULL
, TestStr
, L
"%APPDATA%", 2);
74 DO_TEST(TRUE
, NULL
, TestStr
, L
"%APPDATA%", MAX_PATH
);
75 StringCbCatW(TestStr
, sizeof(TestStr
), L
"\\TEST");
76 DO_TEST(FALSE
, NULL
, TestStr
, L
"%APPDATA%\\TEST", 0);
77 DO_TEST(FALSE
, NULL
, TestStr
, L
"%APPDATA%\\TEST", -1);
78 DO_TEST(FALSE
, NULL
, TestStr
, L
"%APPDATA%\\TEST", 2);
79 DO_TEST(TRUE
, NULL
, TestStr
, L
"%APPDATA%\\TEST", MAX_PATH
);
82 ret
= GetEnvironmentVariableW(L
"USERPROFILE", TestStr
, _countof(TestStr
));
83 ok(ret
, "got %lu\n", ret
);
84 DO_TEST(FALSE
, NULL
, TestStr
, L
"%USERPROFILE%", 0);
85 DO_TEST(FALSE
, NULL
, TestStr
, L
"%USERPROFILE%", -1);
86 DO_TEST(FALSE
, NULL
, TestStr
, L
"%USERPROFILE%", 2);
87 DO_TEST(TRUE
, NULL
, TestStr
, L
"%USERPROFILE%", MAX_PATH
);
88 StringCbCatW(TestStr
, sizeof(TestStr
), L
"\\TEST");
89 DO_TEST(FALSE
, NULL
, TestStr
, L
"%USERPROFILE%\\TEST", 0);
90 DO_TEST(FALSE
, NULL
, TestStr
, L
"%USERPROFILE%\\TEST", -1);
91 DO_TEST(FALSE
, NULL
, TestStr
, L
"%USERPROFILE%\\TEST", 2);
92 DO_TEST(TRUE
, NULL
, TestStr
, L
"%USERPROFILE%\\TEST", MAX_PATH
);
94 /* %ALLUSERSPROFILE% */
95 ret
= GetEnvironmentVariableW(L
"ALLUSERSPROFILE", TestStr
, _countof(TestStr
));
96 ok(ret
, "got %lu\n", ret
);
97 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ALLUSERSPROFILE%", 0);
98 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ALLUSERSPROFILE%", -1);
99 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ALLUSERSPROFILE%", 2);
100 DO_TEST(TRUE
, NULL
, TestStr
, L
"%ALLUSERSPROFILE%", MAX_PATH
);
101 StringCbCatW(TestStr
, sizeof(TestStr
), L
"\\TEST");
102 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ALLUSERSPROFILE%\\TEST", 0);
103 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ALLUSERSPROFILE%\\TEST", -1);
104 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ALLUSERSPROFILE%\\TEST", 2);
105 DO_TEST(TRUE
, NULL
, TestStr
, L
"%ALLUSERSPROFILE%\\TEST", MAX_PATH
);
108 ret
= GetEnvironmentVariableW(L
"ProgramFiles", TestStr
, _countof(TestStr
));
109 ok(ret
, "got %lu\n", ret
);
110 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ProgramFiles%", 0);
111 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ProgramFiles%", -1);
112 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ProgramFiles%", 2);
113 DO_TEST(TRUE
, NULL
, TestStr
, L
"%ProgramFiles%", MAX_PATH
);
114 StringCbCatW(TestStr
, sizeof(TestStr
), L
"\\TEST");
115 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ProgramFiles%\\TEST", 0);
116 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ProgramFiles%\\TEST", -1);
117 DO_TEST(FALSE
, NULL
, TestStr
, L
"%ProgramFiles%\\TEST", 2);
118 DO_TEST(TRUE
, NULL
, TestStr
, L
"%ProgramFiles%\\TEST", MAX_PATH
);