ReactOS  0.4.15-dev-1374-g8d3e80e
SHParseDisplayName.cpp File Reference
#include "shelltest.h"
Include dependency graph for SHParseDisplayName.cpp:

Go to the source code of this file.

Classes

struct  test_data
 

Macros

#define T_ALL   0x0
 
#define T_WIN2K   0x1
 
#define T_WINXP   0x2
 
#define T_WIN2K3   0x4
 
#define T_VISTA   0x8
 
#define T_WIN7   0x10
 
#define T_WIN8   0x20
 
#define T_WIN10   0x40
 
#define T_PRE_VISTA   T_WIN2K|T_WINXP|T_WIN2K3
 
#define T_VISTA_PLUS   T_VISTA|T_WIN7|T_WIN8|T_WIN10
 

Functions

UINT get_host_os_flag ()
 
 START_TEST (SHParseDisplayName)
 

Variables

struct test_data Tests []
 

Macro Definition Documentation

◆ T_ALL

#define T_ALL   0x0

Definition at line 11 of file SHParseDisplayName.cpp.

◆ T_PRE_VISTA

#define T_PRE_VISTA   T_WIN2K|T_WINXP|T_WIN2K3

Definition at line 20 of file SHParseDisplayName.cpp.

◆ T_VISTA

#define T_VISTA   0x8

Definition at line 15 of file SHParseDisplayName.cpp.

◆ T_VISTA_PLUS

#define T_VISTA_PLUS   T_VISTA|T_WIN7|T_WIN8|T_WIN10

Definition at line 21 of file SHParseDisplayName.cpp.

◆ T_WIN10

#define T_WIN10   0x40

Definition at line 18 of file SHParseDisplayName.cpp.

◆ T_WIN2K

#define T_WIN2K   0x1

Definition at line 12 of file SHParseDisplayName.cpp.

◆ T_WIN2K3

#define T_WIN2K3   0x4

Definition at line 14 of file SHParseDisplayName.cpp.

◆ T_WIN7

#define T_WIN7   0x10

Definition at line 16 of file SHParseDisplayName.cpp.

◆ T_WIN8

#define T_WIN8   0x20

Definition at line 17 of file SHParseDisplayName.cpp.

◆ T_WINXP

#define T_WINXP   0x2

Definition at line 13 of file SHParseDisplayName.cpp.

Function Documentation

◆ get_host_os_flag()

UINT get_host_os_flag ( )

Definition at line 124 of file SHParseDisplayName.cpp.

125 {
126  switch (LOWORD(GetVersion()))
127  {
128  case 5: return T_WIN2K;
129  case (5 | (1 << 8)): return T_WINXP;
130  case (5 | (2 << 8)): return T_WIN2K3;
131  case 6: return T_VISTA;
132  case (6 | (1 << 8)): return T_WIN7;
133  case (6 | (2 << 8)): return T_WIN8;
134  case 10: return T_WIN10;
135  }
136 
137  return 0;
138 }
#define T_VISTA
#define T_WIN8
DWORD WINAPI GetVersion(VOID)
Definition: version.c:22
#define T_WIN2K
#define T_WIN10
#define T_WIN7
#define T_WIN2K3
#define T_WINXP
#define LOWORD(l)
Definition: pedump.c:82

Referenced by START_TEST().

◆ START_TEST()

START_TEST ( SHParseDisplayName  )

Definition at line 140 of file SHParseDisplayName.cpp.

141 {
142  HRESULT hr;
143  WCHAR winDir[MAX_PATH];
144  UINT os_flag = get_host_os_flag();
145  ok (os_flag != 0, "Incompatible os version %d!", os_flag);
146  if (os_flag == 0)
147  return;
148 
149  IShellFolder *psfDesktop;
150  hr = SHGetDesktopFolder(&psfDesktop);
151  ok(hr == S_OK, "hr = %lx\n", hr);
152 
153  GetWindowsDirectoryW(winDir, _countof(winDir));
154  SetCurrentDirectoryW(winDir);
155 
156  for (UINT i = 0; i < _countof(Tests); i ++)
157  {
158  if (Tests[i].ValidForVersion && !(Tests[i].ValidForVersion & os_flag))
159  continue;
160 
161  PIDLIST_ABSOLUTE pidl;
162  HRESULT hr = SHParseDisplayName(Tests[i].wszPathToParse, NULL, &pidl, 0, NULL);
163  ok(hr == Tests[i].hResult, "%d: Expected error 0x%lx, got 0x%lx\n", Tests[i].testline, Tests[i].hResult, hr);
164 
165  if (Tests[i].wszExpectedDisplayName == NULL && Tests[i].nExpectedCSIDL == 0)
166  {
167  ok(pidl == NULL, "%d: Expected no pidl\n", Tests[i].testline);
168  continue;
169  }
170 
171  ok(pidl != NULL, "%d: Expected pidl on success\n", Tests[i].testline);
172  if(!pidl)
173  continue;
174 
175  STRRET strret;
176  hr = psfDesktop->GetDisplayNameOf(pidl, SHGDN_FORPARSING, &strret);
177  ok(hr == S_OK, "%d: hr = %lx\n", Tests[i].testline, hr);
178 
179  ok(strret.uType == STRRET_WSTR, "%d: Expected STRRET_WSTR\n", Tests[i].testline);
180 
181  if (Tests[i].wszExpectedDisplayName)
182  {
183  ok(!wcscmp(strret.pOleStr, Tests[i].wszExpectedDisplayName), "%d: expected %S got %S\n", Tests[i].testline, Tests[i].wszExpectedDisplayName, strret.pOleStr);
184  }
185  else
186  {
187  PIDLIST_ABSOLUTE pidlSpecial;
188  hr = SHGetSpecialFolderLocation(NULL, Tests[i].nExpectedCSIDL, &pidlSpecial);
189  ok(hr == S_OK, "%d: hr = %lx\n", Tests[i].testline, hr);
190 
191  STRRET strretSpecial;
192  hr = psfDesktop->GetDisplayNameOf(pidlSpecial, SHGDN_FORPARSING, &strretSpecial);
193  ok(hr == S_OK, "%d: hr = %lx\n", Tests[i].testline, hr);
194 
195  ok(strret.uType == STRRET_WSTR, "%d: Expected STRRET_WSTR\n", Tests[i].testline);
196 
197  ok(!wcscmp(strret.pOleStr, strretSpecial.pOleStr), "%d: expected %S got %S\n", Tests[i].testline, strretSpecial.pOleStr, strret.pOleStr);
198  }
199  }
200 
201  CoUninitialize();
202 }
HRESULT hr
Definition: shlfolder.c:183
LPWSTR pOleStr
Definition: shtypes.idl:96
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2351
HRESULT GetDisplayNameOf([in] PCUITEMID_CHILD pidl, [in] SHGDNF uFlags, [out] STRRET *lpName)
UINT get_host_os_flag()
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
__wchar_t WCHAR
Definition: xmlstorage.h:180
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:2830
LONG HRESULT
Definition: typedefs.h:79
#define _countof(array)
Definition: sndvol32.h:68
#define MAX_PATH
Definition: compat.h:34
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define S_OK
Definition: intsafe.h:51
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
BOOL WINAPI SetCurrentDirectoryW(IN LPCWSTR lpPathName)
Definition: path.c:2248
#define ok(value,...)
Definition: atltest.h:57
HRESULT WINAPI SHParseDisplayName(LPCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
Definition: pidl.c:1381
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
UINT uType
Definition: shtypes.idl:93
struct test_data Tests[]

Variable Documentation

◆ Tests

struct test_data Tests[]

Definition at line 33 of file SHParseDisplayName.cpp.

Referenced by START_TEST().