ReactOS 0.4.17-dev-387-ga401325
SHEvaluateSystemCommandTemplate.cpp File Reference
#include "shelltest.h"
#include <strsafe.h>
#include <versionhelpers.h>
Include dependency graph for SHEvaluateSystemCommandTemplate.cpp:

Go to the source code of this file.

Macros

#define ok_wstri(x, y)    ok(lstrcmpiW(x, y) == 0, "Wrong string. Expected %s, got %s\n", wine_dbgstr_w(y), wine_dbgstr_w(x))
 

Typedefs

typedef HRESULT(WINAPIFN_SHEvaluateSystemCommandTemplate) (PCWSTR, PWSTR *, PWSTR *, PWSTR *)
 

Functions

static BOOL TEST_Init (void)
 
static void TEST_notepad (void)
 
 START_TEST (SHEvaluateSystemCommandTemplate)
 

Variables

static FN_SHEvaluateSystemCommandTemplate g_fnSHEvaluateSystemCommandTemplate = NULL
 

Macro Definition Documentation

◆ ok_wstri

#define ok_wstri (   x,
  y 
)     ok(lstrcmpiW(x, y) == 0, "Wrong string. Expected %s, got %s\n", wine_dbgstr_w(y), wine_dbgstr_w(x))

Definition at line 15 of file SHEvaluateSystemCommandTemplate.cpp.

Typedef Documentation

◆ FN_SHEvaluateSystemCommandTemplate

typedef HRESULT(WINAPI * FN_SHEvaluateSystemCommandTemplate) (PCWSTR, PWSTR *, PWSTR *, PWSTR *)

Definition at line 12 of file SHEvaluateSystemCommandTemplate.cpp.

Function Documentation

◆ START_TEST()

Definition at line 161 of file SHEvaluateSystemCommandTemplate.cpp.

162{
163 if (!TEST_Init())
164 return;
165
166 TEST_notepad();
167}
static BOOL TEST_Init(void)
static void TEST_notepad(void)

◆ TEST_Init()

static BOOL TEST_Init ( void  )
static

Definition at line 18 of file SHEvaluateSystemCommandTemplate.cpp.

19{
22 GetProcAddress(hShell32, "SHEvaluateSystemCommandTemplate");
24 return TRUE;
25
26 HINSTANCE hSHLWAPI = GetModuleHandleA("shlwapi");
28 GetProcAddress(hSHLWAPI, MAKEINTRESOURCEA(552));
30 {
31 trace("shlwapi has SHEvaluateSystemCommandTemplate\n");
32 return TRUE;
33 }
34
35 skip("SHEvaluateSystemCommandTemplate not found\n");
36 return FALSE;
37}
HRESULT(WINAPI * FN_SHEvaluateSystemCommandTemplate)(PCWSTR, PWSTR *, PWSTR *, PWSTR *)
static FN_SHEvaluateSystemCommandTemplate g_fnSHEvaluateSystemCommandTemplate
#define trace
Definition: atltest.h:70
#define skip(...)
Definition: atltest.h:64
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define GetProcAddress(x, y)
Definition: compat.h:753
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
Definition: loader.c:812
static HMODULE hShell32
Definition: string.c:34
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581

Referenced by START_TEST().

◆ TEST_notepad()

static void TEST_notepad ( void  )
static

Definition at line 39 of file SHEvaluateSystemCommandTemplate.cpp.

40{
41 HRESULT hr;
42 PWSTR app, cmdline, params;
43 WCHAR szPath[MAX_PATH], szQuoted[MAX_PATH], szNotepad[MAX_PATH];
44 WCHAR szAnswer1[MAX_PATH], szAnswer2[MAX_PATH], szAnswer3[MAX_PATH];
45
46 GetSystemDirectoryW(szNotepad, _countof(szNotepad));
47 StringCchCatW(szNotepad, _countof(szNotepad), L"\\notepad.exe");
48 StringCchPrintfW(szAnswer1, _countof(szAnswer1), L"\"%s\"", szNotepad);
49 StringCchPrintfW(szAnswer2, _countof(szAnswer2), L"\"%s\" ", szNotepad);
50 StringCchPrintfW(szAnswer3, _countof(szAnswer3), L"\"%s\" /A /P", szNotepad);
51
52 hr = g_fnSHEvaluateSystemCommandTemplate(L"notepad.exe", &app, NULL, NULL);
53 ok_hr(hr, S_OK);
54 ok_wstri(app, szNotepad);
55 CoTaskMemFree(app);
56
57 hr = g_fnSHEvaluateSystemCommandTemplate(L"notepad.exe", &app, &cmdline, NULL);
58 ok_hr(hr, S_OK);
59 ok_wstri(app, szNotepad);
60 ok_wstri(cmdline, L"\"notepad.exe\" ");
61 CoTaskMemFree(app);
63
64 hr = g_fnSHEvaluateSystemCommandTemplate(L"notepad.exe", &app, &cmdline, &params);
65 ok_hr(hr, S_OK);
66 ok_wstri(app, szNotepad);
67 ok_wstri(cmdline, L"\"notepad.exe\" ");
68 ok_wstri(params, L"");
69 CoTaskMemFree(app);
72
73 hr = g_fnSHEvaluateSystemCommandTemplate(L"notepad.exe", &app, NULL, &params);
74 ok_hr(hr, S_OK);
75 ok_wstri(app, szNotepad);
76 ok_wstri(params, L"");
77 CoTaskMemFree(app);
79
80 hr = g_fnSHEvaluateSystemCommandTemplate(L"system32\\notepad.exe", &app, &cmdline, &params);
82 ok(app == NULL, "app was %s\n", wine_dbgstr_w(app));
83 ok(cmdline == NULL, "cmdline was %s\n", wine_dbgstr_w(cmdline));
84 ok(params == NULL, "params was %s\n", wine_dbgstr_w(params));
85 CoTaskMemFree(app);
88
89 hr = g_fnSHEvaluateSystemCommandTemplate(L"notepad.exe /A /P", &app, &cmdline, &params);
90 ok_hr(hr, S_OK);
91 ok_wstri(app, szNotepad);
92 ok_wstri(cmdline, L"\"notepad.exe\" /A /P");
93 ok_wstri(params, L"/A /P");
94 CoTaskMemFree(app);
97
100 ok_hr(hr, S_OK);
101 ok_wstri(app, szNotepad);
102 CoTaskMemFree(app);
103
104 StringCchCopyW(szPath, _countof(szPath), szNotepad);
106 ok_hr(hr, S_OK);
107 ok_wstri(app, szNotepad);
108 ok_wstri(params, L"");
109 CoTaskMemFree(app);
111
112 StringCchCopyW(szPath, _countof(szPath), szNotepad);
114 ok_hr(hr, S_OK);
115 ok_wstri(app, szNotepad);
116 ok_wstri(cmdline, szAnswer2);
117 ok_wstri(params, L"");
118 CoTaskMemFree(app);
121
122 StringCchPrintfW(szQuoted, _countof(szQuoted), L"\"%s\"", szNotepad);
124 ok_hr(hr, S_OK);
125 ok_wstri(app, szNotepad);
126 ok_wstri(cmdline, szAnswer2);
127 ok_wstri(params, L"");
128 CoTaskMemFree(app);
131
132 StringCchPrintfW(szQuoted, _countof(szQuoted), L"\"%s\" /A /P", szNotepad);
134 ok_hr(hr, S_OK);
135 ok_wstri(app, szNotepad);
136 ok_wstri(cmdline, szAnswer3);
137 ok_wstri(params, L"/A /P");
138 CoTaskMemFree(app);
141
142 hr = g_fnSHEvaluateSystemCommandTemplate(L"_invalid_\\_path_", &app, &cmdline, &params);
144 ok(app == NULL, "app was %s\n", wine_dbgstr_w(app));
145 ok(cmdline == NULL, "cmdline was %s\n", wine_dbgstr_w(cmdline));
146 ok(params == NULL, "params was %s\n", wine_dbgstr_w(params));
147 CoTaskMemFree(app);
150
151 hr = g_fnSHEvaluateSystemCommandTemplate(L"%SystemRoot%\\system32\\notepad.exe", &app, &cmdline, &params);
153 ok(app == NULL, "app was %s\n", wine_dbgstr_w(app));
154 ok(cmdline == NULL, "cmdline was %s\n", wine_dbgstr_w(cmdline));
155 ok(params == NULL, "params was %s\n", wine_dbgstr_w(params));
156 CoTaskMemFree(app);
159}
#define ok_hr(status, expected)
Definition: ACListISF.cpp:31
#define ok_wstri(x, y)
#define ok(value,...)
Definition: atltest.h:57
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
void WINAPI CoTaskMemFree(void *ptr)
Definition: malloc.c:389
#define MAX_PATH
Definition: compat.h:34
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2232
#define L(x)
Definition: resources.c:13
GLenum const GLfloat * params
Definition: glext.h:5645
#define S_OK
Definition: intsafe.h:52
#define wine_dbgstr_w
Definition: kernel32.h:34
LPCWSTR szPath
Definition: env.c:37
short WCHAR
Definition: pedump.c:58
#define _countof(array)
Definition: sndvol32.h:70
TCHAR * cmdline
Definition: stretchblt.cpp:32
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:530
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:325
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149
uint16_t * PWSTR
Definition: typedefs.h:56
#define E_ACCESSDENIED
Definition: winerror.h:4116

Referenced by START_TEST().

Variable Documentation

◆ g_fnSHEvaluateSystemCommandTemplate

FN_SHEvaluateSystemCommandTemplate g_fnSHEvaluateSystemCommandTemplate = NULL
static

Definition at line 13 of file SHEvaluateSystemCommandTemplate.cpp.

Referenced by TEST_Init(), and TEST_notepad().