Wine-devel
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
February 2020
- 80 participants
- 745 discussions
This fixes handling of failures (and todos, etc) where the message
starts with a linefeed.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
---
testbot/lib/WineTestBot/LogUtils.pm | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/testbot/lib/WineTestBot/LogUtils.pm b/testbot/lib/WineTestBot/LogUtils.pm
index 453ec29a99..fd0a845955 100644
--- a/testbot/lib/WineTestBot/LogUtils.pm
+++ b/testbot/lib/WineTestBot/LogUtils.pm
@@ -254,7 +254,8 @@ sub ParseTaskLog($)
foreach my $Line (<$LogFile>)
{
$LineNo++;
- $Line =~ s/\s*$//; # chomp \r, \n and more
+ chomp $Line;
+ $Line =~ s/\r+$//;
if (GetLogLineCategory($Line) eq "error")
{
@@ -525,7 +526,8 @@ sub ParseWineTestReport($$$)
{
$LineNo++;
$Cur->{UnitSize} += length($Line);
- $Line =~ s/\s*$//; # chomp \r, \n and more
+ chomp $Line;
+ $Line =~ s/\r+$//;
if (GetReportLineCategory($Line) eq "error")
{
--
2.20.1
1
0
[PATCH v2 1/9] shell32: Move _SHCreateSymbolicLinks() above shell folders lookup functions.
by Olivier F. R. Dierick 19 Feb '20
by Olivier F. R. Dierick 19 Feb '20
19 Feb '20
Looking up shell folders creates real directories when the folder is
inexistant, but the intended behavior for some folders is to create
symbolic links by default. Prepare that change by moving the helper
function above shell folders lookup functions. Also fix whitespace
issues in the moved code.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick(a)piezo-forte.be>
---
dlls/shell32/shellpath.c | 534 +++++++++++++++++++++++------------------------
1 file changed, 267 insertions(+), 267 deletions(-)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index b6350ea..9bec709 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -3949,9 +3949,274 @@ end:
}
/*************************************************************************
+ * _SHAppendToUnixPath [Internal]
+ *
+ * Helper function for _SHCreateSymbolicLinks. Appends pwszSubPath (or the
+ * corresponding resource, if IS_INTRESOURCE) to the unix base path 'szBasePath'
+ * and replaces backslashes with slashes.
+ *
+ * PARAMS
+ * szBasePath [IO] The unix base path, which will be appended to (CP_UNXICP).
+ * pwszSubPath [I] Sub-path or resource id (use MAKEINTRESOURCEW).
+ *
+ * RETURNS
+ * Success: TRUE,
+ * Failure: FALSE
+ */
+static inline BOOL _SHAppendToUnixPath(char *szBasePath, LPCWSTR pwszSubPath) {
+ WCHAR wszSubPath[MAX_PATH];
+ int cLen = strlen(szBasePath);
+ char *pBackslash;
+
+ if (IS_INTRESOURCE(pwszSubPath)) {
+ if (!LoadStringW(shell32_hInstance, LOWORD(pwszSubPath), wszSubPath, MAX_PATH)) {
+ /* Fall back to hard coded defaults. */
+ switch (LOWORD(pwszSubPath)) {
+ case IDS_PERSONAL:
+ lstrcpyW(wszSubPath, DocumentsW);
+ break;
+ case IDS_MYMUSIC:
+ lstrcpyW(wszSubPath, My_MusicW);
+ break;
+ case IDS_MYPICTURES:
+ lstrcpyW(wszSubPath, My_PicturesW);
+ break;
+ case IDS_MYVIDEOS:
+ lstrcpyW(wszSubPath, My_VideosW);
+ break;
+ case IDS_DOWNLOADS:
+ lstrcpyW(wszSubPath, DownloadsW);
+ break;
+ case IDS_TEMPLATES:
+ lstrcpyW(wszSubPath, TemplatesW);
+ break;
+ default:
+ ERR("LoadString(%d) failed!\n", LOWORD(pwszSubPath));
+ return FALSE;
+ }
+ }
+ } else {
+ lstrcpyW(wszSubPath, pwszSubPath);
+ }
+
+ if (szBasePath[cLen-1] != '/') szBasePath[cLen++] = '/';
+
+ if (!WideCharToMultiByte(CP_UNIXCP, 0, wszSubPath, -1, szBasePath + cLen,
+ FILENAME_MAX - cLen, NULL, NULL))
+ {
+ return FALSE;
+ }
+
+ pBackslash = szBasePath + cLen;
+ while ((pBackslash = strchr(pBackslash, '\\'))) *pBackslash = '/';
+
+ return TRUE;
+}
+
+/******************************************************************************
+ * _SHCreateSymbolicLinks [Internal]
+ *
+ * Sets up symbol links for various shell folders to point into the user's home
+ * directory. We do an educated guess about what the user would probably want:
+ * - If there is a 'My Documents' directory in $HOME, the user probably wants
+ * wine's 'My Documents' to point there. Furthermore, we infer that the user
+ * is a Windows lover and has no problem with wine creating subfolders for
+ * 'My Pictures', 'My Music', 'My Videos' etc. under '$HOME/My Documents', if
+ * those do not already exist. We put appropriate symbolic links in place for
+ * those, too.
+ * - If there is no 'My Documents' directory in $HOME, we let 'My Documents'
+ * point directly to $HOME. We assume the user to be a unix hacker who does not
+ * want wine to create anything anywhere besides the .wine directory. So, if
+ * there already is a 'My Music' directory in $HOME, we symlink the 'My Music'
+ * shell folder to it. But if not, then we check XDG_MUSIC_DIR - "well known"
+ * directory, and try to link to that. If that fails, then we symlink to
+ * $HOME directly. The same holds for 'My Pictures', 'My Videos' etc.
+ * - The Desktop shell folder is symlinked to XDG_DESKTOP_DIR. If that does not
+ * exist, then we try '$HOME/Desktop'. If that does not exist, then we leave
+ * it alone.
+ * ('My Music',... above in fact means LoadString(IDS_MYMUSIC))
+ */
+static void _SHCreateSymbolicLinks(void)
+{
+ static const UINT aidsMyStuff[] = {
+ IDS_MYPICTURES, IDS_MYVIDEOS, IDS_MYMUSIC, IDS_DOWNLOADS, IDS_TEMPLATES
+ };
+ static const WCHAR * const MyOSXStuffW[] = {
+ PicturesW, MoviesW, MusicW, DownloadsW, TemplatesW
+ };
+ static const int acsidlMyStuff[] = {
+ CSIDL_MYPICTURES, CSIDL_MYVIDEO, CSIDL_MYMUSIC, CSIDL_DOWNLOADS, CSIDL_TEMPLATES
+ };
+ static const char * const xdg_dirs[] = {
+ "PICTURES", "VIDEOS", "MUSIC", "DOWNLOAD", "TEMPLATES", "DOCUMENTS", "DESKTOP"
+ };
+ static const unsigned int num = ARRAY_SIZE(xdg_dirs);
+ WCHAR wszTempPath[MAX_PATH];
+ char szPersonalTarget[FILENAME_MAX], *pszPersonal;
+ char szMyStuffTarget[FILENAME_MAX], *pszMyStuff;
+ char szDesktopTarget[FILENAME_MAX], *pszDesktop;
+ struct stat statFolder;
+ const char *pszHome;
+ HRESULT hr;
+ char ** xdg_results;
+ char * xdg_desktop_dir;
+ UINT i;
+
+ /* Create all necessary profile sub-dirs up to 'My Documents' and get the unix path. */
+ hr = SHGetFolderPathW(NULL, CSIDL_PERSONAL|CSIDL_FLAG_CREATE, NULL,
+ SHGFP_TYPE_DEFAULT, wszTempPath);
+ if (FAILED(hr)) return;
+ pszPersonal = wine_get_unix_file_name(wszTempPath);
+ if (!pszPersonal) return;
+
+ hr = XDG_UserDirLookup(xdg_dirs, num, &xdg_results);
+ if (FAILED(hr)) xdg_results = NULL;
+
+ pszHome = getenv("HOME");
+ if (pszHome && !stat(pszHome, &statFolder) && S_ISDIR(statFolder.st_mode))
+ {
+ while (1)
+ {
+ /* Check if there's already a Wine-specific 'My Documents' folder */
+ strcpy(szPersonalTarget, pszHome);
+ if (_SHAppendToUnixPath(szPersonalTarget, MAKEINTRESOURCEW(IDS_PERSONAL)) &&
+ !stat(szPersonalTarget, &statFolder) && S_ISDIR(statFolder.st_mode))
+ {
+ /* '$HOME/My Documents' exists. Create subfolders for
+ * 'My Pictures', 'My Videos', 'My Music' etc. or fail silently
+ * if they already exist.
+ */
+ for (i = 0; i < ARRAY_SIZE(aidsMyStuff); i++)
+ {
+ strcpy(szMyStuffTarget, szPersonalTarget);
+ if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])))
+ mkdir(szMyStuffTarget, 0777);
+ }
+ break;
+ }
+
+ /* Try to point to the XDG Documents folder */
+ if (xdg_results && xdg_results[num-2] &&
+ !stat(xdg_results[num-2], &statFolder) &&
+ S_ISDIR(statFolder.st_mode))
+ {
+ strcpy(szPersonalTarget, xdg_results[num-2]);
+ break;
+ }
+
+ /* Or the hardcoded / OS X Documents folder */
+ strcpy(szPersonalTarget, pszHome);
+ if (_SHAppendToUnixPath(szPersonalTarget, DocumentsW) &&
+ !stat(szPersonalTarget, &statFolder) &&
+ S_ISDIR(statFolder.st_mode))
+ break;
+
+ /* As a last resort point to $HOME. */
+ strcpy(szPersonalTarget, pszHome);
+ break;
+ }
+
+ /* Replace 'My Documents' directory with a symlink or fail silently if not empty. */
+ remove(pszPersonal);
+ symlink(szPersonalTarget, pszPersonal);
+ }
+ else
+ {
+ /* '$HOME' doesn't exist. Create subdirs for 'My Pictures', 'My Videos',
+ * 'My Music' etc. in '%USERPROFILE%\My Documents' or fail silently if
+ * they already exist. */
+ pszHome = NULL;
+ strcpy(szPersonalTarget, pszPersonal);
+ for (i = 0; i < ARRAY_SIZE(aidsMyStuff); i++) {
+ strcpy(szMyStuffTarget, szPersonalTarget);
+ if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])))
+ mkdir(szMyStuffTarget, 0777);
+ }
+ }
+
+ /* Create symbolic links for 'My Pictures', 'My Videos', 'My Music' etc. */
+ for (i=0; i < ARRAY_SIZE(aidsMyStuff); i++)
+ {
+ /* Create the current 'My Whatever' folder and get its unix path. */
+ hr = SHGetFolderPathW(NULL, acsidlMyStuff[i]|CSIDL_FLAG_CREATE, NULL,
+ SHGFP_TYPE_DEFAULT, wszTempPath);
+ if (FAILED(hr)) continue;
+
+ pszMyStuff = wine_get_unix_file_name(wszTempPath);
+ if (!pszMyStuff) continue;
+
+ while (1)
+ {
+ /* Check for the Wine-specific '$HOME/My Documents' subfolder */
+ strcpy(szMyStuffTarget, szPersonalTarget);
+ if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])) &&
+ !stat(szMyStuffTarget, &statFolder) && S_ISDIR(statFolder.st_mode))
+ break;
+
+ /* Try the XDG_XXX_DIR folder */
+ if (xdg_results && xdg_results[i])
+ {
+ strcpy(szMyStuffTarget, xdg_results[i]);
+ break;
+ }
+
+ /* Or the OS X folder (these are never localized) */
+ if (pszHome)
+ {
+ strcpy(szMyStuffTarget, pszHome);
+ if (_SHAppendToUnixPath(szMyStuffTarget, MyOSXStuffW[i]) &&
+ !stat(szMyStuffTarget, &statFolder) &&
+ S_ISDIR(statFolder.st_mode))
+ break;
+ }
+
+ /* As a last resort point to the same location as 'My Documents' */
+ strcpy(szMyStuffTarget, szPersonalTarget);
+ break;
+ }
+ remove(pszMyStuff);
+ symlink(szMyStuffTarget, pszMyStuff);
+ heap_free(pszMyStuff);
+ }
+
+ /* Last but not least, the Desktop folder */
+ if (pszHome)
+ strcpy(szDesktopTarget, pszHome);
+ else
+ strcpy(szDesktopTarget, pszPersonal);
+ heap_free(pszPersonal);
+
+ xdg_desktop_dir = xdg_results ? xdg_results[num - 1] : NULL;
+ if (xdg_desktop_dir ||
+ (_SHAppendToUnixPath(szDesktopTarget, DesktopW) &&
+ !stat(szDesktopTarget, &statFolder) && S_ISDIR(statFolder.st_mode)))
+ {
+ hr = SHGetFolderPathW(NULL, CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_CREATE, NULL,
+ SHGFP_TYPE_DEFAULT, wszTempPath);
+ if (SUCCEEDED(hr) && (pszDesktop = wine_get_unix_file_name(wszTempPath)))
+ {
+ remove(pszDesktop);
+ if (xdg_desktop_dir)
+ symlink(xdg_desktop_dir, pszDesktop);
+ else
+ symlink(szDesktopTarget, pszDesktop);
+ heap_free(pszDesktop);
+ }
+ }
+
+ /* Free resources allocated by XDG_UserDirLookup() */
+ if (xdg_results)
+ {
+ for (i = 0; i < num; i++)
+ heap_free(xdg_results[i]);
+ heap_free(xdg_results);
+ }
+}
+
+/******************************************************************************
* SHGetFolderPathW [SHELL32.@]
*
- * Convert nFolder to path.
+ * Convert nFolder to path.
*
* RETURNS
* Success: S_OK
@@ -4046,7 +4311,7 @@ HRESULT WINAPI SHGetFolderPathAndSubDirW(
DWORD folder = nFolder & CSIDL_FOLDER_MASK;
CSIDL_Type type;
int ret;
-
+
TRACE("%p,%#x,%p,%#x,%s,%p\n", hwndOwner, nFolder, hToken, dwFlags, debugstr_w(pszSubPath), pszPath);
/* Windows always NULL-terminates the resulting path regardless of success
@@ -4382,271 +4647,6 @@ static HRESULT _SHRegisterCommonShellFolders(void)
}
/******************************************************************************
- * _SHAppendToUnixPath [Internal]
- *
- * Helper function for _SHCreateSymbolicLinks. Appends pwszSubPath (or the
- * corresponding resource, if IS_INTRESOURCE) to the unix base path 'szBasePath'
- * and replaces backslashes with slashes.
- *
- * PARAMS
- * szBasePath [IO] The unix base path, which will be appended to (CP_UNXICP).
- * pwszSubPath [I] Sub-path or resource id (use MAKEINTRESOURCEW).
- *
- * RETURNS
- * Success: TRUE,
- * Failure: FALSE
- */
-static inline BOOL _SHAppendToUnixPath(char *szBasePath, LPCWSTR pwszSubPath) {
- WCHAR wszSubPath[MAX_PATH];
- int cLen = strlen(szBasePath);
- char *pBackslash;
-
- if (IS_INTRESOURCE(pwszSubPath)) {
- if (!LoadStringW(shell32_hInstance, LOWORD(pwszSubPath), wszSubPath, MAX_PATH)) {
- /* Fall back to hard coded defaults. */
- switch (LOWORD(pwszSubPath)) {
- case IDS_PERSONAL:
- lstrcpyW(wszSubPath, DocumentsW);
- break;
- case IDS_MYMUSIC:
- lstrcpyW(wszSubPath, My_MusicW);
- break;
- case IDS_MYPICTURES:
- lstrcpyW(wszSubPath, My_PicturesW);
- break;
- case IDS_MYVIDEOS:
- lstrcpyW(wszSubPath, My_VideosW);
- break;
- case IDS_DOWNLOADS:
- lstrcpyW(wszSubPath, DownloadsW);
- break;
- case IDS_TEMPLATES:
- lstrcpyW(wszSubPath, TemplatesW);
- break;
- default:
- ERR("LoadString(%d) failed!\n", LOWORD(pwszSubPath));
- return FALSE;
- }
- }
- } else {
- lstrcpyW(wszSubPath, pwszSubPath);
- }
-
- if (szBasePath[cLen-1] != '/') szBasePath[cLen++] = '/';
-
- if (!WideCharToMultiByte(CP_UNIXCP, 0, wszSubPath, -1, szBasePath + cLen,
- FILENAME_MAX - cLen, NULL, NULL))
- {
- return FALSE;
- }
-
- pBackslash = szBasePath + cLen;
- while ((pBackslash = strchr(pBackslash, '\\'))) *pBackslash = '/';
-
- return TRUE;
-}
-
-/******************************************************************************
- * _SHCreateSymbolicLinks [Internal]
- *
- * Sets up symbol links for various shell folders to point into the user's home
- * directory. We do an educated guess about what the user would probably want:
- * - If there is a 'My Documents' directory in $HOME, the user probably wants
- * wine's 'My Documents' to point there. Furthermore, we infer that the user
- * is a Windows lover and has no problem with wine creating subfolders for
- * 'My Pictures', 'My Music', 'My Videos' etc. under '$HOME/My Documents', if
- * those do not already exist. We put appropriate symbolic links in place for
- * those, too.
- * - If there is no 'My Documents' directory in $HOME, we let 'My Documents'
- * point directly to $HOME. We assume the user to be a unix hacker who does not
- * want wine to create anything anywhere besides the .wine directory. So, if
- * there already is a 'My Music' directory in $HOME, we symlink the 'My Music'
- * shell folder to it. But if not, then we check XDG_MUSIC_DIR - "well known"
- * directory, and try to link to that. If that fails, then we symlink to
- * $HOME directly. The same holds for 'My Pictures', 'My Videos' etc.
- * - The Desktop shell folder is symlinked to XDG_DESKTOP_DIR. If that does not
- * exist, then we try '$HOME/Desktop'. If that does not exist, then we leave
- * it alone.
- * ('My Music',... above in fact means LoadString(IDS_MYMUSIC))
- */
-static void _SHCreateSymbolicLinks(void)
-{
- static const UINT aidsMyStuff[] = {
- IDS_MYPICTURES, IDS_MYVIDEOS, IDS_MYMUSIC, IDS_DOWNLOADS, IDS_TEMPLATES
- };
- static const WCHAR * const MyOSXStuffW[] = {
- PicturesW, MoviesW, MusicW, DownloadsW, TemplatesW
- };
- static const int acsidlMyStuff[] = {
- CSIDL_MYPICTURES, CSIDL_MYVIDEO, CSIDL_MYMUSIC, CSIDL_DOWNLOADS, CSIDL_TEMPLATES
- };
- static const char * const xdg_dirs[] = {
- "PICTURES", "VIDEOS", "MUSIC", "DOWNLOAD", "TEMPLATES", "DOCUMENTS", "DESKTOP"
- };
- static const unsigned int num = ARRAY_SIZE(xdg_dirs);
- WCHAR wszTempPath[MAX_PATH];
- char szPersonalTarget[FILENAME_MAX], *pszPersonal;
- char szMyStuffTarget[FILENAME_MAX], *pszMyStuff;
- char szDesktopTarget[FILENAME_MAX], *pszDesktop;
- struct stat statFolder;
- const char *pszHome;
- HRESULT hr;
- char ** xdg_results;
- char * xdg_desktop_dir;
- UINT i;
-
- /* Create all necessary profile sub-dirs up to 'My Documents' and get the unix path. */
- hr = SHGetFolderPathW(NULL, CSIDL_PERSONAL|CSIDL_FLAG_CREATE, NULL,
- SHGFP_TYPE_DEFAULT, wszTempPath);
- if (FAILED(hr)) return;
- pszPersonal = wine_get_unix_file_name(wszTempPath);
- if (!pszPersonal) return;
-
- hr = XDG_UserDirLookup(xdg_dirs, num, &xdg_results);
- if (FAILED(hr)) xdg_results = NULL;
-
- pszHome = getenv("HOME");
- if (pszHome && !stat(pszHome, &statFolder) && S_ISDIR(statFolder.st_mode))
- {
- while (1)
- {
- /* Check if there's already a Wine-specific 'My Documents' folder */
- strcpy(szPersonalTarget, pszHome);
- if (_SHAppendToUnixPath(szPersonalTarget, MAKEINTRESOURCEW(IDS_PERSONAL)) &&
- !stat(szPersonalTarget, &statFolder) && S_ISDIR(statFolder.st_mode))
- {
- /* '$HOME/My Documents' exists. Create subfolders for
- * 'My Pictures', 'My Videos', 'My Music' etc. or fail silently
- * if they already exist.
- */
- for (i = 0; i < ARRAY_SIZE(aidsMyStuff); i++)
- {
- strcpy(szMyStuffTarget, szPersonalTarget);
- if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])))
- mkdir(szMyStuffTarget, 0777);
- }
- break;
- }
-
- /* Try to point to the XDG Documents folder */
- if (xdg_results && xdg_results[num-2] &&
- !stat(xdg_results[num-2], &statFolder) &&
- S_ISDIR(statFolder.st_mode))
- {
- strcpy(szPersonalTarget, xdg_results[num-2]);
- break;
- }
-
- /* Or the hardcoded / OS X Documents folder */
- strcpy(szPersonalTarget, pszHome);
- if (_SHAppendToUnixPath(szPersonalTarget, DocumentsW) &&
- !stat(szPersonalTarget, &statFolder) &&
- S_ISDIR(statFolder.st_mode))
- break;
-
- /* As a last resort point to $HOME. */
- strcpy(szPersonalTarget, pszHome);
- break;
- }
-
- /* Replace 'My Documents' directory with a symlink or fail silently if not empty. */
- remove(pszPersonal);
- symlink(szPersonalTarget, pszPersonal);
- }
- else
- {
- /* '$HOME' doesn't exist. Create subdirs for 'My Pictures', 'My Videos',
- * 'My Music' etc. in '%USERPROFILE%\My Documents' or fail silently if
- * they already exist. */
- pszHome = NULL;
- strcpy(szPersonalTarget, pszPersonal);
- for (i = 0; i < ARRAY_SIZE(aidsMyStuff); i++) {
- strcpy(szMyStuffTarget, szPersonalTarget);
- if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])))
- mkdir(szMyStuffTarget, 0777);
- }
- }
-
- /* Create symbolic links for 'My Pictures', 'My Videos', 'My Music' etc. */
- for (i=0; i < ARRAY_SIZE(aidsMyStuff); i++)
- {
- /* Create the current 'My Whatever' folder and get its unix path. */
- hr = SHGetFolderPathW(NULL, acsidlMyStuff[i]|CSIDL_FLAG_CREATE, NULL,
- SHGFP_TYPE_DEFAULT, wszTempPath);
- if (FAILED(hr)) continue;
-
- pszMyStuff = wine_get_unix_file_name(wszTempPath);
- if (!pszMyStuff) continue;
-
- while (1)
- {
- /* Check for the Wine-specific '$HOME/My Documents' subfolder */
- strcpy(szMyStuffTarget, szPersonalTarget);
- if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])) &&
- !stat(szMyStuffTarget, &statFolder) && S_ISDIR(statFolder.st_mode))
- break;
-
- /* Try the XDG_XXX_DIR folder */
- if (xdg_results && xdg_results[i])
- {
- strcpy(szMyStuffTarget, xdg_results[i]);
- break;
- }
-
- /* Or the OS X folder (these are never localized) */
- if (pszHome)
- {
- strcpy(szMyStuffTarget, pszHome);
- if (_SHAppendToUnixPath(szMyStuffTarget, MyOSXStuffW[i]) &&
- !stat(szMyStuffTarget, &statFolder) &&
- S_ISDIR(statFolder.st_mode))
- break;
- }
-
- /* As a last resort point to the same location as 'My Documents' */
- strcpy(szMyStuffTarget, szPersonalTarget);
- break;
- }
- remove(pszMyStuff);
- symlink(szMyStuffTarget, pszMyStuff);
- heap_free(pszMyStuff);
- }
-
- /* Last but not least, the Desktop folder */
- if (pszHome)
- strcpy(szDesktopTarget, pszHome);
- else
- strcpy(szDesktopTarget, pszPersonal);
- heap_free(pszPersonal);
-
- xdg_desktop_dir = xdg_results ? xdg_results[num - 1] : NULL;
- if (xdg_desktop_dir ||
- (_SHAppendToUnixPath(szDesktopTarget, DesktopW) &&
- !stat(szDesktopTarget, &statFolder) && S_ISDIR(statFolder.st_mode)))
- {
- hr = SHGetFolderPathW(NULL, CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_CREATE, NULL,
- SHGFP_TYPE_DEFAULT, wszTempPath);
- if (SUCCEEDED(hr) && (pszDesktop = wine_get_unix_file_name(wszTempPath)))
- {
- remove(pszDesktop);
- if (xdg_desktop_dir)
- symlink(xdg_desktop_dir, pszDesktop);
- else
- symlink(szDesktopTarget, pszDesktop);
- heap_free(pszDesktop);
- }
- }
-
- /* Free resources allocated by XDG_UserDirLookup() */
- if (xdg_results)
- {
- for (i = 0; i < num; i++)
- heap_free(xdg_results[i]);
- heap_free(xdg_results);
- }
-}
-
-/******************************************************************************
* create_extra_folders [Internal]
*
* Create some extra folders that don't have a standard CSIDL definition.
--
2.1.4
1
8
19 Feb '20
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/kernel32/tests/actctx.c | 40 ++++++++++++------------------------
1 file changed, 13 insertions(+), 27 deletions(-)
diff --git a/dlls/kernel32/tests/actctx.c b/dlls/kernel32/tests/actctx.c
index 99f3e1c3d2..1f458aa637 100644
--- a/dlls/kernel32/tests/actctx.c
+++ b/dlls/kernel32/tests/actctx.c
@@ -560,20 +560,6 @@ static const WCHAR wndClass3W[] =
static WCHAR app_dir[MAX_PATH], exe_path[MAX_PATH], work_dir[MAX_PATH], work_dir_subdir[MAX_PATH];
static WCHAR app_manifest_path[MAX_PATH], manifest_path[MAX_PATH], depmanifest_path[MAX_PATH];
-static int strcmp_aw(LPCWSTR strw, const char *stra)
-{
- WCHAR buf[1024];
-
- if (!stra) return 1;
- MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, ARRAY_SIZE(buf));
- return lstrcmpW(strw, buf);
-}
-
-static DWORD strlen_aw(const char *str)
-{
- return MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0) - 1;
-}
-
static BOOL create_manifest_file(const char *filename, const char *manifest, int manifest_len,
const char *depfile, const char *depmanifest)
{
@@ -746,57 +732,57 @@ typedef struct {
ULONG flags;
/* ULONG manifest_path_type; FIXME */
LPCWSTR manifest_path;
- LPCSTR encoded_assembly_id;
+ LPCWSTR encoded_assembly_id;
BOOL has_assembly_dir;
} info_in_assembly;
static const info_in_assembly manifest1_info = {
1, manifest_path,
- "Wine.Test,type=\"win32\",version=\"1.0.0.0\"",
+ L"Wine.Test,type=\"win32\",version=\"1.0.0.0\"",
FALSE
};
static const info_in_assembly manifest1_child_info = {
1, app_manifest_path,
- "Wine.Test,type=\"win32\",version=\"1.0.0.0\"",
+ L"Wine.Test,type=\"win32\",version=\"1.0.0.0\"",
FALSE
};
static const info_in_assembly manifest2_info = {
1, manifest_path,
- "Wine.Test,type=\"win32\",version=\"1.2.3.4\"",
+ L"Wine.Test,type=\"win32\",version=\"1.2.3.4\"",
FALSE
};
static const info_in_assembly manifest3_info = {
1, manifest_path,
- "Wine.Test,publicKeyToken=\"6595b6414666f1df\",type=\"win32\",version=\"1.2.3.4\"",
+ L"Wine.Test,publicKeyToken=\"6595b6414666f1df\",type=\"win32\",version=\"1.2.3.4\"",
FALSE
};
static const info_in_assembly manifest4_info = {
1, manifest_path,
- "Wine.Test,type=\"win32\",version=\"1.2.3.4\"",
+ L"Wine.Test,type=\"win32\",version=\"1.2.3.4\"",
FALSE
};
static const info_in_assembly depmanifest1_info = {
0x10, depmanifest_path,
- "testdep,processorArchitecture=\"" ARCH "\","
+ L"testdep,processorArchitecture=\"" ARCH "\","
"type=\"win32\",version=\"6.5.4.3\"",
TRUE
};
static const info_in_assembly depmanifest2_info = {
0x10, depmanifest_path,
- "testdep,processorArchitecture=\"" ARCH "\","
+ L"testdep,processorArchitecture=\"" ARCH "\","
"type=\"win32\",version=\"6.5.4.3\"",
TRUE
};
static const info_in_assembly depmanifest3_info = {
0x10, depmanifest_path,
- "testdep,processorArchitecture=\"" ARCH "\",type=\"win32\",version=\"6.5.4.3\"",
+ L"testdep,processorArchitecture=\"" ARCH "\",type=\"win32\",version=\"6.5.4.3\"",
TRUE
};
@@ -813,7 +799,7 @@ static void test_info_in_assembly(HANDLE handle, DWORD id, const info_in_assembl
exsize = sizeof(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION);
if (exinfo->manifest_path) exsize += (lstrlenW(exinfo->manifest_path)+1) * sizeof(WCHAR);
- if (exinfo->encoded_assembly_id) exsize += (strlen_aw(exinfo->encoded_assembly_id) + 1) * sizeof(WCHAR);
+ if (exinfo->encoded_assembly_id) exsize += (lstrlenW(exinfo->encoded_assembly_id) + 1) * sizeof(WCHAR);
size = 0xdeadbeef;
b = pQueryActCtxW(0, handle, &id,
@@ -851,7 +837,7 @@ static void test_info_in_assembly(HANDLE handle, DWORD id, const info_in_assembl
info->ulFlags, exinfo->flags);
}
if(exinfo->encoded_assembly_id) {
- len = strlen_aw(exinfo->encoded_assembly_id)*sizeof(WCHAR);
+ len = lstrlenW(exinfo->encoded_assembly_id)*sizeof(WCHAR);
ok_(__FILE__, line)(info->ulEncodedAssemblyIdentityLength == len,
"info->ulEncodedAssemblyIdentityLength = %u, expected %u\n",
info->ulEncodedAssemblyIdentityLength, len);
@@ -893,9 +879,9 @@ static void test_info_in_assembly(HANDLE handle, DWORD id, const info_in_assembl
ok_(__FILE__, line)(info->lpAssemblyEncodedAssemblyIdentity != NULL,
"info->lpAssemblyEncodedAssemblyIdentity == NULL\n");
if(info->lpAssemblyEncodedAssemblyIdentity && exinfo->encoded_assembly_id) {
- ok_(__FILE__, line)(!strcmp_aw(info->lpAssemblyEncodedAssemblyIdentity, exinfo->encoded_assembly_id),
+ ok_(__FILE__, line)(!lstrcmpW(info->lpAssemblyEncodedAssemblyIdentity, exinfo->encoded_assembly_id),
"unexpected info->lpAssemblyEncodedAssemblyIdentity %s / %s\n",
- strw(info->lpAssemblyEncodedAssemblyIdentity), exinfo->encoded_assembly_id);
+ strw(info->lpAssemblyEncodedAssemblyIdentity), wine_dbgstr_w(exinfo->encoded_assembly_id));
}
if(exinfo->manifest_path) {
ok_(__FILE__, line)(info->lpAssemblyManifestPath != NULL, "info->lpAssemblyManifestPath == NULL\n");
--
2.24.1
2
1
19 Feb '20
Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de>
---
programs/find/tests/find.c | 42 ++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/programs/find/tests/find.c b/programs/find/tests/find.c
index b8345034b5..76f023f5e8 100644
--- a/programs/find/tests/find.c
+++ b/programs/find/tests/find.c
@@ -264,6 +264,47 @@ static void run_find_unicode_(const BYTE *input, int input_len, const BYTE *out_
run_find_stdin_(wstr_quoted_test, input, input_len, out_expected_mangled, out_expected_mangled_len, exitcode_expected, file, line);
}
+static void run_find_file_multi(void)
+{
+ char path_temp_file1[MAX_PATH];
+ char path_temp_file2[MAX_PATH];
+ char path_temp_dir[MAX_PATH];
+ HANDLE handle_file;
+ WCHAR commandline_new[MAX_PATH];
+ char out_expected[500];
+ const char* input = "ab\nbd";
+
+ GetTempPathA(ARRAY_SIZE(path_temp_dir), path_temp_dir);
+ GetTempFileNameA(path_temp_dir, "", 0, path_temp_file1);
+ GetTempFileNameA(path_temp_dir, "", 0, path_temp_file2);
+ handle_file = CreateFileA(path_temp_file1, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
+ write_to_handle(handle_file, (BYTE*)input, strlen(input));
+ CloseHandle(handle_file);
+ handle_file = CreateFileA(path_temp_file2, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
+ write_to_handle(handle_file, (BYTE*)input, strlen(input));
+ CloseHandle(handle_file);
+
+ wsprintfW(commandline_new, L"\"b\" C:\\doesnotexist1 %hs C:\\doesnotexist1 %hs C:\\doesnotexist1", path_temp_file1, path_temp_file2);
+
+ CharUpperA(path_temp_file1);
+ CharUpperA(path_temp_file2);
+ wsprintfA(out_expected,
+ "File not found - C:\\DOESNOTEXIST1\r\n"
+ "\r\n---------- %s\r\n"
+ "ab\r\nbd\r\n"
+ "File not found - C:\\DOESNOTEXIST1\r\n"
+ "\r\n---------- %s\r\n"
+ "ab\r\nbd\r\n"
+ "File not found - C:\\DOESNOTEXIST1\r\n",
+ path_temp_file1, path_temp_file2);
+
+ todo_wine
+ run_find_stdin_(commandline_new, (BYTE*)"", 0, (BYTE*)out_expected, strlen(out_expected), 0, __FILE__, __LINE__);
+
+ DeleteFileA(path_temp_file1);
+ DeleteFileA(path_temp_file2);
+}
+
static void test_errors(void)
{
run_find_stdin_str("", "", "FIND: Parameter format not correct\r\n", 2);
@@ -417,4 +458,5 @@ START_TEST(find)
test_unicode_support_stdin();
test_file_search();
test_unicode_support_file();
+ run_find_file_multi();
}
--
2.25.1
4
8
[PATCH] oledb32: Ensure provider is selected before changing tabs.
by Alistair Leslie-Hughes 18 Feb '20
by Alistair Leslie-Hughes 18 Feb '20
18 Feb '20
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com>
---
dlls/oledb32/dslocator.c | 35 +++++++++++++++++++++++++++++++----
dlls/oledb32/resource.h | 2 ++
dlls/oledb32/version.rc | 3 +++
3 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/dlls/oledb32/dslocator.c b/dlls/oledb32/dslocator.c
index 11ee76cddb..006330b004 100644
--- a/dlls/oledb32/dslocator.c
+++ b/dlls/oledb32/dslocator.c
@@ -274,13 +274,40 @@ static LRESULT CALLBACK data_link_properties_dlg_proc(HWND hwnd, UINT msg, WPARA
break;
}
- case WM_COMMAND:
+ case WM_NOTIFY:
{
- if (LOWORD(wp) == IDC_BTN_NEXT)
+ NMHDR *hdr = ((LPNMHDR)lp);
+ switch(hdr->code)
{
- /* TODO: Implement Connection dialog */
- MessageBoxA(hwnd, "Not implemented yet.", "Error", MB_OK | MB_ICONEXCLAMATION);
+ case PSN_KILLACTIVE:
+ {
+ /*
+ * FIXME: This needs to replace the connection page based off the selection.
+ * We only care about the ODBC for now which is the default.
+ */
+
+ HWND lv = GetDlgItem(hwnd, IDC_LST_CONNECTIONS);
+ if (!SendMessageW(lv, LVM_GETSELECTEDCOUNT, 0, 0))
+ {
+ WCHAR title[256], msg[256];
+
+ LoadStringW(instance, IDS_PROVIDER_TITLE, title, ARRAY_SIZE(title));
+ LoadStringW(instance, IDS_PROVIDER_ERROR, msg, ARRAY_SIZE(msg));
+ MessageBoxW(hwnd, msg, title, MB_OK | MB_ICONEXCLAMATION);
+ SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, TRUE);
+ return TRUE;
+ }
+
+ return FALSE;
+ }
}
+
+ break;
+ }
+ case WM_COMMAND:
+ {
+ if (LOWORD(wp) == IDC_BTN_NEXT)
+ SendMessageW(GetParent(hwnd), PSM_SETCURSEL, 1, 0);
break;
}
default:
diff --git a/dlls/oledb32/resource.h b/dlls/oledb32/resource.h
index 3760a38487..dfedb34a54 100644
--- a/dlls/oledb32/resource.h
+++ b/dlls/oledb32/resource.h
@@ -19,6 +19,8 @@
#define IDD_PROVIDER 1000
#define IDC_BTN_NEXT 1001
#define IDC_LST_CONNECTIONS 1002
+#define IDS_PROVIDER_TITLE 1003
+#define IDS_PROVIDER_ERROR 1004
#define IDS_PROPSHEET_TITLE 2000
#define IDS_COL_PROVIDER 2001
diff --git a/dlls/oledb32/version.rc b/dlls/oledb32/version.rc
index 97714086eb..080e444eb7 100644
--- a/dlls/oledb32/version.rc
+++ b/dlls/oledb32/version.rc
@@ -45,6 +45,9 @@ STRINGTABLE
IDS_PERM_SHAREDENYWRITE "Share Deny Write"
IDS_PERM_SHAREEXCLUSIVE "Share Exclusive"
IDS_PERM_WRITE "Write"
+
+ IDS_PROVIDER_TITLE "Data Link Error"
+ IDS_PROVIDER_ERROR "Please select a provider."
}
IDD_PROVIDER DIALOG 0, 0, 227, 225
--
2.25.0
1
0
[PATCH 2/2] server: Ignore low word of a class instance when looking up for a window class.
by Dmitry Timoshkov 18 Feb '20
by Dmitry Timoshkov 18 Feb '20
18 Feb '20
Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru>
---
dlls/user32/tests/class.c | 3 ---
server/class.c | 2 +-
2 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c
index b07ff8548f..ceb3483285 100644
--- a/dlls/user32/tests/class.c
+++ b/dlls/user32/tests/class.c
@@ -128,14 +128,11 @@ static void ClassTest(HINSTANCE hInstance, BOOL global)
WS_OVERLAPPEDWINDOW + WS_HSCROLL + WS_VSCROLL,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0,
0, hInstance2, 0);
-todo_wine_if (!global)
ok(hTestWnd != 0, "Failed to create window for hInstance %p\n", hInstance2);
-todo_wine_if (!global)
ok((HINSTANCE)GetClassLongPtrA(hTestWnd, GCLP_HMODULE) == hInstance,
"Wrong GCL instance %p != %p\n",
(HINSTANCE)GetClassLongPtrA(hTestWnd, GCLP_HMODULE), hInstance);
-todo_wine_if (!global)
ok((HINSTANCE)GetWindowLongPtrA(hTestWnd, GWLP_HINSTANCE) == hInstance2,
"Wrong GWL instance %p != %p\n",
(HINSTANCE)GetWindowLongPtrA(hTestWnd, GWLP_HINSTANCE), hInstance2);
diff --git a/server/class.c b/server/class.c
index b8240bd568..21903f90d0 100644
--- a/server/class.c
+++ b/server/class.c
@@ -102,7 +102,7 @@ static struct window_class *find_class( struct process *process, atom_t atom, mo
{
struct window_class *class = LIST_ENTRY( ptr, struct window_class, entry );
if (class->atom != atom) continue;
- if (!instance || !class->local || class->instance == instance) return class;
+ if (!instance || !class->local || (class->instance & ~0xffff) == (instance & ~0xffff)) return class;
}
return NULL;
}
--
2.20.1
4
3
[PATCH 1/4] d3dcompiler/tests: Rewrite to use a separate d3d9 device for each test.
by Zebediah Figura 18 Feb '20
by Zebediah Figura 18 Feb '20
18 Feb '20
From: Zebediah Figura <zfigura(a)codeweavers.com>
This brings the d3dcompiler tests more in line with existing d3d9 tests, and
allows potentially running the tests in parallel.
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com>
---
dlls/d3dcompiler_43/tests/hlsl.c | 787 +++++++++++++++----------------
1 file changed, 377 insertions(+), 410 deletions(-)
diff --git a/dlls/d3dcompiler_43/tests/hlsl.c b/dlls/d3dcompiler_43/tests/hlsl.c
index 868693838cc..7ab91bc3d5a 100644
--- a/dlls/d3dcompiler_43/tests/hlsl.c
+++ b/dlls/d3dcompiler_43/tests/hlsl.c
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2010 Travis Athougies
+ * Copyright (C) 2020 Zebediah Figura
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -25,290 +26,265 @@
static pD3DCompile ppD3DCompile;
static HRESULT (WINAPI *pD3DXGetShaderConstantTable)(const DWORD *byte_code, ID3DXConstantTable **constant_table);
-static D3DMATRIX *(WINAPI *pD3DXMatrixOrthoLH)(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
-struct vertex
+struct vec2
{
- float x, y, z;
- float tx, ty;
+ float x, y;
};
-/* Tells compute_shader_probe* which pixels should be what colors */
-struct hlsl_probe_info
+struct vec4
{
- unsigned int x, y;
- /* The expected values in this region */
- D3DXCOLOR c;
- /* The max error for any value */
- float epsilon;
- /* An error message to print if this test fails */
- const char *message;
+ float x, y, z, w;
};
-static HWND create_window(void)
+#define compile_shader(a, b) compile_shader_(__LINE__, a, b)
+static ID3D10Blob *compile_shader_(unsigned int line, const char *source, const char *target)
{
- WNDCLASSA wc = {0};
- wc.lpfnWndProc = DefWindowProcA;
- wc.lpszClassName = "d3d9_test_wc";
- RegisterClassA(&wc);
+ ID3D10Blob *blob = NULL, *errors = NULL;
+ HRESULT hr;
- return CreateWindowA("d3d9_test_wc", "d3d9_test", 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ hr = ppD3DCompile(source, strlen(source), NULL, NULL, NULL, "main", target, 0, 0, &blob, &errors);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to compile shader, hr %#x.\n", hr);
+ if (errors)
+ {
+ if (winetest_debug > 1)
+ trace_(__FILE__, line)("%s\n", (char *)ID3D10Blob_GetBufferPointer(errors));
+ ID3D10Blob_Release(errors);
+ }
+ return blob;
}
-static IDirect3DDevice9 *init_d3d9(IDirect3DVertexDeclaration9 **vdeclaration,
- IDirect3DVertexBuffer9 **quad_geometry, IDirect3DVertexShader9 **vshader_passthru)
+static IDirect3DDevice9 *create_d3d9_device(HWND window)
{
- static const struct vertex quad_vertices[4] =
+ D3DPRESENT_PARAMETERS present_parameters =
{
- {-1.0f, -1.0f, 0.0f, 0.0f, 1.0f},
- {-1.0f, 1.0f, 0.0f, 0.0f, 0.0f},
- { 1.0f, -1.0f, 0.0f, 1.0f, 1.0f},
- { 1.0f, 1.0f, 0.0f, 1.0f, 0.0f}
+ .Windowed = TRUE,
+ .hDeviceWindow = window,
+ .SwapEffect = D3DSWAPEFFECT_DISCARD,
+ .BackBufferWidth = 640,
+ .BackBufferHeight = 480,
+ .BackBufferFormat = D3DFMT_A8R8G8B8,
};
-
- static const D3DVERTEXELEMENT9 vdeclelements[] =
- {
- {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
- {0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
- D3DDECL_END()
- };
-
- static const char *vshader_passthru_hlsl =
- "float4 vshader(float4 pos: POSITION, inout float2 texcoord: TEXCOORD0): POSITION\n"
- "{\n"
- " return pos;\n"
- "}";
-
- IDirect3D9 *d3d9_ptr;
- IDirect3DDevice9 *device_ptr = NULL;
- D3DPRESENT_PARAMETERS present_parameters;
-
- void *temp_geometry_vertices;
-
- ID3D10Blob *compiled = NULL;
- ID3D10Blob *errors = NULL;
-
+ IDirect3DDevice9 *device;
+ IDirect3DSurface9 *rt;
+ IDirect3D9 *d3d;
+ D3DCAPS9 caps;
HRESULT hr;
- d3d9_ptr = Direct3DCreate9(D3D_SDK_VERSION);
- if (!d3d9_ptr)
+ d3d = Direct3DCreate9(D3D_SDK_VERSION);
+ ok(!!d3d, "Failed to create a D3D object.\n");
+
+ hr = IDirect3D9_CreateDevice(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, window,
+ D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device);
+ IDirect3D9_Release(d3d);
+ if (FAILED(hr))
{
- skip("could not create D3D9\n");
+ skip("Failed to create a 3D device, hr %#x.\n", hr);
return NULL;
}
- hr = IDirect3D9_CheckDeviceFormat(d3d9_ptr, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8,
- 0, D3DRTYPE_SURFACE, D3DFMT_A32B32G32R32F);
- if (FAILED(hr))
+ hr = IDirect3DDevice9_GetDeviceCaps(device, &caps);
+ ok(hr == D3D_OK, "Failed to get device caps, hr %#x.\n", hr);
+ if (caps.PixelShaderVersion < D3DPS_VERSION(2, 0) || caps.VertexShaderVersion < D3DVS_VERSION(2, 0))
{
- skip("A32B32G32R32F format not available on this device\n");
- IDirect3D9_Release(d3d9_ptr);
+ skip("No shader model 2 support.\n");
+ IDirect3DDevice9_Release(device);
return NULL;
}
- ZeroMemory(&present_parameters, sizeof(present_parameters));
- present_parameters.Windowed = TRUE;
- present_parameters.hDeviceWindow = create_window();
- present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
-
- hr = IDirect3D9_CreateDevice(d3d9_ptr, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, NULL,
- D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device_ptr);
- IDirect3D9_Release(d3d9_ptr);
- if (FAILED(hr))
+ if (FAILED(hr = IDirect3DDevice9_CreateRenderTarget(device, 640, 480, D3DFMT_A32B32G32R32F,
+ D3DMULTISAMPLE_NONE, 0, FALSE, &rt, NULL)))
{
- skip("could not create Direct3D9 device\n");
+ skip("Failed to create an A32B32G32R32F surface, hr %#x.\n", hr);
+ IDirect3DDevice9_Release(device);
return NULL;
}
+ ok(hr == D3D_OK, "Failed to create render target, hr %#x.\n", hr);
+ hr = IDirect3DDevice9_SetRenderTarget(device, 0, rt);
+ ok(hr == D3D_OK, "Failed to set render target, hr %#x.\n", hr);
+ IDirect3DSurface9_Release(rt);
- /* Create the quad geometry */
- hr = IDirect3DDevice9_CreateVertexBuffer(device_ptr, 4 * sizeof(struct vertex),
- D3DUSAGE_WRITEONLY, 0, D3DPOOL_DEFAULT, quad_geometry, NULL);
- ok(SUCCEEDED(hr),
- "Could not create vertex buffer, IDirect3DDevice9_CreateVertexBuffer returned: %08x\n", hr);
-
- hr = IDirect3DVertexBuffer9_Lock(*quad_geometry, 0, sizeof(quad_vertices), &temp_geometry_vertices, 0);
- ok(SUCCEEDED(hr), "IDirect3DVertexBuffer9_Lock returned: %08x\n", hr);
- memcpy(temp_geometry_vertices, quad_vertices, sizeof(quad_vertices));
- IDirect3DVertexBuffer9_Unlock(*quad_geometry);
+ return device;
+}
- hr = IDirect3DDevice9_CreateVertexDeclaration(device_ptr, vdeclelements, vdeclaration);
- ok(SUCCEEDED(hr), "Could not create vertex declaration: "
- "IDirect3DDevice9_CreateVertexDeclaration returned: %08x\n", hr);
+#define draw_quad(device, ps_code) draw_quad_(__LINE__, device, ps_code)
+static void draw_quad_(unsigned int line, IDirect3DDevice9 *device, ID3D10Blob *ps_code)
+{
+ IDirect3DVertexDeclaration9 *vertex_declaration;
+ IDirect3DVertexShader9 *vs;
+ IDirect3DPixelShader9 *ps;
+ ID3D10Blob *vs_code;
+ HRESULT hr;
- hr = IDirect3DDevice9_SetVertexDeclaration(device_ptr, *vdeclaration);
- ok(hr == D3D_OK, "IDirect3DDevice9_SetVertexDeclaration returned: %08x\n", hr);
+ static const D3DVERTEXELEMENT9 decl_elements[] =
+ {
+ {0, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
+ {0, 8, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
+ D3DDECL_END()
+ };
- /* Create a simple vertex shader to just pass through the values */
- hr = ppD3DCompile(vshader_passthru_hlsl, strlen(vshader_passthru_hlsl), NULL,
- NULL, NULL, "vshader", "vs_1_1", 0, 0, &compiled, &errors);
- if (FAILED(hr))
+ static const struct
{
- skip("not compiling vertex shader due to lacking wine HLSL support!\n");
- if (errors)
- ID3D10Blob_Release(errors);
- return NULL;
+ struct vec2 position;
+ struct vec2 t0;
}
+ quad[] =
+ {
+ {{-1.0f, -1.0f}, {0.0f, 1.0f}},
+ {{-1.0f, 1.0f}, {0.0f, 0.0f}},
+ {{ 1.0f, -1.0f}, {1.0f, 1.0f}},
+ {{ 1.0f, 1.0f}, {1.0f, 0.0f}},
+ };
- hr = IDirect3DDevice9_CreateVertexShader(device_ptr, ID3D10Blob_GetBufferPointer(compiled),
- vshader_passthru);
- ok(SUCCEEDED(hr), "IDirect3DDevice9_CreateVertexShader returned: %08x\n", hr);
- ID3D10Blob_Release(compiled);
+ static const char vs_source[] =
+ "float4 main(float4 pos : POSITION, inout float2 texcoord : TEXCOORD0) : POSITION\n"
+ "{\n"
+ " return pos;\n"
+ "}";
- return device_ptr;
-}
+ hr = IDirect3DDevice9_CreateVertexDeclaration(device, decl_elements, &vertex_declaration);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to create vertex declaration, hr %#x.\n", hr);
-/* Convenience functions */
-static void set_float4_d3d9(IDirect3DDevice9 *device, ID3DXConstantTable *constants, const char *name,
- float x, float y, float z, float w)
-{
- D3DXVECTOR4 vector;
- vector.x = x;
- vector.y = y;
- vector.z = z;
- vector.w = w;
- ID3DXConstantTable_SetVector(constants, device, name, &vector);
-}
+ hr = IDirect3DDevice9_SetVertexDeclaration(device, vertex_declaration);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to set vertex declaration, hr %#x.\n", hr);
-/* Compile our pixel shader and get back the compiled version and a constant table */
-static IDirect3DPixelShader9 *compile_pixel_shader9(IDirect3DDevice9 *device, const char *shader,
- const char *profile, ID3DXConstantTable **constants)
-{
- ID3D10Blob *compiled = NULL;
- ID3D10Blob *errors = NULL;
- IDirect3DPixelShader9 *pshader;
- HRESULT hr;
+ vs_code = compile_shader(vs_source, "vs_2_0");
+
+ hr = IDirect3DDevice9_CreateVertexShader(device, ID3D10Blob_GetBufferPointer(vs_code), &vs);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to create vertex shader, hr %#x.\n", hr);
+
+ hr = IDirect3DDevice9_SetVertexShader(device, vs);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to set vertex shader, hr %#x.\n", hr);
+
+ hr = IDirect3DDevice9_CreatePixelShader(device, ID3D10Blob_GetBufferPointer(ps_code), &ps);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to create pixel shader, hr %#x.\n", hr);
+
+ hr = IDirect3DDevice9_SetPixelShader(device, ps);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to set pixel shader, hr %#x.\n", hr);
+
+ hr = IDirect3DDevice9_BeginScene(device);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to draw, hr %#x.\n", hr);
- hr = ppD3DCompile(shader, strlen(shader), NULL, NULL,
- NULL, "test", profile, /* test is the name of the entry point of our shader */
- 0, 0, &compiled, &errors);
- ok(hr == D3D_OK, "Pixel shader %s compilation failed: %s\n", shader,
- errors ? (char *)ID3D10Blob_GetBufferPointer(errors) : "");
- if (FAILED(hr)) return NULL;
+ hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, quad, sizeof(*quad));
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to draw, hr %#x.\n", hr);
- hr = pD3DXGetShaderConstantTable(ID3D10Blob_GetBufferPointer(compiled), constants);
- ok(hr == D3D_OK, "Could not get constant table from compiled pixel shader\n");
+ hr = IDirect3DDevice9_EndScene(device);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to draw, hr %#x.\n", hr);
- hr = IDirect3DDevice9_CreatePixelShader(device, ID3D10Blob_GetBufferPointer(compiled), &pshader);
- ok(SUCCEEDED(hr), "IDirect3DDevice9_CreatePixelShader returned: %08x\n", hr);
- ID3D10Blob_Release(compiled);
- return pshader;
+ IDirect3DVertexShader9_Release(vs);
+ IDirect3DPixelShader9_Release(ps);
+ ID3D10Blob_Release(vs_code);
}
-/* Draw a full screen quad */
-static void draw_quad_with_shader9(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_geometry)
+static struct vec4 get_readback_vec4_d3d9(IDirect3DDevice9 *device, unsigned int x, unsigned int y)
{
+ IDirect3DSurface9 *surface = NULL, *target = NULL;
+ RECT rect = {x, y, x + 1, y + 1};
+ D3DLOCKED_RECT locked_rect;
+ D3DSURFACE_DESC desc;
+ struct vec4 ret;
HRESULT hr;
- D3DXMATRIX projection_matrix;
- pD3DXMatrixOrthoLH(&projection_matrix, 2.0f, 2.0f, 0.0f, 1.0f);
- IDirect3DDevice9_SetTransform(device, D3DTS_PROJECTION, &projection_matrix);
+ hr = IDirect3DDevice9Ex_GetRenderTarget(device, 0, &target);
+ ok(hr == D3D_OK, "Failed to get render target, hr %#x.\n", hr);
- hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
- ok(hr == D3D_OK, "IDirect3DDevice9_Clear returned: %08x\n", hr);
+ hr = IDirect3DSurface9_GetDesc(target, &desc);
+ ok(hr == D3D_OK, "Failed to get surface desc, hr %#x.\n", hr);
+ hr = IDirect3DDevice9Ex_CreateOffscreenPlainSurface(device, desc.Width, desc.Height,
+ desc.Format, D3DPOOL_SYSTEMMEM, &surface, NULL);
+ ok(hr == D3D_OK, "Failed to create surface, hr %#x.\n", hr);
- hr = IDirect3DDevice9_BeginScene(device);
- ok(hr == D3D_OK, "IDirect3DDevice9_BeginScene returned: %08x\n", hr);
+ hr = IDirect3DDevice9Ex_GetRenderTargetData(device, target, surface);
+ ok(hr == D3D_OK, "Failed to get render target data, hr %#x.\n", hr);
- hr = IDirect3DDevice9_SetStreamSource(device, 0, quad_geometry, 0, sizeof(struct vertex));
- ok(hr == D3D_OK, "IDirect3DDevice9_SetStreamSource returned: %08x\n", hr);
- hr = IDirect3DDevice9_DrawPrimitive(device, D3DPT_TRIANGLESTRIP, 0, 2);
- ok(hr == D3D_OK, "IDirect3DDevice9_DrawPrimitive returned: %08x\n", hr);
+ hr = IDirect3DSurface9_LockRect(surface, &locked_rect, &rect, D3DLOCK_READONLY);
+ ok(hr == D3D_OK, "Failed to lock surface, hr %#x.\n", hr);
- hr = IDirect3DDevice9_EndScene(device);
- ok(hr == D3D_OK, "IDirect3DDevice9_EndScene returned: %08x\n", hr);
+ ret = ((struct vec4 *)locked_rect.pBits)[0];
+
+ IDirect3DSurface9_UnlockRect(surface);
+
+ IDirect3DSurface9_Release(target);
+ IDirect3DSurface9_Release(surface);
+ return ret;
}
-static void setup_device9(IDirect3DDevice9 *device, IDirect3DSurface9 **render_target,
- IDirect3DSurface9 **readback, D3DFORMAT format, unsigned int width, unsigned int height,
- IDirect3DVertexShader9 *vshader, IDirect3DPixelShader9 *pshader)
+#define set_float_d3d9(a, b, c, d) set_float_d3d9_(__LINE__, a, b, c, d)
+static void set_float_d3d9_(unsigned int line, IDirect3DDevice9 *device, ID3D10Blob *blob, const char *name, float f)
{
+ ID3DXConstantTable *constants;
HRESULT hr;
- hr = IDirect3DDevice9_CreateRenderTarget(device, width, height, format,
- D3DMULTISAMPLE_NONE, 0, FALSE, render_target, NULL);
- ok(hr == D3D_OK, "IDirect3DDevice9_CreateRenderTarget returned: %08x\n", hr);
-
- /* The Direct3D 9 docs state that we cannot lock a render target surface,
- instead we must copy the render target onto this surface to lock it */
- hr = IDirect3DDevice9_CreateOffscreenPlainSurface(device, width, height, format,
- D3DPOOL_SYSTEMMEM, readback, NULL);
- ok(hr == D3D_OK, "IDirect3DDevice9_CreateOffscreenPlainSurface returned: %08x\n", hr);
-
- hr = IDirect3DDevice9_SetRenderTarget(device, 0, *render_target);
- ok(hr == D3D_OK, "IDirect3DDevice9_SetRenderTarget returned: %08x\n", hr);
-
- hr = IDirect3DDevice9_SetVertexShader(device, vshader);
- ok(hr == D3D_OK, "IDirect3DDevice9_SetVertexShader returned: %08x\n", hr);
- hr = IDirect3DDevice9_SetPixelShader(device, pshader);
- ok(hr == D3D_OK, "IDirect3DDevice9_SetPixelShader returned: %08x\n", hr);
+
+ hr = pD3DXGetShaderConstantTable(ID3D10Blob_GetBufferPointer(blob), &constants);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to get constant table, hr %#x.\n", hr);
+
+ hr = ID3DXConstantTable_SetFloat(constants, device, name, f);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to set constant, hr %#x.\n", hr);
+
+ ID3DXConstantTable_Release(constants);
}
-static BOOL colors_match(D3DXCOLOR a, D3DXCOLOR b, float epsilon)
+#define set_float4_d3d9(a, b, c, d, e, f, g) set_float4_d3d9_(__LINE__, a, b, c, d, e, f, g)
+static void set_float4_d3d9_(unsigned int line, IDirect3DDevice9 *device, ID3D10Blob *blob,
+ const char *name, float x, float y, float z, float w)
{
- return (fabs(a.r - b.r) < epsilon && fabs(a.g - b.g) < epsilon && fabs(a.b - b.b) < epsilon &&
- fabs(a.a - b.a) < epsilon);
+ ID3DXConstantTable *constants;
+ D3DXVECTOR4 v = {x, y, z, w};
+ HRESULT hr;
+
+ hr = pD3DXGetShaderConstantTable(ID3D10Blob_GetBufferPointer(blob), &constants);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to get constant table, hr %#x.\n", hr);
+
+ hr = ID3DXConstantTable_SetVector(constants, device, name, &v);
+ ok_(__FILE__, line)(hr == D3D_OK, "Failed to set constant, hr %#x.\n", hr);
+
+ ID3DXConstantTable_Release(constants);
}
-/* Compute a shader on a width by height buffer and probes certain locations
- to see if they are as expected. */
-static void compute_shader_probe9(IDirect3DDevice9 *device, IDirect3DVertexShader9 *vshader,
- IDirect3DPixelShader9 *pshader, IDirect3DVertexBuffer9 *quad_geometry,
- const struct hlsl_probe_info *probes, unsigned int count,
- unsigned int width, unsigned int height, unsigned int line_number)
+static BOOL compare_float(float f, float g, unsigned int ulps)
{
- IDirect3DSurface9 *render_target;
- IDirect3DSurface9 *readback;
+ int x = *(int *)&f;
+ int y = *(int *)&g;
- HRESULT hr;
- D3DLOCKED_RECT lr;
- D3DXCOLOR *pbits_data;
- unsigned int i;
+ if (x < 0)
+ x = INT_MIN - x;
+ if (y < 0)
+ y = INT_MIN - y;
- setup_device9(device, &render_target, &readback, D3DFMT_A32B32G32R32F,
- width, height, vshader, pshader);
-
- /* Draw the quad with the shader and read back the data */
- draw_quad_with_shader9(device, quad_geometry);
- IDirect3DDevice9_GetRenderTargetData(device, render_target, readback);
- hr = IDirect3DSurface9_LockRect(readback, &lr, NULL, D3DLOCK_READONLY);
- ok(hr == D3D_OK, "IDirect3DSurface9_LockRect returned: %08x\n", hr);
- pbits_data = lr.pBits;
-
- /* Now go through the probes and check each one */
- for (i = 0; i < count; i++, probes++) {
- int index = probes->x + (probes->y * lr.Pitch / sizeof(D3DXCOLOR));
- ok(colors_match(probes->c, pbits_data[index], probes->epsilon),
- "Line %d: At (%d, %d): %s: Expected (%.04f,%.04f,%.04f, %.04f), got "
- "(%.04f,%.04f,%.04f,%.04f)\n", line_number, probes->x, probes->y, probes->message,
- probes->c.r, probes->c.g, probes->c.b, probes->c.a, pbits_data[index].r,
- pbits_data[index].g, pbits_data[index].b, pbits_data[index].a);
- }
+ if (abs(x - y) > ulps)
+ return FALSE;
- hr = IDirect3DSurface9_UnlockRect(readback);
- ok(hr == D3D_OK, "IDirect3DSurface9_UnlockRect returned: %08x\n", hr);
+ return TRUE;
+}
+
+static BOOL compare_vec4(const struct vec4 *vec, float x, float y, float z, float w, unsigned int ulps)
+{
+ return compare_float(vec->x, x, ulps)
+ && compare_float(vec->y, y, ulps)
+ && compare_float(vec->z, z, ulps)
+ && compare_float(vec->w, w, ulps);
+}
- /* We now present the scene. This is mostly for debugging purposes, since GetRenderTargetData
- also waits for drawing commands to complete. The reason this call is here and not in a
- draw function is because the contents of the render target surface are invalidated after
- this call. */
- hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
- ok(hr == D3D_OK, "IDirect3DDevice9_Present returned: %08x\n", hr);
+static HWND create_window(void)
+{
+ WNDCLASSA wc = {0};
+ wc.lpfnWndProc = DefWindowProcA;
+ wc.lpszClassName = "d3d9_test_wc";
+ RegisterClassA(&wc);
- IDirect3DSurface9_Release(render_target);
- IDirect3DSurface9_Release(readback);
+ return CreateWindowA("d3d9_test_wc", "d3d9_test", 0, 0, 0, 0, 0, 0, 0, 0, 0);
}
-/* Now the actual test functions */
-static void test_swizzle(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_geometry,
- IDirect3DVertexShader9 *vshader_passthru)
+static void test_swizzle(void)
{
- static const struct hlsl_probe_info probes[] =
- {
- {0, 0, {0.0101f, 0.0303f, 0.0202f, 0.0404f}, 0.0001f, "swizzle_test"}
- };
+ IDirect3DDevice9 *device;
+ ID3D10Blob *ps_code;
+ struct vec4 v;
+ HWND window;
static const char *swizzle_test_shader =
"uniform float4 color;\n"
- "float4 test(): COLOR\n"
+ "float4 main() : COLOR\n"
"{\n"
" float4 ret = color;\n"
" ret.gb = ret.ra;\n"
@@ -316,36 +292,40 @@ static void test_swizzle(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_
" return ret;\n"
"}";
- ID3DXConstantTable *constants;
- IDirect3DPixelShader9 *pshader;
+ window = create_window();
+ ok(!!window, "Failed to create a window.\n");
- pshader = compile_pixel_shader9(device, swizzle_test_shader, "ps_2_0", &constants);
- if (pshader != NULL)
+ if (!(device = create_d3d9_device(window)))
{
- set_float4_d3d9(device, constants, "color", 0.0303f, 0.0f, 0.0f, 0.0202f);
+ DestroyWindow(window);
+ return;
+ }
+
+ todo_wine ps_code = compile_shader(swizzle_test_shader, "ps_2_0");
+ if (ps_code)
+ {
+ set_float4_d3d9(device, ps_code, "color", 0.0303f, 0.0f, 0.0f, 0.0202f);
+ draw_quad(device, ps_code);
- compute_shader_probe9(device, vshader_passthru, pshader, quad_geometry,
- probes, ARRAY_SIZE(probes), 1, 1, __LINE__);
+ v = get_readback_vec4_d3d9(device, 0, 0);
+ ok(compare_vec4(&v, 0.0101f, 0.0303f, 0.0202f, 0.0404f, 0),
+ "Got unexpected value {%.8e, %.8e, %.8e, %.8e}.\n", v.x, v.y, v.z, v.w);
- ID3DXConstantTable_Release(constants);
- IDirect3DPixelShader9_Release(pshader);
+ ID3D10Blob_Release(ps_code);
}
+ IDirect3DDevice9_Release(device);
+ DestroyWindow(window);
}
-static void test_math(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_geometry,
- IDirect3DVertexShader9 *vshader_passthru)
+static void test_math(void)
{
- /* Tests order of operations */
- static const float u = 2.5f, v = 0.3f, w = 0.2f, x = 0.7f, y = 0.1f, z = 1.5f;
-
- static const struct hlsl_probe_info probes[] =
- {
- {0, 0, {-12.4300f, 9.8333f, 1.6000f, 34.9999f}, 0.0001f,
- "order of operations test"}
- };
+ IDirect3DDevice9 *device;
+ ID3D10Blob *ps_code;
+ struct vec4 v;
+ HWND window;
static const char *order_of_operations_shader =
- "float4 test(uniform float u, uniform float v, uniform float w, uniform float x,\n"
+ "float4 main(uniform float u, uniform float v, uniform float w, uniform float x,\n"
" uniform float y, uniform float z): COLOR\n"
"{\n"
" return float4(x * y - z / w + --u / -v,\n"
@@ -354,101 +334,127 @@ static void test_math(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_geo
" x / y / w);\n"
"}";
- ID3DXConstantTable *constants;
- IDirect3DPixelShader9 *pshader;
+ window = create_window();
+ ok(!!window, "Failed to create a window.\n");
- pshader = compile_pixel_shader9(device, order_of_operations_shader, "ps_2_0", &constants);
- if (pshader != NULL)
+ if (!(device = create_d3d9_device(window)))
{
- ID3DXConstantTable_SetFloat(constants, device, "$u", u);
- ID3DXConstantTable_SetFloat(constants, device, "$v", v);
- ID3DXConstantTable_SetFloat(constants, device, "$w", w);
- ID3DXConstantTable_SetFloat(constants, device, "$x", x);
- ID3DXConstantTable_SetFloat(constants, device, "$y", y);
- ID3DXConstantTable_SetFloat(constants, device, "$z", z);
-
- compute_shader_probe9(device, vshader_passthru, pshader, quad_geometry,
- probes, ARRAY_SIZE(probes), 1, 1, __LINE__);
+ DestroyWindow(window);
+ return;
+ }
- ID3DXConstantTable_Release(constants);
- IDirect3DPixelShader9_Release(pshader);
+ todo_wine ps_code = compile_shader(order_of_operations_shader, "ps_2_0");
+ if (ps_code)
+ {
+ set_float_d3d9(device, ps_code, "$u", 2.5f);
+ set_float_d3d9(device, ps_code, "$v", 0.3f);
+ set_float_d3d9(device, ps_code, "$w", 0.2f);
+ set_float_d3d9(device, ps_code, "$x", 0.7f);
+ set_float_d3d9(device, ps_code, "$y", 0.1f);
+ set_float_d3d9(device, ps_code, "$z", 1.5f);
+ draw_quad(device, ps_code);
+
+ v = get_readback_vec4_d3d9(device, 0, 0);
+ ok(compare_vec4(&v, -12.43f, 9.833333f, 1.6f, 35.0f, 1),
+ "Got unexpected value {%.8e, %.8e, %.8e, %.8e}.\n", v.x, v.y, v.z, v.w);
+
+ ID3D10Blob_Release(ps_code);
}
+ IDirect3DDevice9_Release(device);
+ DestroyWindow(window);
}
-static void test_conditionals(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_geometry,
- IDirect3DVertexShader9 *vshader_passthru)
+static void test_conditionals(void)
{
- static const struct hlsl_probe_info if_greater_probes[] =
- {
- { 0, 0, {0.9f, 0.8f, 0.7f, 0.6f}, 0.0001f, "if greater test"},
- { 5, 0, {0.9f, 0.8f, 0.7f, 0.6f}, 0.0001f, "if greater test"},
- {10, 0, {0.9f, 0.8f, 0.7f, 0.6f}, 0.0001f, "if greater test"},
- {15, 0, {0.9f, 0.8f, 0.7f, 0.6f}, 0.0001f, "if greater test"},
- {25, 0, {0.1f, 0.2f, 0.3f, 0.4f}, 0.0001f, "if greater test"},
- {30, 0, {0.1f, 0.2f, 0.3f, 0.4f}, 0.0001f, "if greater test"}
- };
+ IDirect3DDevice9 *device;
+ ID3D10Blob *ps_code;
+ unsigned int i;
+ struct vec4 v;
+ HWND window;
static const char *if_greater_shader =
- "float4 test(float2 pos: TEXCOORD0): COLOR\n"
+ "float4 main(float2 pos : TEXCOORD0) : COLOR\n"
"{\n"
- " if((pos.x * 32.0) > 20.0)\n"
+ " if((pos.x * 640.0) > 200.0)\n"
" return float4(0.1, 0.2, 0.3, 0.4);\n"
" else\n"
" return float4(0.9, 0.8, 0.7, 0.6);\n"
"}";
- static const struct hlsl_probe_info ternary_operator_probes[] =
- {
- {0, 0, {0.50f, 0.25f, 0.50f, 0.75f}, 0.00001f, "ternary operator test"},
- {1, 0, {0.50f, 0.25f, 0.50f, 0.75f}, 0.00001f, "ternary operator test"},
- {2, 0, {0.50f, 0.25f, 0.50f, 0.75f}, 0.00001f, "ternary operator test"},
- {3, 0, {0.50f, 0.25f, 0.50f, 0.75f}, 0.00001f, "ternary operator test"},
- {4, 0, {0.60f, 0.80f, 0.10f, 0.20f}, 0.00001f, "ternary operator test"},
- {5, 0, {0.60f, 0.80f, 0.10f, 0.20f}, 0.00001f, "ternary operator test"},
- {6, 0, {0.60f, 0.80f, 0.10f, 0.20f}, 0.00001f, "ternary operator test"},
- {7, 0, {0.60f, 0.80f, 0.10f, 0.20f}, 0.00001f, "ternary operator test"}
- };
-
static const char *ternary_operator_shader =
- "float4 test(float2 pos: TEXCOORD0): COLOR\n"
+ "float4 main(float2 pos : TEXCOORD0) : COLOR\n"
"{\n"
" return (pos.x < 0.5?float4(0.5, 0.25, 0.5, 0.75):float4(0.6, 0.8, 0.1, 0.2));\n"
"}";
- ID3DXConstantTable *constants;
- IDirect3DPixelShader9 *pshader;
+ window = create_window();
+ ok(!!window, "Failed to create a window.\n");
+
+ if (!(device = create_d3d9_device(window)))
+ {
+ DestroyWindow(window);
+ return;
+ }
- pshader = compile_pixel_shader9(device, if_greater_shader, "ps_2_0", &constants);
- if (pshader != NULL)
+ todo_wine ps_code = compile_shader(if_greater_shader, "ps_2_0");
+ if (ps_code)
{
- compute_shader_probe9(device, vshader_passthru, pshader, quad_geometry, if_greater_probes,
- ARRAY_SIZE(if_greater_probes), 32, 1, __LINE__);
+ draw_quad(device, ps_code);
- ID3DXConstantTable_Release(constants);
- IDirect3DPixelShader9_Release(pshader);
+ for (i = 0; i < 200; i += 40)
+ {
+ v = get_readback_vec4_d3d9(device, i, 0);
+ ok(compare_vec4(&v, 0.9f, 0.8f, 0.7f, 0.6f, 0),
+ "Got unexpected value {%.8e, %.8e, %.8e, %.8e}.\n", v.x, v.y, v.z, v.w);
+ }
+
+ for (i = 240; i < 640; i += 40)
+ {
+ v = get_readback_vec4_d3d9(device, i, 0);
+ ok(compare_vec4(&v, 0.1f, 0.2f, 0.3f, 0.4f, 0),
+ "Got unexpected value {%.8e, %.8e, %.8e, %.8e}.\n", v.x, v.y, v.z, v.w);
+ }
+
+ ID3D10Blob_Release(ps_code);
}
- pshader = compile_pixel_shader9(device, ternary_operator_shader, "ps_2_0", &constants);
- if (pshader != NULL)
+ todo_wine ps_code = compile_shader(ternary_operator_shader, "ps_2_0");
+ if (ps_code)
{
- compute_shader_probe9(device, vshader_passthru, pshader, quad_geometry, ternary_operator_probes,
- ARRAY_SIZE(ternary_operator_probes), 8, 1, __LINE__);
+ draw_quad(device, ps_code);
- ID3DXConstantTable_Release(constants);
- IDirect3DPixelShader9_Release(pshader);
+ for (i = 0; i < 320; i += 40)
+ {
+ v = get_readback_vec4_d3d9(device, i, 0);
+ ok(compare_vec4(&v, 0.5f, 0.25f, 0.5f, 0.75f, 0),
+ "Got unexpected value {%.8e, %.8e, %.8e, %.8e}.\n", v.x, v.y, v.z, v.w);
+ }
+
+ for (i = 360; i < 640; i += 40)
+ {
+ v = get_readback_vec4_d3d9(device, i, 0);
+ ok(compare_vec4(&v, 0.6f, 0.8f, 0.1f, 0.2f, 0),
+ "Got unexpected value {%.8e, %.8e, %.8e, %.8e}.\n", v.x, v.y, v.z, v.w);
+ }
+
+ ID3D10Blob_Release(ps_code);
}
+
+ IDirect3DDevice9_Release(device);
+ DestroyWindow(window);
}
-static void test_float_vectors(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_geometry,
- IDirect3DVertexShader9 *vshader_passthru)
+static void test_float_vectors(void)
{
- static const struct hlsl_probe_info vec4_indexing_test1_probes[] =
- {
- {0, 0, {0.020f, 0.245f, 0.351f, 1.000f}, 0.0001f, "vec4 indexing test 1"}
- };
+ ID3DXConstantTable *constants;
+ IDirect3DDevice9 *device;
+ ID3D10Blob *ps_code;
+ struct vec4 v;
+ HWND window;
+ HRESULT hr;
static const char *vec4_indexing_test1_shader =
- "float4 test(): COLOR\n"
+ "float4 main() : COLOR\n"
"{\n"
" float4 color;\n"
" color[0] = 0.020;\n"
@@ -458,15 +464,10 @@ static void test_float_vectors(IDirect3DDevice9 *device, IDirect3DVertexBuffer9
" return color;\n"
"}";
- static const struct hlsl_probe_info vec4_indexing_test2_probes[] =
- {
- {0, 0, {0.5f, 0.3f, 0.8f, 0.2f}, 0.0001f, "vec4 indexing test 2"}
- };
-
- /* We have this uniform i here so the compiler can't optimize */
+ /* A uniform index is used so that the compiler can't optimize. */
static const char *vec4_indexing_test2_shader =
"uniform int i;\n"
- "float4 test(): COLOR\n"
+ "float4 main() : COLOR\n"
"{\n"
" float4 color = float4(0.5, 0.4, 0.3, 0.2);\n"
" color.g = color[i];\n"
@@ -474,73 +475,58 @@ static void test_float_vectors(IDirect3DDevice9 *device, IDirect3DVertexBuffer9
" return color;\n"
"}";
- ID3DXConstantTable *constants;
- IDirect3DPixelShader9 *pshader;
+ window = create_window();
+ ok(!!window, "Failed to create a window.\n");
- pshader = compile_pixel_shader9(device, vec4_indexing_test1_shader, "ps_2_0", &constants);
- if (pshader != NULL)
+ if (!(device = create_d3d9_device(window)))
{
- compute_shader_probe9(device, vshader_passthru, pshader, quad_geometry, vec4_indexing_test1_probes,
- ARRAY_SIZE(vec4_indexing_test1_probes), 1, 1, __LINE__);
-
- ID3DXConstantTable_Release(constants);
- IDirect3DPixelShader9_Release(pshader);
+ DestroyWindow(window);
+ return;
}
- pshader = compile_pixel_shader9(device, vec4_indexing_test2_shader, "ps_2_0", &constants);
- if (pshader != NULL)
+ todo_wine ps_code = compile_shader(vec4_indexing_test1_shader, "ps_2_0");
+ if (ps_code)
{
- ID3DXConstantTable_SetInt(constants, device, "i", 2);
+ draw_quad(device, ps_code);
+
+ v = get_readback_vec4_d3d9(device, 0, 0);
+ ok(compare_vec4(&v, 0.02f, 0.245f, 0.351f, 1.0f, 0),
+ "Got unexpected value {%.8e, %.8e, %.8e, %.8e}.\n", v.x, v.y, v.z, v.w);
- compute_shader_probe9(device, vshader_passthru, pshader, quad_geometry, vec4_indexing_test2_probes,
- ARRAY_SIZE(vec4_indexing_test2_probes), 32, 1, __LINE__);
+ ID3D10Blob_Release(ps_code);
+ }
+ todo_wine ps_code = compile_shader(vec4_indexing_test2_shader, "ps_2_0");
+ if (ps_code)
+ {
+ hr = pD3DXGetShaderConstantTable(ID3D10Blob_GetBufferPointer(ps_code), &constants);
+ ok(hr == D3D_OK, "Failed to get constants, hr %#x.\n", hr);
+ hr = ID3DXConstantTable_SetInt(constants, device, "i", 2);
+ ok(hr == D3D_OK, "Failed to set constant, hr %#x.\n", hr);
ID3DXConstantTable_Release(constants);
- IDirect3DPixelShader9_Release(pshader);
+ draw_quad(device, ps_code);
+
+ v = get_readback_vec4_d3d9(device, 0, 0);
+ ok(compare_vec4(&v, 0.5f, 0.3f, 0.8f, 0.2f, 0),
+ "Got unexpected value {%.8e, %.8e, %.8e, %.8e}.\n", v.x, v.y, v.z, v.w);
+
+ ID3D10Blob_Release(ps_code);
}
+
+ IDirect3DDevice9_Release(device);
+ DestroyWindow(window);
}
-static void test_trig(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_geometry,
- IDirect3DVertexShader9 *vshader_passthru)
+static void test_trig(void)
{
- static const struct hlsl_probe_info sincos_probes[] =
- {
- {0, 0, {0.5000f, 1.0000f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {1, 0, {0.5975f, 0.9904f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {2, 0, {0.6913f, 0.9620f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {3, 0, {0.7778f, 0.9160f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {4, 0, {0.8536f, 0.8536f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {5, 0, {0.9157f, 0.7778f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {6, 0, {0.9620f, 0.6913f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {7, 0, {0.9904f, 0.5975f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {8, 0, {1.0000f, 0.5000f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {9, 0, {0.9904f, 0.4025f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {10, 0, {0.9619f, 0.3087f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {11, 0, {0.9157f, 0.2222f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {12, 0, {0.8536f, 0.1464f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {13, 0, {0.7778f, 0.0843f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {14, 0, {0.6913f, 0.0381f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {15, 0, {0.5975f, 0.0096f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {16, 0, {0.5000f, 0.0000f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {17, 0, {0.4025f, 0.0096f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {18, 0, {0.3087f, 0.0381f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {19, 0, {0.2222f, 0.0843f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {20, 0, {0.1464f, 0.1464f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {21, 0, {0.0843f, 0.2222f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {22, 0, {0.0381f, 0.3087f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {23, 0, {0.0096f, 0.4025f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {24, 0, {0.0000f, 0.5000f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {25, 0, {0.0096f, 0.5975f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {26, 0, {0.0381f, 0.6913f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {27, 0, {0.0843f, 0.7778f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {28, 0, {0.1464f, 0.8536f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {29, 0, {0.2222f, 0.9157f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {30, 0, {0.3087f, 0.9619f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- {31, 0, {0.4025f, 0.9904f, 0.0f, 0.0f}, 0.001f, "sin/cos test"},
- };
+ IDirect3DDevice9 *device;
+ ID3D10Blob *ps_code;
+ unsigned int i;
+ struct vec4 v;
+ HWND window;
static const char *sincos_shader =
- "float4 test(float x: TEXCOORD0): COLOR\n"
+ "float4 main(float x : TEXCOORD0) : COLOR\n"
"{\n"
" const float pi2 = 6.2831853;\n"
" float calcd_sin = (sin(x * pi2) + 1)/2;\n"
@@ -548,22 +534,37 @@ static void test_trig(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *quad_geo
" return float4(calcd_sin, calcd_cos, 0, 0);\n"
"}";
- ID3DXConstantTable *constants;
- IDirect3DPixelShader9 *pshader;
+ window = create_window();
+ ok(!!window, "Failed to create a window.\n");
+
+ if (!(device = create_d3d9_device(window)))
+ {
+ DestroyWindow(window);
+ return;
+ }
- pshader = compile_pixel_shader9(device, sincos_shader, "ps_2_0", &constants);
- if (pshader != NULL)
+ todo_wine ps_code = compile_shader(sincos_shader, "ps_2_0");
+ if (ps_code)
{
- compute_shader_probe9(device, vshader_passthru, pshader, quad_geometry, sincos_probes,
- ARRAY_SIZE(sincos_probes), 32, 1, __LINE__);
+ draw_quad(device, ps_code);
- ID3DXConstantTable_Release(constants);
- IDirect3DPixelShader9_Release(pshader);
+ for (i = 0; i < 32; ++i)
+ {
+ float expect_x = (sinf(i * 2 * M_PI / 32) + 1.0f) / 2.0f;
+ float expect_y = (cosf(i * 2 * M_PI / 32) + 1.0f) / 2.0f;
+ v = get_readback_vec4_d3d9(device, i * 640 / 32, 0);
+ ok(compare_vec4(&v, expect_x, expect_y, 0.0f, 0.0f, 4096),
+ "Test %u: Got {%.8e, %.8e, %.8e, %.8e}, expected {%.8e, %.8e, %.8e, %.8e}.\n",
+ i, v.x, v.y, v.z, v.w, expect_x, expect_y, 0.0f, 0.0f);
+ }
+
+ ID3D10Blob_Release(ps_code);
}
+ IDirect3DDevice9_Release(device);
+ DestroyWindow(window);
}
-static void test_fail(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *qquad_geometry,
- IDirect3DVertexShader9 *vshader_passthru)
+static void test_fail(void)
{
static const char *tests[] =
{
@@ -619,10 +620,11 @@ static void test_fail(IDirect3DDevice9 *device, IDirect3DVertexBuffer9 *qquad_ge
{
compiled = errors = NULL;
hr = ppD3DCompile(tests[i], strlen(tests[i]), NULL, NULL, NULL, "test", "ps_2_0", 0, 0, &compiled, &errors);
- ok(hr == E_FAIL, "Test %u, got unexpected hr %#x.\n", i, hr);
- ok(!!errors, "Test %u, expected non-NULL error blob.\n", i);
+ todo_wine ok(hr == E_FAIL, "Test %u, got unexpected hr %#x.\n", i, hr);
+ todo_wine_if (i == 1) ok(!!errors, "Test %u, expected non-NULL error blob.\n", i);
ok(!compiled, "Test %u, expected no compiled shader blob.\n", i);
- ID3D10Blob_Release(errors);
+ if (errors)
+ ID3D10Blob_Release(errors);
}
}
@@ -642,12 +644,6 @@ static BOOL load_d3dcompiler(void)
START_TEST(hlsl)
{
- D3DCAPS9 caps;
- ULONG refcount;
- IDirect3DDevice9 *device;
- IDirect3DVertexDeclaration9 *vdeclaration;
- IDirect3DVertexBuffer9 *quad_geometry;
- IDirect3DVertexShader9 *vshader_passthru;
HMODULE mod;
if (!load_d3dcompiler())
@@ -662,40 +658,11 @@ START_TEST(hlsl)
return;
}
pD3DXGetShaderConstantTable = (void *)GetProcAddress(mod, "D3DXGetShaderConstantTable");
- pD3DXMatrixOrthoLH = (void *)GetProcAddress(mod, "D3DXMatrixOrthoLH");
-
- device = init_d3d9(&vdeclaration, &quad_geometry, &vshader_passthru);
- if (!device) return;
-
- /* Make sure we support pixel shaders, before trying to compile them! */
- /* Direct3D 9 (Shader model 1-3 tests) */
- IDirect3DDevice9_GetDeviceCaps(device, &caps);
- if (caps.PixelShaderVersion >= D3DPS_VERSION(2, 0))
- {
- todo_wine
- {
- test_swizzle(device, quad_geometry, vshader_passthru);
- test_math(device, quad_geometry, vshader_passthru);
- test_conditionals(device, quad_geometry, vshader_passthru);
- test_float_vectors(device, quad_geometry, vshader_passthru);
- test_trig(device, quad_geometry, vshader_passthru);
- test_fail(device, quad_geometry, vshader_passthru);
- }
- } else skip("no pixel shader support\n");
-
- /* Reference counting sanity checks */
- if (vshader_passthru)
- {
- refcount = IDirect3DVertexShader9_Release(vshader_passthru);
- ok(!refcount, "Pass-through vertex shader has %u references left\n", refcount);
- }
-
- refcount = IDirect3DVertexBuffer9_Release(quad_geometry);
- ok(!refcount, "Vertex buffer has %u references left\n", refcount);
-
- refcount = IDirect3DVertexDeclaration9_Release(vdeclaration);
- ok(!refcount, "Vertex declaration has %u references left\n", refcount);
- refcount = IDirect3DDevice9_Release(device);
- ok(!refcount, "Device has %u references left\n", refcount);
+ test_swizzle();
+ test_math();
+ test_conditionals();
+ test_float_vectors();
+ test_trig();
+ test_fail();
}
--
2.25.0
2
4
[PATCH 2/2] msxml3/tests: Just use a wchar string literal instead of _bstr_()
by Michael Stefaniuc 18 Feb '20
by Michael Stefaniuc 18 Feb '20
18 Feb '20
lstrcmpW and memcmp can deal just fine with WCHAR* and don't need
a BSTR.
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/msxml3/tests/domdoc.c | 326 +++++++++++++++++-----------------
dlls/msxml3/tests/httpreq.c | 4 +-
dlls/msxml3/tests/saxreader.c | 76 ++++----
3 files changed, 203 insertions(+), 203 deletions(-)
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 51bd1b47ca..a6acdba366 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -1726,19 +1726,19 @@ if (0)
/* get data Tests */
r = IXMLDOMText_get_data(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect put_data string\n");
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect put_data string\n");
SysFreeString(str);
/* Confirm XML text is good */
r = IXMLDOMText_get_xml(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect xml string\n");
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect xml string\n");
SysFreeString(str);
/* Confirm we get the put_data Text back */
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect xml string\n");
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect xml string\n");
SysFreeString(str);
/* test substringData */
@@ -1772,19 +1772,19 @@ if (0)
/* test substringData - Start of string */
r = IXMLDOMText_substringData(nodetext, 0, 4, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("This") ), "incorrect substringData string\n");
+ ok(!lstrcmpW(str, L"This"), "incorrect substringData string\n");
SysFreeString(str);
/* test substringData - Middle of string */
r = IXMLDOMText_substringData(nodetext, 13, 4, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("test") ), "incorrect substringData string\n");
+ ok(!lstrcmpW(str, L"test"), "incorrect substringData string\n");
SysFreeString(str);
/* test substringData - End of string */
r = IXMLDOMText_substringData(nodetext, 20, 4, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("\\") ), "incorrect substringData string\n");
+ ok(!lstrcmpW(str, L"\\"), "incorrect substringData string\n");
SysFreeString(str);
/* test appendData */
@@ -1799,7 +1799,7 @@ if (0)
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\Append") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\Append"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* test insertData */
@@ -1840,7 +1840,7 @@ if (0)
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("Begin This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"Begin This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete data */
@@ -1874,7 +1874,7 @@ if (0)
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete from end */
@@ -1887,7 +1887,7 @@ if (0)
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("This &is a Middle; test <>\\Append") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"This &is a Middle; test <>\\Append"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete from inside */
@@ -1900,7 +1900,7 @@ if (0)
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L""), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete whole data ... */
@@ -1934,7 +1934,7 @@ if (0)
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("99") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"99"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* ::replaceData() */
@@ -1948,14 +1948,14 @@ if (0)
ok(r == E_INVALIDARG, "ret %08x\n", r );
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
r = IXMLDOMText_replaceData(nodetext, 0, 0, NULL);
ok(r == S_OK, "ret %08x\n", r );
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* NULL pointer means delete */
@@ -1963,7 +1963,7 @@ if (0)
ok(r == S_OK, "ret %08x\n", r );
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("tr1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"tr1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* empty string means delete */
@@ -1971,7 +1971,7 @@ if (0)
ok(r == S_OK, "ret %08x\n", r );
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("r1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"r1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* zero count means insert */
@@ -1979,7 +1979,7 @@ if (0)
ok(r == S_OK, "ret %08x\n", r );
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("ar1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"ar1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
r = IXMLDOMText_replaceData(nodetext, 0, 2, NULL);
@@ -1989,7 +1989,7 @@ if (0)
ok(r == S_OK, "ret %08x\n", r );
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("m1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"m1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* nonempty string, count greater than its length */
@@ -1997,7 +1997,7 @@ if (0)
ok(r == S_OK, "ret %08x\n", r );
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("a1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"a1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* nonempty string, count less than its length */
@@ -2005,7 +2005,7 @@ if (0)
ok(r == S_OK, "ret %08x\n", r );
r = IXMLDOMText_get_text(nodetext, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("wine1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"wine1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMText_Release( nodetext );
@@ -2094,26 +2094,26 @@ if (0)
/* test nodeName */
r = IXMLDOMProcessingInstruction_get_nodeName(nodePI, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("xml") ), "incorrect nodeName string\n");
+ ok(!lstrcmpW(str, L"xml"), "incorrect nodeName string\n");
SysFreeString(str);
/* test baseName */
str = NULL;
r = IXMLDOMProcessingInstruction_get_baseName(nodePI, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("xml") ), "incorrect nodeName string\n");
+ ok(!lstrcmpW(str, L"xml"), "incorrect nodeName string\n");
SysFreeString(str);
/* test Target */
r = IXMLDOMProcessingInstruction_get_target(nodePI, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("xml") ), "incorrect target string\n");
+ ok(!lstrcmpW(str, L"xml"), "incorrect target string\n");
SysFreeString(str);
/* test get_data */
r = IXMLDOMProcessingInstruction_get_data(nodePI, &str);
ok(r == S_OK, "ret %08x\n", r );
- ok( !lstrcmpW( str, _bstr_("version=\"1.0\"") ), "incorrect data string\n");
+ ok(!lstrcmpW(str, L"version=\"1.0\""), "incorrect data string\n");
SysFreeString(str);
/* test put_data */
@@ -2129,7 +2129,7 @@ if (0)
/* test get nodeName */
r = IXMLDOMProcessingInstruction_get_nodeName(nodePI, &str);
- ok( !lstrcmpW( str, _bstr_("xml") ), "incorrect nodeName string\n");
+ ok(!lstrcmpW(str, L"xml"), "incorrect nodeName string\n");
ok(r == S_OK, "ret %08x\n", r );
SysFreeString(str);
@@ -3609,7 +3609,7 @@ static void test_get_childNodes(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("bs")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"bs"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(node);
@@ -3617,7 +3617,7 @@ static void test_get_childNodes(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("bs")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"bs"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(node);
@@ -3629,7 +3629,7 @@ static void test_get_childNodes(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("bs")), "got node name %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"bs"), "got node name %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(node);
VariantClear(&v);
@@ -3638,7 +3638,7 @@ static void test_get_childNodes(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("pr")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"pr"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(node);
@@ -3669,7 +3669,7 @@ static void test_get_childNodes(void)
str = NULL;
hr = IXMLDOMNode_get_nodeName(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("xml")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"xml"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
/* it returns empty but valid node list */
@@ -5021,7 +5021,7 @@ if (0)
hr = IXMLDOMNode_get_nodeName(rootNode, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("root")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"root"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(rootNode);
@@ -5168,7 +5168,7 @@ static void test_cloneNode(void )
hr = IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &v);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(V_BSTR(&v), _bstr_("XSLPattern")), "got prop value %s\n", wine_dbgstr_w(V_BSTR(&v)));
+ ok(!lstrcmpW(V_BSTR(&v), L"XSLPattern"), "got prop value %s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
V_BSTR(&v) = _bstr_("XPath");
@@ -5196,7 +5196,7 @@ static void test_cloneNode(void )
/* cloned document inherits properties */
hr = IXMLDOMDocument2_getProperty(doc_clone, _bstr_("SelectionLanguage"), &v);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(V_BSTR(&v), _bstr_("XPath")), "got prop value %s\n", wine_dbgstr_w(V_BSTR(&v)));
+ ok(!lstrcmpW(V_BSTR(&v), L"XPath"), "got prop value %s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
IXMLDOMDocument2_Release(doc_clone);
@@ -5436,19 +5436,19 @@ static void test_xmlTypes(void)
/* get data Tests */
hr = IXMLDOMComment_get_data(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect get_data string\n");
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect get_data string\n");
SysFreeString(str);
/* Confirm XML text is good */
hr = IXMLDOMComment_get_xml(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("<!--This &is a ; test <>\\-->") ), "incorrect xml string\n");
+ ok(!lstrcmpW(str, L"<!--This &is a ; test <>\\-->"), "incorrect xml string\n");
SysFreeString(str);
/* Confirm we get the put_data Text back */
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect xml string\n");
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect xml string\n");
SysFreeString(str);
/* test length property */
@@ -5487,19 +5487,19 @@ static void test_xmlTypes(void)
/* test substringData - Start of string */
hr = IXMLDOMComment_substringData(pComment, 0, 4, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("This") ), "incorrect substringData string\n");
+ ok(!lstrcmpW(str, L"This"), "incorrect substringData string\n");
SysFreeString(str);
/* test substringData - Middle of string */
hr = IXMLDOMComment_substringData(pComment, 13, 4, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("test") ), "incorrect substringData string\n");
+ ok(!lstrcmpW(str, L"test"), "incorrect substringData string\n");
SysFreeString(str);
/* test substringData - End of string */
hr = IXMLDOMComment_substringData(pComment, 20, 4, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("\\") ), "incorrect substringData string\n");
+ ok(!lstrcmpW(str, L"\\"), "incorrect substringData string\n");
SysFreeString(str);
/* test appendData */
@@ -5514,7 +5514,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\Append") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\Append"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* test insertData */
@@ -5555,7 +5555,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("Begin This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"Begin This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete data */
@@ -5589,7 +5589,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_(" This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L" This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete from end */
@@ -5602,7 +5602,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_(" This &is a Middle; test <>\\Append ") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L" This &is a Middle; test <>\\Append "), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete from inside */
@@ -5615,7 +5615,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_(" ") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L" "), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete whole data ... */
@@ -5639,14 +5639,14 @@ static void test_xmlTypes(void)
ok(hr == E_INVALIDARG, "ret %08x\n", hr );
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMComment_replaceData(pComment, 0, 0, NULL);
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* NULL pointer means delete */
@@ -5654,7 +5654,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("tr1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"tr1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* empty string means delete */
@@ -5662,7 +5662,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("r1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"r1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* zero count means insert */
@@ -5670,7 +5670,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("ar1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"ar1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMComment_replaceData(pComment, 0, 2, NULL);
@@ -5680,7 +5680,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("m1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"m1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* nonempty string, count greater than its length */
@@ -5688,7 +5688,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("a1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"a1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* nonempty string, count less than its length */
@@ -5696,7 +5696,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMComment_get_text(pComment, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("wine1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"wine1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMComment_Release(pComment);
@@ -5874,13 +5874,13 @@ static void test_xmlTypes(void)
/* Confirm XML text is good */
hr = IXMLDOMCDATASection_get_xml(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("<![CDATA[This &is a ; test <>\\]]>") ), "incorrect xml string\n");
+ ok(!lstrcmpW(str, L"<![CDATA[This &is a ; test <>\\]]>"), "incorrect xml string\n");
SysFreeString(str);
/* Confirm we get the put_data Text back */
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect text string\n");
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect text string\n");
SysFreeString(str);
/* test length property */
@@ -5891,7 +5891,7 @@ static void test_xmlTypes(void)
/* test get data */
hr = IXMLDOMCDATASection_get_data(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\") ), "incorrect text string\n");
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\"), "incorrect text string\n");
SysFreeString(str);
/* test substringData */
@@ -5925,19 +5925,19 @@ static void test_xmlTypes(void)
/* test substringData - Start of string */
hr = IXMLDOMCDATASection_substringData(pCDataSec, 0, 4, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("This") ), "incorrect substringData string\n");
+ ok(!lstrcmpW(str, L"This"), "incorrect substringData string\n");
SysFreeString(str);
/* test substringData - Middle of string */
hr = IXMLDOMCDATASection_substringData(pCDataSec, 13, 4, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("test") ), "incorrect substringData string\n");
+ ok(!lstrcmpW(str, L"test"), "incorrect substringData string\n");
SysFreeString(str);
/* test substringData - End of string */
hr = IXMLDOMCDATASection_substringData(pCDataSec, 20, 4, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("\\") ), "incorrect substringData string\n");
+ ok(!lstrcmpW(str, L"\\"), "incorrect substringData string\n");
SysFreeString(str);
/* test appendData */
@@ -5952,7 +5952,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("This &is a ; test <>\\Append") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"This &is a ; test <>\\Append"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* test insertData */
@@ -5993,7 +5993,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("Begin This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"Begin This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete data */
@@ -6027,7 +6027,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_(" This &is a Middle; test <>\\Append End") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L" This &is a Middle; test <>\\Append End"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete from end */
@@ -6040,7 +6040,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_(" This &is a Middle; test <>\\Append ") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L" This &is a Middle; test <>\\Append "), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete from inside */
@@ -6053,7 +6053,7 @@ static void test_xmlTypes(void)
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_(" ") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L" "), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* delete whole data ... */
@@ -6078,14 +6078,14 @@ static void test_xmlTypes(void)
ok(hr == E_INVALIDARG, "ret %08x\n", hr );
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMCDATASection_replaceData(pCDataSec, 0, 0, NULL);
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("str1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"str1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* NULL pointer means delete */
@@ -6093,7 +6093,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("tr1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"tr1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* empty string means delete */
@@ -6101,7 +6101,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("r1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"r1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* zero count means insert */
@@ -6109,7 +6109,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("ar1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"ar1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMCDATASection_replaceData(pCDataSec, 0, 2, NULL);
@@ -6119,7 +6119,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("m1") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"m1"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* nonempty string, count greater than its length */
@@ -6127,7 +6127,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("a1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"a1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
/* nonempty string, count less than its length */
@@ -6135,7 +6135,7 @@ static void test_xmlTypes(void)
ok(hr == S_OK, "ret %08x\n", hr );
hr = IXMLDOMCDATASection_get_text(pCDataSec, &str);
ok(hr == S_OK, "ret %08x\n", hr );
- ok( !lstrcmpW( str, _bstr_("wine1.2") ), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str) );
+ ok(!lstrcmpW(str, L"wine1.2"), "incorrect get_text string, got '%s'\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMCDATASection_Release(pCDataSec);
@@ -6603,7 +6603,7 @@ static void test_namespaces_change(void)
hr = IXMLDOMElement_get_xml(elem, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("<ns:elem xmlns:ns=\"ns/uri\"/>")), "got element %s for %s\n",
+ ok(!lstrcmpW(str, L"<ns:elem xmlns:ns=\"ns/uri\"/>"), "got element %s for %s\n",
wine_dbgstr_w(str), class_ptr->name);
SysFreeString(str);
@@ -6663,12 +6663,12 @@ static void test_namespaces_basic(void)
hr = IXMLDOMNode_get_prefix(node2, &str);
EXPECT_HR(hr, S_OK);
- ok( !lstrcmpW( str, _bstr_("Model")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"Model"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMNode_get_nodeName(node2, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW( str, _bstr_("Model:Package")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"Model:Package"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
/* Test get_namespaceURI */
@@ -6678,7 +6678,7 @@ static void test_namespaces_basic(void)
hr = IXMLDOMNode_get_namespaceURI(node2, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW( str, _bstr_("http://omg.org/mof.Model/1.3")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"http://omg.org/mof.Model/1.3"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMNode_QueryInterface(node2, &IID_IXMLDOMElement, (void**)&elem);
@@ -6689,12 +6689,12 @@ static void test_namespaces_basic(void)
hr = IXMLDOMAttribute_get_nodeName(attr, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW( str, _bstr_("Model:name2")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"Model:name2"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMAttribute_get_prefix(attr, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW( str, _bstr_("Model")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"Model"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMAttribute_Release(attr);
@@ -6855,7 +6855,7 @@ static void test_nodeTypedValue(void)
hr = IXMLDOMProcessingInstruction_get_nodeTypedValue(pi, &value);
ok(hr == S_OK, "ret %08x\n", hr );
ok(V_VT(&value) == VT_BSTR, "got %d\n", V_VT(&value));
- ok(!lstrcmpW(V_BSTR(&value), _bstr_("value")), "got wrong value\n");
+ ok(!lstrcmpW(V_BSTR(&value), L"value"), "got wrong value\n");
IXMLDOMProcessingInstruction_Release(pi);
VariantClear(&value);
}
@@ -6868,7 +6868,7 @@ static void test_nodeTypedValue(void)
hr = IXMLDOMCDATASection_get_nodeTypedValue(cdata, &value);
ok(hr == S_OK, "ret %08x\n", hr );
ok(V_VT(&value) == VT_BSTR, "got %d\n", V_VT(&value));
- ok(!lstrcmpW(V_BSTR(&value), _bstr_("[1]*2=3; &gee that's not right!")), "got wrong value\n");
+ ok(!lstrcmpW(V_BSTR(&value), L"[1]*2=3; &gee that's not right!"), "got wrong value\n");
IXMLDOMCDATASection_Release(cdata);
VariantClear(&value);
}
@@ -6881,7 +6881,7 @@ static void test_nodeTypedValue(void)
hr = IXMLDOMComment_get_nodeTypedValue(comment, &value);
ok(hr == S_OK, "ret %08x\n", hr );
ok(V_VT(&value) == VT_BSTR, "got %d\n", V_VT(&value));
- ok(!lstrcmpW(V_BSTR(&value), _bstr_("comment")), "got wrong value\n");
+ ok(!lstrcmpW(V_BSTR(&value), L"comment"), "got wrong value\n");
IXMLDOMComment_Release(comment);
VariantClear(&value);
}
@@ -7804,11 +7804,11 @@ static inline void _check_default_props(int line, IXMLDOMDocument2* doc)
VariantInit(&var);
helper_ole_check(IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var));
- ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), _bstr_("XSLPattern")) == 0, "expected XSLPattern\n");
+ ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), L"XSLPattern") == 0, "expected XSLPattern\n");
VariantClear(&var);
helper_ole_check(IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionNamespaces"), &var));
- ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), _bstr_("")) == 0, "expected empty string\n");
+ ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), L"") == 0, "expected empty string\n");
VariantClear(&var);
helper_ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc, &b));
@@ -7827,11 +7827,11 @@ static inline void _check_set_props(int line, IXMLDOMDocument2* doc)
VariantInit(&var);
helper_ole_check(IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionLanguage"), &var));
- ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), _bstr_("XPath")) == 0, "expected XPath\n");
+ ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), L"XPath") == 0, "expected XPath\n");
VariantClear(&var);
helper_ole_check(IXMLDOMDocument2_getProperty(doc, _bstr_("SelectionNamespaces"), &var));
- ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), _bstr_("xmlns:wi=\'www.winehq.org\'")) == 0, "got %s\n", wine_dbgstr_w(V_BSTR(&var)));
+ ok_(__FILE__, line)(lstrcmpW(V_BSTR(&var), L"xmlns:wi=\'www.winehq.org\'") == 0, "got %s\n", wine_dbgstr_w(V_BSTR(&var)));
VariantClear(&var);
helper_ole_check(IXMLDOMDocument2_get_preserveWhiteSpace(doc, &b));
@@ -8104,7 +8104,7 @@ static void test_setAttributeNode(void)
str = NULL;
hr = IXMLDOMAttribute_get_xml(attr, &str);
ok( hr == S_OK, "got 0x%08x\n", hr);
- ok( lstrcmpW(str, _bstr_("attr=\"attrvalue1\"")) == 0,
+ ok(lstrcmpW(str, L"attr=\"attrvalue1\"") == 0,
"got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
@@ -8120,7 +8120,7 @@ static void test_setAttributeNode(void)
hr = IXMLDOMElement_get_xml(elem, &str);
ok( hr == S_OK, "got 0x%08x\n", hr);
- ok( lstrcmpW(str, _bstr_("<test attr=\"attrvalue1\"/>")) == 0,
+ ok(lstrcmpW(str, L"<test attr=\"attrvalue1\"/>") == 0,
"got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
@@ -8131,7 +8131,7 @@ static void test_setAttributeNode(void)
hr = IXMLDOMElement_get_xml(elem, &str);
ok( hr == S_OK, "got 0x%08x\n", hr);
- todo_wine ok( lstrcmpW(str, _bstr_("<test attr=\"attrvalue2\"/>")) == 0,
+ todo_wine ok(lstrcmpW(str, L"<test attr=\"attrvalue2\"/>") == 0,
"got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
@@ -8187,7 +8187,7 @@ todo_wine {
prefix = NULL;
hr = IXMLDOMNode_get_prefix(node, &prefix);
ok( hr == S_OK, "got 0x%08x\n", hr);
- ok(lstrcmpW(prefix, _bstr_("ns1")) == 0, "wrong prefix\n");
+ ok(lstrcmpW(prefix, L"ns1") == 0, "wrong prefix\n");
SysFreeString(prefix);
IXMLDOMNode_Release(node);
@@ -8201,7 +8201,7 @@ todo_wine {
/* check dump */
hr = IXMLDOMNode_get_xml(node, &str);
ok( hr == S_OK, "got 0x%08x\n", hr);
- ok( lstrcmpW(str, _bstr_("<test xmlns=\"http://winehq.org/default\"/>")) == 0,
+ ok(lstrcmpW(str, L"<test xmlns=\"http://winehq.org/default\"/>") == 0,
"got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
@@ -8216,7 +8216,7 @@ todo_wine {
str = NULL;
hr = IXMLDOMElement_get_namespaceURI(elem, &str);
ok( hr == S_OK, "got 0x%08x\n", hr);
- ok( lstrcmpW(str, _bstr_("http://winehq.org/default")) == 0, "expected default namespace\n");
+ ok(lstrcmpW(str, L"http://winehq.org/default") == 0, "expected default namespace\n");
SysFreeString(str);
IXMLDOMElement_Release(elem);
@@ -8313,7 +8313,7 @@ static void test_get_prefix(void)
str = (void*)0xdeadbeef;
hr = IXMLDOMElement_get_prefix(element, &str);
ok( hr == S_OK, "got 0x%08x\n", hr);
- ok( lstrcmpW(str, _bstr_("a")) == 0, "expected prefix \"a\"\n");
+ ok(lstrcmpW(str, L"a") == 0, "expected prefix \"a\"\n");
SysFreeString(str);
str = (void*)0xdeadbeef;
@@ -8537,7 +8537,7 @@ static void test_put_nodeTypedValue(void)
hr = IXMLDOMElement_get_nodeTypedValue(elem, &type);
EXPECT_HR(hr, S_OK);
ok(V_VT(&type) == VT_BSTR, "got %d, expected VT_BSTR\n", V_VT(&type));
- ok(memcmp(V_BSTR(&type), _bstr_("1"), 2*sizeof(WCHAR)) == 0,
+ ok(memcmp(V_BSTR(&type), L"1", 2*sizeof(WCHAR)) == 0,
"got %s, expected \"1\"\n", wine_dbgstr_w(V_BSTR(&type)));
VariantClear(&type);
@@ -8585,7 +8585,7 @@ static void test_put_nodeTypedValue(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_text(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("ABCD")), "%s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"ABCD"), "%s\n", wine_dbgstr_w(str));
IXMLDOMNode_Release(node);
SysFreeString(str);
@@ -8624,7 +8624,7 @@ static void test_put_nodeTypedValue(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_text(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("ZEdWemRBPQ==")), "%s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"ZEdWemRBPQ=="), "%s\n", wine_dbgstr_w(str));
IXMLDOMNode_Release(node);
SafeArrayDestroyData(array);
SysFreeString(str);
@@ -8673,7 +8673,7 @@ static void test_put_nodeTypedValue(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_text(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("000102030405060708090a0b0c0d0e0f")), "%s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"000102030405060708090a0b0c0d0e0f"), "%s\n", wine_dbgstr_w(str));
IXMLDOMNode_Release(node);
SafeArrayDestroyData(array);
SysFreeString(str);
@@ -9317,13 +9317,13 @@ static void test_insertBefore(void)
p = NULL;
hr = IXMLDOMElement_get_xml(elem1, &p);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(p, _bstr_("<elem1 xmlns=\"http://winehq.org/default\"/>")), "got %s\n", wine_dbgstr_w(p));
+ ok(!lstrcmpW(p, L"<elem1 xmlns=\"http://winehq.org/default\"/>"), "got %s\n", wine_dbgstr_w(p));
SysFreeString(p);
p = NULL;
hr = IXMLDOMElement_get_xml(elem2, &p);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(p, _bstr_("<elem2 xmlns=\"http://winehq.org/default\"/>")), "got %s\n", wine_dbgstr_w(p));
+ ok(!lstrcmpW(p, L"<elem2 xmlns=\"http://winehq.org/default\"/>"), "got %s\n", wine_dbgstr_w(p));
SysFreeString(p);
V_VT(&v) = VT_NULL;
@@ -9335,14 +9335,14 @@ static void test_insertBefore(void)
p = NULL;
hr = IXMLDOMElement_get_xml(elem1, &p);
ok(hr == S_OK, "got 0x%08x\n", hr);
- todo_wine ok(!lstrcmpW(p, _bstr_("<elem1 xmlns=\"http://winehq.org/default\"><elem2/></elem1>")),
+ todo_wine ok(!lstrcmpW(p, L"<elem1 xmlns=\"http://winehq.org/default\"><elem2/></elem1>"),
"got %s\n", wine_dbgstr_w(p));
SysFreeString(p);
p = NULL;
hr = IXMLDOMElement_get_xml(elem2, &p);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(p, _bstr_("<elem2 xmlns=\"http://winehq.org/default\"/>")), "got %s\n", wine_dbgstr_w(p));
+ ok(!lstrcmpW(p, L"<elem2 xmlns=\"http://winehq.org/default\"/>"), "got %s\n", wine_dbgstr_w(p));
SysFreeString(p);
IXMLDOMElement_Release(elem1);
@@ -9372,7 +9372,7 @@ static void test_insertBefore(void)
p = NULL;
hr = IXMLDOMElement_get_xml(elem2, &p);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(p, _bstr_("<elem2/>")), "got %s\n", wine_dbgstr_w(p));
+ ok(!lstrcmpW(p, L"<elem2/>"), "got %s\n", wine_dbgstr_w(p));
SysFreeString(p);
hr = IXMLDOMElement_removeChild(elem1, (IXMLDOMNode*)elem2, NULL);
@@ -9381,7 +9381,7 @@ static void test_insertBefore(void)
p = NULL;
hr = IXMLDOMElement_get_xml(elem2, &p);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(p, _bstr_("<elem2/>")), "got %s\n", wine_dbgstr_w(p));
+ ok(!lstrcmpW(p, L"<elem2/>"), "got %s\n", wine_dbgstr_w(p));
SysFreeString(p);
IXMLDOMElement_Release(elem1);
@@ -9497,7 +9497,7 @@ static void test_get_tagName(void)
str = NULL;
hr = IXMLDOMElement_get_tagName(elem, &str);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(str, _bstr_("element")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"element"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMDocument_createElement(doc, _bstr_("s:element"), &elem2);
@@ -9506,7 +9506,7 @@ static void test_get_tagName(void)
str = NULL;
hr = IXMLDOMElement_get_tagName(elem2, &str);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(str, _bstr_("s:element")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"s:element"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMElement_Release(elem);
@@ -9600,7 +9600,7 @@ static void test_get_nodeTypeString(void)
hr = IXMLDOMDocument_get_nodeTypeString(doc, &str);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(str, _bstr_("document")), "got string %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"document"), "got string %s\n", wine_dbgstr_w(str));
SysFreeString(str);
while (entry->type)
@@ -9702,7 +9702,7 @@ static void test_get_attributes(void)
hr = IXMLDOMNode_get_nodeName(node2, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("version")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"version"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
length = -1;
@@ -9717,12 +9717,12 @@ static void test_get_attributes(void)
hr = IXMLDOMNode_get_xml(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("<?xml version=\"1.0\"?>")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"<?xml version=\"1.0\"?>"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMNode_get_text(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("version=\"1.0\"")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"version=\"1.0\""), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMNamedNodeMap_removeNamedItem(map, _bstr_("version"), NULL);
@@ -9735,12 +9735,12 @@ static void test_get_attributes(void)
hr = IXMLDOMNode_get_xml(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("<?xml version=\"1.0\"?>")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"<?xml version=\"1.0\"?>"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMNode_get_text(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L""), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNamedNodeMap_Release(map);
@@ -9776,12 +9776,12 @@ static void test_get_attributes(void)
hr = IXMLDOMNode_get_xml(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("<?xml version=\"1.0\"?>")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"<?xml version=\"1.0\"?>"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMNode_get_text(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("encoding=\"UTF-8\"")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"encoding=\"UTF-8\""), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNamedNodeMap_Release(map);
@@ -10095,7 +10095,7 @@ static void test_selection(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &name);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(name, _bstr_("a")), "got node name %s\n", wine_dbgstr_w(name));
+ ok(!lstrcmpW(name, L"a"), "got node name %s\n", wine_dbgstr_w(name));
SysFreeString(name);
IXMLDOMNode_Release(node);
VariantClear(&v);
@@ -10105,7 +10105,7 @@ static void test_selection(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &name);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(name, _bstr_("c")), "got node name %s\n", wine_dbgstr_w(name));
+ ok(!lstrcmpW(name, L"c"), "got node name %s\n", wine_dbgstr_w(name));
IXMLDOMNode_Release(node);
SysFreeString(name);
@@ -10117,7 +10117,7 @@ static void test_selection(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &name);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(name, _bstr_("b")), "got node name %s\n", wine_dbgstr_w(name));
+ ok(!lstrcmpW(name, L"b"), "got node name %s\n", wine_dbgstr_w(name));
SysFreeString(name);
IXMLDOMNode_Release(node);
VariantClear(&v);
@@ -10127,7 +10127,7 @@ static void test_selection(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &name);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(name, _bstr_("d")), "got node name %s\n", wine_dbgstr_w(name));
+ ok(!lstrcmpW(name, L"d"), "got node name %s\n", wine_dbgstr_w(name));
IXMLDOMNode_Release(node);
SysFreeString(name);
@@ -10564,7 +10564,7 @@ todo_wine {
hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 0, buffW, &len);
EXPECT_HR(hr, S_OK);
ok(len == 3, "got %d\n", len);
- ok(!lstrcmpW(buffW, _bstr_("xml")), "got prefix %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"xml"), "got prefix %s\n", wine_dbgstr_w(buffW));
/* getURI */
hr = IMXNamespaceManager_getURI(nsmgr, NULL, NULL, NULL, NULL);
@@ -10652,14 +10652,14 @@ todo_wine {
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
len = 100;
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("http://www.w3.org/XML/1998/namespace"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("xml")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"xml"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
/* with null buffer it's possible to get required length */
@@ -10730,14 +10730,14 @@ todo_wine {
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
len = 100;
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns2 uri"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns2")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns2"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
len = 100;
@@ -10772,7 +10772,7 @@ todo_wine {
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
hr = IMXNamespaceManager_pushContext(nsmgr);
@@ -10782,7 +10782,7 @@ todo_wine {
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns2"), _bstr_("ns2 uri"));
@@ -10792,7 +10792,7 @@ todo_wine {
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns2 uri"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns2")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns2"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
hr = IMXNamespaceManager_pushContext(nsmgr);
@@ -10804,14 +10804,14 @@ todo_wine {
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns2 uri"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns2")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns2"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
len = 100;
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
hr = IMXNamespaceManager_popContext(nsmgr);
@@ -10831,7 +10831,7 @@ todo_wine {
buffW[0] = 0x1;
hr = IMXNamespaceManager_getPrefix(nsmgr, _bstr_("ns1 uri"), 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns1")), "got %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns1"), "got %s\n", wine_dbgstr_w(buffW));
ok(len == 3, "got %d\n", len);
IMXNamespaceManager_Release(nsmgr);
@@ -10855,7 +10855,7 @@ static void test_mxnamespacemanager_override(void)
buffW[0] = 0;
hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("xml")), "got prefix %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"xml"), "got prefix %s\n", wine_dbgstr_w(buffW));
len = ARRAY_SIZE(buffW);
buffW[0] = 0;
@@ -10880,7 +10880,7 @@ static void test_mxnamespacemanager_override(void)
buffW[0] = 0;
hr = IMXNamespaceManager_getURI(nsmgr, _bstr_(""), NULL, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns0 uri")), "got uri %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns0 uri"), "got uri %s\n", wine_dbgstr_w(buffW));
hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns0"), _bstr_("ns0 uri"));
EXPECT_HR(hr, S_OK);
@@ -10889,19 +10889,19 @@ static void test_mxnamespacemanager_override(void)
buffW[0] = 0;
hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 0, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("xml")), "got prefix %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"xml"), "got prefix %s\n", wine_dbgstr_w(buffW));
len = ARRAY_SIZE(buffW);
buffW[0] = 0;
hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 1, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns0")), "got prefix %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns0"), "got prefix %s\n", wine_dbgstr_w(buffW));
len = ARRAY_SIZE(buffW);
buffW[0] = 0;
hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 2, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("")), "got prefix %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L""), "got prefix %s\n", wine_dbgstr_w(buffW));
/* new prefix placed at index 1 always */
hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_("ns1"), _bstr_("ns1 uri"));
@@ -10911,7 +10911,7 @@ static void test_mxnamespacemanager_override(void)
buffW[0] = 0;
hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 1, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns1")), "got prefix %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns1"), "got prefix %s\n", wine_dbgstr_w(buffW));
hr = IMXNamespaceManager_declarePrefix(nsmgr, _bstr_(""), NULL);
todo_wine EXPECT_HR(hr, E_FAIL);
@@ -10932,13 +10932,13 @@ static void test_mxnamespacemanager_override(void)
buffW[0] = 0;
hr = IMXNamespaceManager_getURI(nsmgr, _bstr_(""), NULL, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("ns0 uri override")), "got uri %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L"ns0 uri override"), "got uri %s\n", wine_dbgstr_w(buffW));
len = ARRAY_SIZE(buffW);
buffW[0] = 0;
hr = IMXNamespaceManager_getDeclaredPrefix(nsmgr, 3, buffW, &len);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(buffW, _bstr_("")), "got prefix %s\n", wine_dbgstr_w(buffW));
+ ok(!lstrcmpW(buffW, L""), "got prefix %s\n", wine_dbgstr_w(buffW));
IMXNamespaceManager_Release(nsmgr);
@@ -11471,19 +11471,19 @@ static void test_getAttribute(void)
hr = IXMLDOMElement_getAttribute( elem, _bstr_("xmlns:foo"), &var );
EXPECT_HR(hr, S_OK);
ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var));
- ok( !lstrcmpW(V_BSTR(&var), _bstr_("urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29")), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var)));
+ ok(!lstrcmpW(V_BSTR(&var), L"urn:uuid:86B2F87F-ACB6-45cd-8B77-9BDB92A01A29"), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var)));
VariantClear(&var);
hr = IXMLDOMElement_getAttribute( elem, _bstr_("a"), &var );
EXPECT_HR(hr, S_OK);
ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var));
- ok( !lstrcmpW(V_BSTR(&var), _bstr_("attr a")), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var)));
+ ok(!lstrcmpW(V_BSTR(&var), L"attr a"), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var)));
VariantClear(&var);
hr = IXMLDOMElement_getAttribute( elem, _bstr_("foo:b"), &var );
EXPECT_HR(hr, S_OK);
ok( V_VT(&var) == VT_BSTR, "vt = %x\n", V_VT(&var));
- ok( !lstrcmpW(V_BSTR(&var), _bstr_("attr b")), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var)));
+ ok(!lstrcmpW(V_BSTR(&var), L"attr b"), "wrong attr value: %s\n", wine_dbgstr_w(V_BSTR(&var)));
VariantClear(&var);
hr = IXMLDOMElement_getAttribute( elem, _bstr_("b"), &var );
@@ -11771,7 +11771,7 @@ static void test_xmlns_attribute(void)
str = NULL;
hr = IXMLDOMElement_get_xml(elem, &str);
ok( hr == S_OK, "got 0x%08x\n", hr);
- todo_wine ok( lstrcmpW(str, _bstr_("<Testing xmlns:dt=\"urn:schemas-microsoft-com:datatypes\" dt:dt=\"bin.base64\"/>")) == 0,
+ todo_wine ok(lstrcmpW(str, L"<Testing xmlns:dt=\"urn:schemas-microsoft-com:datatypes\" dt:dt=\"bin.base64\"/>") == 0,
"got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
@@ -11886,12 +11886,12 @@ static void test_get_namespaces(void)
hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 0, &s);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(s, _bstr_("http://blah.org")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"http://blah.org"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 1, &s);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(s, _bstr_("http://blahblah.org")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
s = (void*)0xdeadbeef;
@@ -11922,14 +11922,14 @@ static void test_get_namespaces(void)
hr = IEnumVARIANT_Next(enumv, 1, &v, NULL);
EXPECT_HR(hr, S_OK);
ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
- ok(!lstrcmpW(V_BSTR(&v), _bstr_("http://blah.org")), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
+ ok(!lstrcmpW(V_BSTR(&v), L"http://blah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
V_VT(&v) = VT_EMPTY;
hr = IEnumVARIANT_Next(enumv, 1, &v, NULL);
EXPECT_HR(hr, S_OK);
ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
- ok(!lstrcmpW(V_BSTR(&v), _bstr_("http://blahblah.org")), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
+ ok(!lstrcmpW(V_BSTR(&v), L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
V_VT(&v) = VT_NULL;
@@ -12005,12 +12005,12 @@ static void test_get_namespaces(void)
hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 0, &s);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(s, _bstr_("http://blah.org")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"http://blah.org"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
hr = IXMLDOMSchemaCollection_get_namespaceURI(collection, 1, &s);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(s, _bstr_("http://blahblah.org")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
s = (void*)0xdeadbeef;
@@ -12028,14 +12028,14 @@ static void test_get_namespaces(void)
hr = IEnumVARIANT_Next(enumv, 1, &v, NULL);
EXPECT_HR(hr, S_OK);
ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
- ok(!lstrcmpW(V_BSTR(&v), _bstr_("http://blah.org")), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
+ ok(!lstrcmpW(V_BSTR(&v), L"http://blah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
V_VT(&v) = VT_EMPTY;
hr = IEnumVARIANT_Next(enumv, 1, &v, NULL);
EXPECT_HR(hr, S_OK);
ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
- ok(!lstrcmpW(V_BSTR(&v), _bstr_("http://blahblah.org")), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
+ ok(!lstrcmpW(V_BSTR(&v), L"http://blahblah.org"), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
V_VT(&v) = VT_NULL;
@@ -12202,7 +12202,7 @@ static void test_newline_normalization(void)
hr = IXMLDOMText_get_data(text, &s);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(s, _bstr_("\n")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"\n"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
hr = IXMLDOMText_get_length(text, &length);
@@ -12211,7 +12211,7 @@ static void test_newline_normalization(void)
hr = IXMLDOMText_get_xml(text, &s);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(s, _bstr_("\r\n")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"\r\n"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
/* \r\r\n is normalized to \n\n and back to \r\n\r\n */
@@ -12221,7 +12221,7 @@ static void test_newline_normalization(void)
hr = IXMLDOMText_get_data(text, &s);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(s, _bstr_("\n\n")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"\n\n"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
hr = IXMLDOMText_get_length(text, &length);
@@ -12230,7 +12230,7 @@ static void test_newline_normalization(void)
hr = IXMLDOMText_get_xml(text, &s);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(s, _bstr_("\r\n\r\n")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"\r\n\r\n"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
/* the same normalizations are applied when loading a document as a whole */
@@ -12240,12 +12240,12 @@ static void test_newline_normalization(void)
hr = IXMLDOMDocument_get_text(doc, &s);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(s, _bstr_("foo\n\n\n\nbar")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"foo\n\n\n\nbar"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
hr = IXMLDOMDocument_get_xml(doc, &s);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(s, _bstr_("<?xml version=\"1.0\"?>\r\n<root>foo\r\n\r\n\r\n\r\nbar</root>\r\n")),
+ ok(!lstrcmpW(s, L"<?xml version=\"1.0\"?>\r\n<root>foo\r\n\r\n\r\n\r\nbar</root>\r\n"),
"got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
@@ -12257,7 +12257,7 @@ static void test_newline_normalization(void)
hr = IXMLDOMDocument_get_text(doc, &s);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(s, _bstr_("foo\n\n\n\nbar")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"foo\n\n\n\nbar"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
hr = IXMLDOMDocument_get_xml(doc, &s);
@@ -12277,7 +12277,7 @@ static void test_newline_normalization(void)
hr = IXMLDOMDocument_get_text(doc, &s);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(s, _bstr_("foo\n\n\n\nbar")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"foo\n\n\n\nbar"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
hr = IXMLDOMDocument_get_xml(doc, &s);
@@ -12286,12 +12286,12 @@ static void test_newline_normalization(void)
{
/* DOMDocument60 does the newline normalization but does not insert line breaks around the root node */
todo_wine
- ok(!lstrcmpW(s, _bstr_("<?xml version=\"1.0\"?><root>foo\r\n\r\n\r\n\r\nbar</root>")),
+ ok(!lstrcmpW(s, L"<?xml version=\"1.0\"?><root>foo\r\n\r\n\r\n\r\nbar</root>"),
"got %s\n", wine_dbgstr_w(s));
}
else
{
- ok(!lstrcmpW(s, _bstr_("<?xml version=\"1.0\"?>\r\n<root>foo\r\n\r\n\r\n\r\nbar</root>\r\n")),
+ ok(!lstrcmpW(s, L"<?xml version=\"1.0\"?>\r\n<root>foo\r\n\r\n\r\n\r\nbar</root>\r\n"),
"got %s\n", wine_dbgstr_w(s));
}
SysFreeString(s);
@@ -12448,7 +12448,7 @@ static void test_namedmap_newenum(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("attr1")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"attr1"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(node);
@@ -12456,7 +12456,7 @@ static void test_namedmap_newenum(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("attr1")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"attr1"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(node);
@@ -12468,7 +12468,7 @@ static void test_namedmap_newenum(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("attr1")), "got node name %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"attr1"), "got node name %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(node);
VariantClear(&v);
@@ -12477,7 +12477,7 @@ static void test_namedmap_newenum(void)
EXPECT_HR(hr, S_OK);
hr = IXMLDOMNode_get_nodeName(node, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("attr2")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"attr2"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(node);
@@ -12537,7 +12537,7 @@ static void test_xsltext(void)
hr = IXMLDOMDocument_transformNode(doc2, (IXMLDOMNode*)doc, &ret);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(ret, _bstr_("testdata")), "transform result %s\n", wine_dbgstr_w(ret));
+ ok(!lstrcmpW(ret, L"testdata"), "transform result %s\n", wine_dbgstr_w(ret));
SysFreeString(ret);
/* omit-xml-declaration */
@@ -12548,7 +12548,7 @@ static void test_xsltext(void)
hr = IXMLDOMDocument_transformNode(doc2, (IXMLDOMNode*)doc, &ret);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(ret, _bstr_("<node>item1</node><node>item2</node>")), "transform result %s\n", wine_dbgstr_w(ret));
+ ok(!lstrcmpW(ret, L"<node>item1</node><node>item2</node>"), "transform result %s\n", wine_dbgstr_w(ret));
SysFreeString(ret);
IXMLDOMDocument_Release(doc2);
@@ -12641,7 +12641,7 @@ static void test_create_attribute(void)
/* for some reason default namespace uri is not reported */
hr = IXMLDOMNode_get_namespaceURI(node, &str);
ok(hr == S_OK, "got 0x%08x\n", hr);
- ok(!lstrcmpW(str, _bstr_("")), "got uri %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L""), "got uri %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IXMLDOMNode_Release(node);
diff --git a/dlls/msxml3/tests/httpreq.c b/dlls/msxml3/tests/httpreq.c
index 33e6bd6581..8a2ed2c73a 100644
--- a/dlls/msxml3/tests/httpreq.c
+++ b/dlls/msxml3/tests/httpreq.c
@@ -1588,7 +1588,7 @@ static void test_XMLHTTP(void)
hr = IXMLHttpRequest_getAllResponseHeaders(xhr, &str);
EXPECT_HR(hr, S_OK);
/* status line is stripped already */
- ok(memcmp(str, _bstr_("HTTP"), 4*sizeof(WCHAR)), "got response headers %s\n", wine_dbgstr_w(str));
+ ok(memcmp(str, L"HTTP", 4*sizeof(WCHAR)), "got response headers %s\n", wine_dbgstr_w(str));
ok(*str, "got empty headers\n");
hr = IXMLHttpRequest_getAllResponseHeaders(xhr, &str1);
EXPECT_HR(hr, S_OK);
@@ -1616,7 +1616,7 @@ static void test_XMLHTTP(void)
hr = IXMLHttpRequest_get_statusText(xhr, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("OK")), "got status %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"OK"), "got status %s\n", wine_dbgstr_w(str));
SysFreeString(str);
/* another ::send() after completed request */
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
index 44b5e1bcb5..986f429cc1 100644
--- a/dlls/msxml3/tests/saxreader.c
+++ b/dlls/msxml3/tests/saxreader.c
@@ -2764,7 +2764,7 @@ static void test_saxreader_properties(void)
hr = ISAXXMLReader_getProperty(reader, _bstr_("xmldecl-version"), &v);
EXPECT_HR(hr, S_OK);
ok(V_VT(&v) == VT_BSTR, "got %d\n", V_VT(&v));
- ok(!lstrcmpW(V_BSTR(&v), _bstr_("1.0")), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
+ ok(!lstrcmpW(V_BSTR(&v), L"1.0"), "got %s\n", wine_dbgstr_w(V_BSTR(&v)));
VariantClear(&v);
ISAXXMLReader_Release(reader);
@@ -3163,7 +3163,7 @@ static void test_mxwriter_properties(void)
str = (void*)0xdeadbeef;
hr = IMXWriter_get_encoding(writer, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("UTF-16")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"UTF-16"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
/* invalid encoding name */
@@ -3178,7 +3178,7 @@ static void test_mxwriter_properties(void)
str = (void*)0xdeadbeef;
hr = IMXWriter_get_encoding(writer, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("utf-8")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"utf-8"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IMXWriter_put_encoding(writer, _bstr_("uTf-16"));
@@ -3186,7 +3186,7 @@ static void test_mxwriter_properties(void)
str = (void*)0xdeadbeef;
hr = IMXWriter_get_encoding(writer, &str);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(str, _bstr_("uTf-16")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"uTf-16"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
/* how it affects document creation */
@@ -3202,7 +3202,7 @@ static void test_mxwriter_properties(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"yes\"?>\r\n"),
+ ok(!lstrcmpW(L"<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"yes\"?>\r\n",
V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
ISAXContentHandler_Release(content);
@@ -3212,7 +3212,7 @@ static void test_mxwriter_properties(void)
/* default version is 'surprisingly' 1.0 */
hr = IMXWriter_get_version(writer, &str);
ok(hr == S_OK, "got %08x\n", hr);
- ok(!lstrcmpW(str, _bstr_("1.0")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"1.0"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
/* store version string as is */
@@ -3226,21 +3226,21 @@ static void test_mxwriter_properties(void)
ok(hr == S_OK, "got %08x\n", hr);
hr = IMXWriter_get_version(writer, &str);
ok(hr == S_OK, "got %08x\n", hr);
- ok(!lstrcmpW(str, _bstr_("")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L""), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IMXWriter_put_version(writer, _bstr_("a.b"));
ok(hr == S_OK, "got %08x\n", hr);
hr = IMXWriter_get_version(writer, &str);
ok(hr == S_OK, "got %08x\n", hr);
- ok(!lstrcmpW(str, _bstr_("a.b")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"a.b"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IMXWriter_put_version(writer, _bstr_("2.0"));
ok(hr == S_OK, "got %08x\n", hr);
hr = IMXWriter_get_version(writer, &str);
ok(hr == S_OK, "got %08x\n", hr);
- ok(!lstrcmpW(str, _bstr_("2.0")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW(str, L"2.0"), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
IMXWriter_Release(writer);
@@ -3471,7 +3471,7 @@ static void test_mxwriter_startenddocument(void)
hr = IMXWriter_get_output(writer, &dest);
ok(hr == S_OK, "got %08x\n", hr);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n"), V_BSTR(&dest)),
+ ok(!lstrcmpW(L"<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n", V_BSTR(&dest)),
"got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
@@ -3512,7 +3512,7 @@ static void test_mxwriter_startenddocument(void)
hr = IMXWriter_get_output(writer, &dest);
ok(hr == S_OK, "got %08x\n", hr);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_(""), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
ISAXContentHandler_Release(content);
@@ -3863,7 +3863,7 @@ static void test_mxwriter_startendelement(void)
hr = IMXWriter_get_output(writer, &dest);
ok(hr == S_OK, "got %08x\n", hr);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("b"), 1, NULL);
@@ -3873,7 +3873,7 @@ static void test_mxwriter_startendelement(void)
hr = IMXWriter_get_output(writer, &dest);
ok(hr == S_OK, "got %08x\n", hr);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<><b>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<><b>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
hr = ISAXContentHandler_endElement(content, NULL, 0, NULL, 0, _bstr_("a:b"), 3);
@@ -3893,7 +3893,7 @@ static void test_mxwriter_startendelement(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<><b></b>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<><b></b>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
hr = ISAXContentHandler_endDocument(content);
@@ -3907,7 +3907,7 @@ static void test_mxwriter_startendelement(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_(""), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
hr = ISAXContentHandler_startDocument(content);
@@ -3920,7 +3920,7 @@ static void test_mxwriter_startendelement(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<abc>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<abc>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
hr = ISAXContentHandler_endDocument(content);
@@ -3933,7 +3933,7 @@ static void test_mxwriter_startendelement(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<abc></abd>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<abc></abd>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
V_VT(&dest) = VT_EMPTY;
@@ -3947,7 +3947,7 @@ static void test_mxwriter_startendelement(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<a>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<a>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
ISAXContentHandler_Release(content);
@@ -4015,7 +4015,7 @@ static void test_mxwriter_characters(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("VbCharsTESTCHARDATA ."), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"VbCharsTESTCHARDATA .", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
hr = ISAXContentHandler_endDocument(content);
@@ -4052,7 +4052,7 @@ static void test_mxwriter_characters(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<a></a>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<a></a>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
ISAXContentHandler_Release(content);
@@ -4339,7 +4339,7 @@ static void test_mxwriter_stream(void)
hr = IMXWriter_get_output(writer, &dest);
ok(hr == S_OK, "get_output failed: %08x\n", hr);
ok(V_VT(&dest) == VT_BSTR, "Expected VT_BSTR, got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n"), V_BSTR(&dest)),
+ ok(!lstrcmpW(L"<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n", V_BSTR(&dest)),
"Got wrong content: %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
@@ -4428,7 +4428,7 @@ static void test_mxwriter_encoding(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "Expected VT_BSTR, got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n"), V_BSTR(&dest)),
+ ok(!lstrcmpW(L"<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n", V_BSTR(&dest)),
"got wrong content: %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
@@ -4468,7 +4468,7 @@ static void test_mxwriter_encoding(void)
/* so output is unaffected, encoding name is stored however */
hr = IMXWriter_get_encoding(writer, &s);
EXPECT_HR(hr, S_OK);
- ok(!lstrcmpW(s, _bstr_("UTF-16")), "got %s\n", wine_dbgstr_w(s));
+ ok(!lstrcmpW(s, L"UTF-16"), "got %s\n", wine_dbgstr_w(s));
SysFreeString(s);
IStream_Release(stream);
@@ -4729,7 +4729,7 @@ static void test_mxwriter_comment(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<!---->\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<!---->\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
hr = ISAXLexicalHandler_comment(lexical, commentW, ARRAY_SIZE(commentW) - 1);
@@ -4739,7 +4739,7 @@ static void test_mxwriter_comment(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<!---->\r\n<!--comment-->\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<!---->\r\n<!--comment-->\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
ISAXContentHandler_Release(content);
@@ -4784,7 +4784,7 @@ static void test_mxwriter_cdata(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<![CDATA["), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<![CDATA[", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
hr = IVBSAXLexicalHandler_startCDATA(vblexical);
@@ -4801,7 +4801,7 @@ static void test_mxwriter_cdata(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<![CDATA[<![CDATA[< > & \"]]>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<![CDATA[<![CDATA[< > & \"]]>", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
ISAXContentHandler_Release(content);
@@ -4840,7 +4840,7 @@ static void test_mxwriter_pi(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<?\?>\r\n<?target?>\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<?\?>\r\n<?target?>\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
hr = ISAXContentHandler_processingInstruction(content, targetW, 4, dataW, 4);
@@ -4850,7 +4850,7 @@ static void test_mxwriter_pi(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<?\?>\r\n<?target?>\r\n<?targ data?>\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<?\?>\r\n<?target?>\r\n<?targ data?>\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
V_VT(&dest) = VT_EMPTY;
@@ -4864,7 +4864,7 @@ static void test_mxwriter_pi(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<?target?>\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<?target?>\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
@@ -4903,7 +4903,7 @@ static void test_mxwriter_ignorablespaces(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("datad"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"datad", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
ISAXContentHandler_Release(content);
@@ -4973,7 +4973,7 @@ static void test_mxwriter_dtd(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<!DOCTYPE name [\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<!DOCTYPE name [\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
/* system id is required if public is present */
@@ -5028,7 +5028,7 @@ static void test_mxwriter_dtd(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<!ELEMENT name content>\r\n"),
+ ok(!lstrcmpW(L"<!ELEMENT name content>\r\n",
V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
@@ -5043,7 +5043,7 @@ static void test_mxwriter_dtd(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<!ELEMENT name >\r\n"),
+ ok(!lstrcmpW(L"<!ELEMENT name >\r\n",
V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
@@ -5061,7 +5061,7 @@ static void test_mxwriter_dtd(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<!ATTLIST element attribute CDATA #REQUIRED \"value\">\r\n"),
+ ok(!lstrcmpW(L"<!ATTLIST element attribute CDATA #REQUIRED \"value\">\r\n",
V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
@@ -5106,7 +5106,7 @@ static void test_mxwriter_dtd(void)
hr = IMXWriter_get_output(writer, &dest);
EXPECT_HR(hr, S_OK);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<!ENTITY name \"value\">\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
+ ok(!lstrcmpW(L"<!ENTITY name \"value\">\r\n", V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
/* external entities */
@@ -5517,7 +5517,7 @@ static void test_mxattr_clear(void)
hr = ISAXAttributes_getQName(saxattr, 0, &ptr, &len);
EXPECT_HR(hr, S_OK);
ok(len == 5, "got %d\n", len);
- ok(!lstrcmpW(ptr, _bstr_("qname")), "got %s\n", wine_dbgstr_w(ptr));
+ ok(!lstrcmpW(ptr, L"qname"), "got %s\n", wine_dbgstr_w(ptr));
hr = IMXAttributes_clear(mxattr);
EXPECT_HR(hr, S_OK);
@@ -5741,7 +5741,7 @@ static void test_mxwriter_indent(void)
hr = IMXWriter_get_output(writer, &dest);
ok(hr == S_OK, "got %08x\n", hr);
ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest));
- ok(!lstrcmpW(_bstr_("<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n<a><b>\r\n\t\t<c/>\r\n\t</b>\r\n</a>"), V_BSTR(&dest)),
+ ok(!lstrcmpW(L"<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n<a><b>\r\n\t\t<c/>\r\n\t</b>\r\n</a>", V_BSTR(&dest)),
"got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
--
2.24.1
2
1
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/msxml3/tests/httpreq.c | 19 ++-----------------
1 file changed, 2 insertions(+), 17 deletions(-)
diff --git a/dlls/msxml3/tests/httpreq.c b/dlls/msxml3/tests/httpreq.c
index ae0a95a2f1..33e6bd6581 100644
--- a/dlls/msxml3/tests/httpreq.c
+++ b/dlls/msxml3/tests/httpreq.c
@@ -130,21 +130,6 @@ static void free_bstrs(void)
alloced_bstrs_count = 0;
}
-static BSTR a2bstr(const char *str)
-{
- BSTR ret;
- int len;
-
- if(!str)
- return NULL;
-
- len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
- ret = SysAllocStringLen(NULL, len);
- MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
-
- return ret;
-}
-
/* test IHTMLElementCollection */
static HRESULT WINAPI htmlecoll_QueryInterface(IHTMLElementCollection *iface, REFIID riid, void **ppvObject)
@@ -496,7 +481,7 @@ static HRESULT WINAPI htmldoc2_put_URL(IHTMLDocument2 *iface, BSTR v)
static HRESULT WINAPI htmldoc2_get_URL(IHTMLDocument2 *iface, BSTR *p)
{
CHECK_EXPECT2(htmldoc2_get_url);
- *p = a2bstr("http://test.winehq.org/");
+ *p = SysAllocString(L"http://test.winehq.org/");
return S_OK;
}
@@ -1747,7 +1732,7 @@ static void test_XMLHTTP(void)
set_xhr_site(xhr);
test_open(xhr, "GET", "tests/referer.php", S_OK);
- str1 = a2bstr("http://test.winehq.org/");
+ str1 = SysAllocString(L"http://test.winehq.org/");
V_VT(&varbody) = VT_EMPTY;
hr = IXMLHttpRequest_send(xhr, varbody);
--
2.24.1
2
1
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/urlmon/tests/misc.c | 289 +++++++++++++++++++--------------------
1 file changed, 141 insertions(+), 148 deletions(-)
diff --git a/dlls/urlmon/tests/misc.c b/dlls/urlmon/tests/misc.c
index 6f4da47e6e..07ab52407e 100644
--- a/dlls/urlmon/tests/misc.c
+++ b/dlls/urlmon/tests/misc.c
@@ -84,13 +84,6 @@ static HRESULT (WINAPI *pCoInternetIsFeatureEnabled)(INTERNETFEATURELIST,DWORD);
static HRESULT (WINAPI *pCoInternetSetFeatureEnabled)(INTERNETFEATURELIST,DWORD,BOOL);
static HRESULT (WINAPI *pIEInstallScope)(DWORD*);
-static int strcmp_wa(const WCHAR *strw, const char *stra)
-{
- WCHAR buf[512];
- MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, ARRAY_SIZE(buf));
- return lstrcmpW(strw, buf);
-}
-
static WCHAR *a2w(const char *str)
{
WCHAR *ret;
@@ -484,17 +477,17 @@ static void test_CoInternetQueryInfo(void)
static const struct {
const char *url;
- const char *mime;
+ const WCHAR *mime;
HRESULT hres;
BOOL broken_failure;
- const char *broken_mime;
+ const WCHAR *broken_mime;
} mime_tests[] = {
- {"res://mshtml.dll/blank.htm", "text/html", S_OK},
- {"index.htm", "text/html", S_OK},
- {"file://c:\\Index.htm", "text/html", S_OK},
- {"file://c:\\Index.htm?q=test", "text/html", S_OK, TRUE},
- {"file://c:\\Index.htm#hash_part", "text/html", S_OK, TRUE},
- {"file://c:\\Index.htm#hash_part.txt", "text/html", S_OK, FALSE, "text/plain"},
+ {"res://mshtml.dll/blank.htm", L"text/html", S_OK},
+ {"index.htm", L"text/html", S_OK},
+ {"file://c:\\Index.htm", L"text/html", S_OK},
+ {"file://c:\\Index.htm?q=test", L"text/html", S_OK, TRUE},
+ {"file://c:\\Index.htm#hash_part", L"text/html", S_OK, TRUE},
+ {"file://c:\\Index.htm#hash_part.txt", L"text/html", S_OK, FALSE, L"text/plain"},
{"file://some%20file%2ejpg", NULL, E_FAIL},
{"http://www.winehq.org", NULL, __HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)},
{"about:blank", NULL, E_FAIL},
@@ -603,121 +596,121 @@ static BYTE data98[] = "blah<BoDyblahblah";
static const struct {
BYTE *data;
DWORD size;
- const char *mime;
- const char *mime_pjpeg;
- const char *broken_mime;
+ const WCHAR *mime;
+ const WCHAR *mime_pjpeg;
+ const WCHAR *broken_mime;
const char *url;
const char *proposed_mime;
} mime_tests2[] = {
- {data1, sizeof(data1), "text/plain"},
- {data2, sizeof(data2), "application/octet-stream", "image/pjpeg"},
- {data3, sizeof(data3), "application/octet-stream", "image/pjpeg"},
- {data4, sizeof(data4), "application/octet-stream", "image/pjpeg"},
- {data5, sizeof(data5), "text/plain"},
- {data6, sizeof(data6), "text/plain"},
- {data7, sizeof(data7), "text/html", "text/plain"},
- {data8, sizeof(data8), "text/html", "text/plain"},
- {data9, sizeof(data9), "text/html", "image/pjpeg"},
- {data10, sizeof(data10), "text/html", "text/plain"},
- {data11, sizeof(data11), "text/html", "text/plain"},
- {data12, sizeof(data12), "text/html", "text/plain"},
- {data13, sizeof(data13), "text/plain"},
- {data14, sizeof(data14), "text/plain"},
- {data15, sizeof(data15), "text/plain"},
- {data16, sizeof(data16), "image/pjpeg"},
- {data17, sizeof(data17), "application/octet-stream", "image/pjpeg"},
- {data18, sizeof(data18), "text/html", "image/pjpeg"},
- {data19, sizeof(data19), "image/gif"},
- {data20, sizeof(data20), "image/gif"},
- {data21, sizeof(data21), "text/plain"},
- {data22, sizeof(data22), "image/gif"},
- {data23, sizeof(data23), "text/plain"},
- {data24, sizeof(data24), "image/gif"},
- {data25, sizeof(data25), "image/gif"},
- {data26, sizeof(data26), "text/html", "image/gif"},
- {data27, sizeof(data27), "text/plain"},
- {data28, sizeof(data28), "image/bmp"},
- {data29, sizeof(data29), "image/bmp"},
- {data30, sizeof(data30), "application/octet-stream", "image/pjpeg"},
- {data31, sizeof(data31), "text/html", "image/bmp"},
- {data32, sizeof(data32), "application/octet-stream", "image/pjpeg"},
- {data33, sizeof(data33), "application/octet-stream", "image/pjpeg"},
- {data34, sizeof(data34), "image/x-png"},
- {data35, sizeof(data35), "image/x-png"},
- {data36, sizeof(data36), "application/octet-stream", "image/pjpeg"},
- {data37, sizeof(data37), "text/html", "image/x-png"},
- {data38, sizeof(data38), "application/octet-stream", "image/pjpeg"},
- {data39, sizeof(data39), "image/tiff"},
- {data40, sizeof(data40), "text/html", "image/tiff"},
- {data41, sizeof(data41), "text/plain", NULL, "image/tiff"},
- {data42, sizeof(data42), "text/plain"},
- {data43, sizeof(data43), "application/octet-stream", "image/pjpeg"},
- {data44, sizeof(data44), "video/avi"},
- {data45, sizeof(data45), "text/plain"},
- {data46, sizeof(data46), "text/plain"},
- {data47, sizeof(data47), "text/plain"},
- {data48, sizeof(data48), "text/html", "video/avi"},
- {data49, sizeof(data49), "video/avi"},
- {data50, sizeof(data50), "video/mpeg"},
- {data51, sizeof(data51), "video/mpeg"},
- {data52, sizeof(data52), "application/octet-stream", "image/pjpeg"},
- {data53, sizeof(data53), "application/octet-stream", "image/pjpeg", "image/x-icon"},
- {data54, sizeof(data54), "text/html", "video/mpeg"},
- {data55, sizeof(data55), "application/x-gzip-compressed"},
- {data56, sizeof(data56), "text/plain"},
- {data57, sizeof(data57), "text/html", "application/x-gzip-compressed"},
- {data58, sizeof(data58), "application/octet-stream", "image/pjpeg"},
- {data59, sizeof(data59), "application/x-zip-compressed"},
- {data60, sizeof(data60), "text/plain"},
- {data61, sizeof(data61), "text/html", "application/x-zip-compressed"},
- {data62, sizeof(data62), "application/java"},
- {data63, sizeof(data63), "text/plain"},
- {data64, sizeof(data64), "text/html", "application/java"},
- {data65, sizeof(data65), "application/pdf"},
- {data66, sizeof(data66), "text/plain"},
- {data67, sizeof(data67), "text/html", "application/pdf"},
- {data68, sizeof(data68), "application/x-msdownload"},
- {data69, sizeof(data69), "text/plain"},
- {data70, sizeof(data70), "text/html", "application/x-msdownload"},
- {data71, sizeof(data71), "text/richtext"},
- {data72, sizeof(data72), "text/plain"},
- {data73, sizeof(data73), "text/plain"},
- {data74, sizeof(data74), "text/html", "text/richtext"},
- {data75, sizeof(data75), "audio/wav"},
- {data76, sizeof(data76), "text/plain"},
- {data77, sizeof(data77), "text/plain"},
- {data78, sizeof(data78), "text/html", "text/plain"},
- {data79, sizeof(data79), "application/postscript"},
- {data80, sizeof(data80), "text/plain"},
- {data81, sizeof(data81), "text/html", "application/postscript"},
- {data82, sizeof(data82), "audio/basic"},
- {data83, sizeof(data83), "text/plain"},
- {data84, sizeof(data84), "text/html", "audio/basic"},
- {data85, sizeof(data85), "text/plain"},
- {data86, sizeof(data86), "image/tiff", NULL, "text/plain"},
- {data87, sizeof(data87), "text/plain"},
- {data88, sizeof(data88), "text/html", "text/plain"},
- {data89, sizeof(data89), "text/html", "text/plain"},
- {data90, sizeof(data90), "text/html", "text/plain"},
- {data91, sizeof(data91), "text/xml", "text/plain"},
- {data92, sizeof(data92), "text/xml", "text/plain"},
- {data93, sizeof(data93), "text/xml", "text/plain"},
- {data94, sizeof(data94), "text/html", "text/plain"},
- {data95, sizeof(data95), "text/xml", "text/richtext"},
- {data96, sizeof(data96), "text/plain"},
- {data97, sizeof(data97), "text/html", "text/plain"},
- {data98, sizeof(data98), "text/html", "text/plain"},
- {data1, sizeof(data1), "text/plain", NULL, NULL, "res://mshtml.dll/blank.htm"},
- {NULL, 0, "text/html", NULL, NULL, "res://mshtml.dll/blank.htm"},
- {data1, sizeof(data1), "text/plain", NULL, NULL, "res://mshtml.dll/blank.htm", "application/octet-stream"},
- {data1, sizeof(data1), "text/plain", NULL, NULL, "file:some%20file%2ejpg", "application/octet-stream"},
- {NULL, sizeof(data1), "text/html", NULL, NULL, "res://mshtml.dll/blank.htm"},
- {data1, sizeof(data1), "text/css", NULL, NULL, "http://www.winehq.org/test.css"},
- {data2, sizeof(data2), "text/css", NULL, NULL, "http://www.winehq.org/test.css"},
- {data10, sizeof(data10), "text/html", NULL, NULL, "http://www.winehq.org/test.css"},
- {data1, sizeof(data1), "text/css", NULL, NULL, "http://www.winehq.org/test.css", "text/plain"},
- {data1, sizeof(data1), "text/css", NULL, NULL, "http://www.winehq.org/test.css", "application/octet-stream"},
- {data1, sizeof(data1), "text/test", NULL, NULL, "http://www.winehq.org/test.css", "text/test"}
+ {data1, sizeof(data1), L"text/plain"},
+ {data2, sizeof(data2), L"application/octet-stream", L"image/pjpeg"},
+ {data3, sizeof(data3), L"application/octet-stream", L"image/pjpeg"},
+ {data4, sizeof(data4), L"application/octet-stream", L"image/pjpeg"},
+ {data5, sizeof(data5), L"text/plain"},
+ {data6, sizeof(data6), L"text/plain"},
+ {data7, sizeof(data7), L"text/html", L"text/plain"},
+ {data8, sizeof(data8), L"text/html", L"text/plain"},
+ {data9, sizeof(data9), L"text/html", L"image/pjpeg"},
+ {data10, sizeof(data10), L"text/html", L"text/plain"},
+ {data11, sizeof(data11), L"text/html", L"text/plain"},
+ {data12, sizeof(data12), L"text/html", L"text/plain"},
+ {data13, sizeof(data13), L"text/plain"},
+ {data14, sizeof(data14), L"text/plain"},
+ {data15, sizeof(data15), L"text/plain"},
+ {data16, sizeof(data16), L"image/pjpeg"},
+ {data17, sizeof(data17), L"application/octet-stream", L"image/pjpeg"},
+ {data18, sizeof(data18), L"text/html", L"image/pjpeg"},
+ {data19, sizeof(data19), L"image/gif"},
+ {data20, sizeof(data20), L"image/gif"},
+ {data21, sizeof(data21), L"text/plain"},
+ {data22, sizeof(data22), L"image/gif"},
+ {data23, sizeof(data23), L"text/plain"},
+ {data24, sizeof(data24), L"image/gif"},
+ {data25, sizeof(data25), L"image/gif"},
+ {data26, sizeof(data26), L"text/html", L"image/gif"},
+ {data27, sizeof(data27), L"text/plain"},
+ {data28, sizeof(data28), L"image/bmp"},
+ {data29, sizeof(data29), L"image/bmp"},
+ {data30, sizeof(data30), L"application/octet-stream", L"image/pjpeg"},
+ {data31, sizeof(data31), L"text/html", L"image/bmp"},
+ {data32, sizeof(data32), L"application/octet-stream", L"image/pjpeg"},
+ {data33, sizeof(data33), L"application/octet-stream", L"image/pjpeg"},
+ {data34, sizeof(data34), L"image/x-png"},
+ {data35, sizeof(data35), L"image/x-png"},
+ {data36, sizeof(data36), L"application/octet-stream", L"image/pjpeg"},
+ {data37, sizeof(data37), L"text/html", L"image/x-png"},
+ {data38, sizeof(data38), L"application/octet-stream", L"image/pjpeg"},
+ {data39, sizeof(data39), L"image/tiff"},
+ {data40, sizeof(data40), L"text/html", L"image/tiff"},
+ {data41, sizeof(data41), L"text/plain", NULL, L"image/tiff"},
+ {data42, sizeof(data42), L"text/plain"},
+ {data43, sizeof(data43), L"application/octet-stream", L"image/pjpeg"},
+ {data44, sizeof(data44), L"video/avi"},
+ {data45, sizeof(data45), L"text/plain"},
+ {data46, sizeof(data46), L"text/plain"},
+ {data47, sizeof(data47), L"text/plain"},
+ {data48, sizeof(data48), L"text/html", L"video/avi"},
+ {data49, sizeof(data49), L"video/avi"},
+ {data50, sizeof(data50), L"video/mpeg"},
+ {data51, sizeof(data51), L"video/mpeg"},
+ {data52, sizeof(data52), L"application/octet-stream", L"image/pjpeg"},
+ {data53, sizeof(data53), L"application/octet-stream", L"image/pjpeg", L"image/x-icon"},
+ {data54, sizeof(data54), L"text/html", L"video/mpeg"},
+ {data55, sizeof(data55), L"application/x-gzip-compressed"},
+ {data56, sizeof(data56), L"text/plain"},
+ {data57, sizeof(data57), L"text/html", L"application/x-gzip-compressed"},
+ {data58, sizeof(data58), L"application/octet-stream", L"image/pjpeg"},
+ {data59, sizeof(data59), L"application/x-zip-compressed"},
+ {data60, sizeof(data60), L"text/plain"},
+ {data61, sizeof(data61), L"text/html", L"application/x-zip-compressed"},
+ {data62, sizeof(data62), L"application/java"},
+ {data63, sizeof(data63), L"text/plain"},
+ {data64, sizeof(data64), L"text/html", L"application/java"},
+ {data65, sizeof(data65), L"application/pdf"},
+ {data66, sizeof(data66), L"text/plain"},
+ {data67, sizeof(data67), L"text/html", L"application/pdf"},
+ {data68, sizeof(data68), L"application/x-msdownload"},
+ {data69, sizeof(data69), L"text/plain"},
+ {data70, sizeof(data70), L"text/html", L"application/x-msdownload"},
+ {data71, sizeof(data71), L"text/richtext"},
+ {data72, sizeof(data72), L"text/plain"},
+ {data73, sizeof(data73), L"text/plain"},
+ {data74, sizeof(data74), L"text/html", L"text/richtext"},
+ {data75, sizeof(data75), L"audio/wav"},
+ {data76, sizeof(data76), L"text/plain"},
+ {data77, sizeof(data77), L"text/plain"},
+ {data78, sizeof(data78), L"text/html", L"text/plain"},
+ {data79, sizeof(data79), L"application/postscript"},
+ {data80, sizeof(data80), L"text/plain"},
+ {data81, sizeof(data81), L"text/html", L"application/postscript"},
+ {data82, sizeof(data82), L"audio/basic"},
+ {data83, sizeof(data83), L"text/plain"},
+ {data84, sizeof(data84), L"text/html", L"audio/basic"},
+ {data85, sizeof(data85), L"text/plain"},
+ {data86, sizeof(data86), L"image/tiff", NULL, L"text/plain"},
+ {data87, sizeof(data87), L"text/plain"},
+ {data88, sizeof(data88), L"text/html", L"text/plain"},
+ {data89, sizeof(data89), L"text/html", L"text/plain"},
+ {data90, sizeof(data90), L"text/html", L"text/plain"},
+ {data91, sizeof(data91), L"text/xml", L"text/plain"},
+ {data92, sizeof(data92), L"text/xml", L"text/plain"},
+ {data93, sizeof(data93), L"text/xml", L"text/plain"},
+ {data94, sizeof(data94), L"text/html", L"text/plain"},
+ {data95, sizeof(data95), L"text/xml", L"text/richtext"},
+ {data96, sizeof(data96), L"text/plain"},
+ {data97, sizeof(data97), L"text/html", L"text/plain"},
+ {data98, sizeof(data98), L"text/html", L"text/plain"},
+ {data1, sizeof(data1), L"text/plain", NULL, NULL, "res://mshtml.dll/blank.htm"},
+ {NULL, 0, L"text/html", NULL, NULL, "res://mshtml.dll/blank.htm"},
+ {data1, sizeof(data1), L"text/plain", NULL, NULL, "res://mshtml.dll/blank.htm", "application/octet-stream"},
+ {data1, sizeof(data1), L"text/plain", NULL, NULL, "file:some%20file%2ejpg", "application/octet-stream"},
+ {NULL, sizeof(data1), L"text/html", NULL, NULL, "res://mshtml.dll/blank.htm"},
+ {data1, sizeof(data1), L"text/css", NULL, NULL, "http://www.winehq.org/test.css"},
+ {data2, sizeof(data2), L"text/css", NULL, NULL, "http://www.winehq.org/test.css"},
+ {data10, sizeof(data10), L"text/html", NULL, NULL, "http://www.winehq.org/test.css"},
+ {data1, sizeof(data1), L"text/css", NULL, NULL, "http://www.winehq.org/test.css", "text/plain"},
+ {data1, sizeof(data1), L"text/css", NULL, NULL, "http://www.winehq.org/test.css", "application/octet-stream"},
+ {data1, sizeof(data1), L"text/test", NULL, NULL, "http://www.winehq.org/test.css", "text/test"}
};
static void test_FindMimeFromData(void)
@@ -740,8 +733,8 @@ static void test_FindMimeFromData(void)
if(mime_tests[i].mime) {
ok(hres == S_OK || broken(mime_tests[i].broken_failure), "[%d] FindMimeFromData failed: %08x\n", i, hres);
if(hres == S_OK) {
- ok(!strcmp_wa(mime, mime_tests[i].mime)
- || broken(mime_tests[i].broken_mime && !strcmp_wa(mime, mime_tests[i].broken_mime)),
+ ok(!lstrcmpW(mime, mime_tests[i].mime)
+ || broken(mime_tests[i].broken_mime && !lstrcmpW(mime, mime_tests[i].broken_mime)),
"[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
CoTaskMemFree(mime);
}
@@ -755,13 +748,13 @@ static void test_FindMimeFromData(void)
mime = (LPWSTR)0xf0f0f0f0;
hres = pFindMimeFromData(NULL, url, NULL, 0, text_plainW, 0, &mime, 0);
ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
- ok(!strcmp_wa(mime, "text/plain"), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
+ ok(!lstrcmpW(mime, L"text/plain"), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
CoTaskMemFree(mime);
mime = (LPWSTR)0xf0f0f0f0;
hres = pFindMimeFromData(NULL, url, NULL, 0, app_octet_streamW, 0, &mime, 0);
ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
- ok(!strcmp_wa(mime, "application/octet-stream"), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
+ ok(!lstrcmpW(mime, L"application/octet-stream"), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
CoTaskMemFree(mime);
heap_free(url);
}
@@ -772,8 +765,8 @@ static void test_FindMimeFromData(void)
hres = pFindMimeFromData(NULL, url, mime_tests2[i].data, mime_tests2[i].size,
proposed_mime, 0, &mime, 0);
ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
- b = !strcmp_wa(mime, mime_tests2[i].mime);
- ok(b || broken(mime_tests2[i].broken_mime && !strcmp_wa(mime, mime_tests2[i].broken_mime)),
+ b = !lstrcmpW(mime, mime_tests2[i].mime);
+ ok(b || broken(mime_tests2[i].broken_mime && !lstrcmpW(mime, mime_tests2[i].broken_mime)),
"[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
heap_free(proposed_mime);
heap_free(url);
@@ -784,34 +777,34 @@ static void test_FindMimeFromData(void)
hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
app_octet_streamW, 0, &mime, 0);
ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
- ok(!strcmp_wa(mime, mime_tests2[i].mime) || broken(mime_tests2[i].broken_mime
- && !strcmp_wa(mime, mime_tests2[i].broken_mime)),
+ ok(!lstrcmpW(mime, mime_tests2[i].mime) || broken(mime_tests2[i].broken_mime
+ && !lstrcmpW(mime, mime_tests2[i].broken_mime)),
"[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
CoTaskMemFree(mime);
hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
text_plainW, 0, &mime, 0);
ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
- ok(!strcmp_wa(mime, mime_tests2[i].mime) || broken(mime_tests2[i].broken_mime
- && !strcmp_wa(mime, mime_tests2[i].broken_mime)),
+ ok(!lstrcmpW(mime, mime_tests2[i].mime) || broken(mime_tests2[i].broken_mime
+ && !lstrcmpW(mime, mime_tests2[i].broken_mime)),
"[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
CoTaskMemFree(mime);
hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
text_htmlW, 0, &mime, 0);
ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
- if(!strcmp("application/octet-stream", mime_tests2[i].mime)
- || !strcmp("text/plain", mime_tests2[i].mime) || i==92)
- ok(!strcmp_wa(mime, "text/html"), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
+ if(!lstrcmpW(L"application/octet-stream", mime_tests2[i].mime)
+ || !lstrcmpW(L"text/plain", mime_tests2[i].mime) || i==92)
+ ok(!lstrcmpW(mime, L"text/html"), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
else
- ok(!strcmp_wa(mime, mime_tests2[i].mime), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
+ ok(!lstrcmpW(mime, mime_tests2[i].mime), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
CoTaskMemFree(mime);
hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
image_pjpegW, 0, &mime, 0);
ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
- ok(!strcmp_wa(mime, mime_tests2[i].mime_pjpeg ? mime_tests2[i].mime_pjpeg : mime_tests2[i].mime)
- || broken(!strcmp_wa(mime, mime_tests2[i].mime)),
+ ok(!lstrcmpW(mime, mime_tests2[i].mime_pjpeg ? mime_tests2[i].mime_pjpeg : mime_tests2[i].mime)
+ || broken(!lstrcmpW(mime, mime_tests2[i].mime)),
"[%d] wrong mime, got %s\n", i, wine_dbgstr_w(mime));
CoTaskMemFree(mime);
}
@@ -830,7 +823,7 @@ static void test_FindMimeFromData(void)
hres = pFindMimeFromData(NULL, NULL, data1, 0, text_plainW, 0, &mime, 0);
ok(hres == S_OK, "FindMimeFromData failed: %08x\n", hres);
- ok(!strcmp_wa(mime, "text/plain"), "wrong mime: %s\n", wine_dbgstr_w(mime));
+ ok(!lstrcmpW(mime, L"text/plain"), "wrong mime: %s\n", wine_dbgstr_w(mime));
CoTaskMemFree(mime);
hres = pFindMimeFromData(NULL, NULL, data1, 0, text_plainW, 0, NULL, 0);
@@ -2236,12 +2229,12 @@ static void test_bsc_marshaling(void)
in_bindinfo.stgmedData.pUnkForRelease);
ok(bindinfo.cbSize == sizeof(rem_bindinfo), "cbSize = %u\n", rem_bindinfo.cbSize);
- ok(!strcmp_wa(bindinfo.szExtraInfo, "extra info out"),
+ ok(!lstrcmpW(bindinfo.szExtraInfo, L"extra info out"),
"szExtraInfo = %s\n", wine_dbgstr_w(bindinfo.szExtraInfo));
ok(bindinfo.grfBindInfoF == 22, "grfBindInfoF = %u\n", rem_bindinfo.grfBindInfoF);
ok(bindinfo.dwBindVerb == 23, "dwBindVerb = %u\n", bindinfo.dwBindVerb);
ok(bindinfo.szCustomVerb != verb_out, "szCustomVerb == inbuf\n");
- ok(!strcmp_wa(bindinfo.szCustomVerb, "custom verb out"), "szCustomVerb = %s\n",
+ ok(!lstrcmpW(bindinfo.szCustomVerb, L"custom verb out"), "szCustomVerb = %s\n",
wine_dbgstr_w(bindinfo.szCustomVerb));
ok(bindinfo.cbstgmedData == 29, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
ok(bindinfo.dwOptions == 24, "dwOptions = %u\n", bindinfo.dwOptions);
@@ -2453,12 +2446,12 @@ static void test_bsc_marshaling(void)
in_bindinfo.stgmedData.pUnkForRelease);
ok(bindinfo.cbSize == sizeof(rem_bindinfo), "cbSize = %u\n", rem_bindinfo.cbSize);
- ok(!strcmp_wa(bindinfo.szExtraInfo, "extra info out"),
+ ok(!lstrcmpW(bindinfo.szExtraInfo, L"extra info out"),
"szExtraInfo = %s\n", wine_dbgstr_w(bindinfo.szExtraInfo));
ok(bindinfo.grfBindInfoF == 22, "grfBindInfoF = %u\n", rem_bindinfo.grfBindInfoF);
ok(bindinfo.dwBindVerb == 23, "dwBindVerb = %u\n", bindinfo.dwBindVerb);
ok(bindinfo.szCustomVerb != verb_out, "szCustomVerb == inbuf\n");
- ok(!strcmp_wa(bindinfo.szCustomVerb, "custom verb out"), "szCustomVerb = %s\n",
+ ok(!lstrcmpW(bindinfo.szCustomVerb, L"custom verb out"), "szCustomVerb = %s\n",
wine_dbgstr_w(bindinfo.szCustomVerb));
ok(bindinfo.cbstgmedData == 29, "cbstgmedData = %u\n", bindinfo.cbstgmedData);
ok(bindinfo.dwOptions == 24, "dwOptions = %u\n", bindinfo.dwOptions);
--
2.24.1
3
2