Misha Koshelev : shell32/tests:
Expand default DDE application name tests to conform to win98.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 11 08:46:12 CDT 2007
Module: wine
Branch: master
Commit: ca6387b32993715ee0cfd0fa5ab24c0ee3a1d83d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ca6387b32993715ee0cfd0fa5ab24c0ee3a1d83d
Author: Misha Koshelev <mk144210 at bcm.edu>
Date: Sat Jun 9 00:25:13 2007 -0500
shell32/tests: Expand default DDE application name tests to conform to win98.
---
dlls/shell32/tests/shlexec.c | 74 +++++++++++++++++++++++++++---------------
1 files changed, 48 insertions(+), 26 deletions(-)
diff --git a/dlls/shell32/tests/shlexec.c b/dlls/shell32/tests/shlexec.c
index 621ec86..4f0aa8c 100644
--- a/dlls/shell32/tests/shlexec.c
+++ b/dlls/shell32/tests/shlexec.c
@@ -1232,50 +1232,55 @@ static void test_dde(void)
assert(DdeUninitialize(ddeInst));
}
+#define DDE_DEFAULT_APP_VARIANTS 2
typedef struct
{
const char* command;
- const char* expectedDdeApplication;
+ const char* expectedDdeApplication[DDE_DEFAULT_APP_VARIANTS];
int todo;
- int rc;
+ int rc[DDE_DEFAULT_APP_VARIANTS];
} dde_default_app_tests_t;
static dde_default_app_tests_t dde_default_app_tests[] =
{
+ /* Windows XP and 98 handle default DDE app names in different ways.
+ * The application name we see in the first test determines the pattern
+ * of application names and return codes we will look for. */
+
/* Test unquoted existing filename with a space */
- {"%s\\test file.exe", "test file", 0x0, 33},
- {"%s\\test file.exe param", "test file", 0x0, 33},
+ {"%s\\test file.exe", {"test file", "test"}, 0x0, {33, 33}},
+ {"%s\\test file.exe param", {"test file", "test"}, 0x0, {33, 33}},
/* Test quoted existing filename with a space */
- {"\"%s\\test file.exe\"", "test file", 0x0, 33},
- {"\"%s\\test file.exe\" param", "test file", 0x0, 33},
+ {"\"%s\\test file.exe\"", {"test file", "test file"}, 0x0, {33, 33}},
+ {"\"%s\\test file.exe\" param", {"test file", "test file"}, 0x0, {33, 33}},
/* Test unquoted filename with a space that doesn't exist, but
* test2.exe does */
- {"%s\\test2 file.exe", "test2", 0x0, 33},
- {"%s\\test2 file.exe param", "test2", 0x0, 33},
+ {"%s\\test2 file.exe", {"test2", "test2"}, 0x0, {33, 33}},
+ {"%s\\test2 file.exe param", {"test2", "test2"}, 0x0, {33, 33}},
/* Test quoted filename with a space that does not exist */
- {"\"%s\\test2 file.exe\"", "", 0x0, 5},
- {"\"%s\\test2 file.exe\" param", "", 0x0, 5},
+ {"\"%s\\test2 file.exe\"", {"", "test2 file"}, 0x0, {5, 33}},
+ {"\"%s\\test2 file.exe\" param", {"", "test2 file"}, 0x0, {5, 33}},
/* Test filename supplied without the extension */
- {"%s\\test2", "test2", 0x0, 33},
- {"%s\\test2 param", "test2", 0x0, 33},
+ {"%s\\test2", {"test2", "test2"}, 0x0, {33, 33}},
+ {"%s\\test2 param", {"test2", "test2"}, 0x0, {33, 33}},
/* Test an unquoted nonexistent filename */
- {"%s\\notexist.exe", "", 0x0, 5},
- {"%s\\notexist.exe param", "", 0x0, 5},
+ {"%s\\notexist.exe", {"", "notexist"}, 0x0, {5, 33}},
+ {"%s\\notexist.exe param", {"", "notexist"}, 0x0, {5, 33}},
/* Test an application that will be found on the path */
- {"cmd", "cmd", 0x0, 33},
- {"cmd param", "cmd", 0x0, 33},
+ {"cmd", {"cmd", "cmd"}, 0x0, {33, 33}},
+ {"cmd param", {"cmd", "cmd"}, 0x0, {33, 33}},
/* Test an application that will not be found on the path */
- {"xyzwxyzwxyz", "", 0x0, 5},
- {"xyzwxyzwxyz param", "", 0x0, 5},
+ {"xyzwxyzwxyz", {"", "xyzwxyzwxyz"}, 0x0, {5, 33}},
+ {"xyzwxyzwxyz param", {"", "xyzwxyzwxyz"}, 0x0, {5, 33}},
- {NULL, NULL, 0, 0}
+ {NULL, {NULL}, 0, {0}}
};
static void test_dde_default_app(void)
@@ -1287,7 +1292,7 @@ static void test_dde_default_app(void)
char params[1024];
DWORD threadId;
MSG msg;
- int rc;
+ int rc, which = 0;
ddeInst = 0;
rc = DdeInitializeA(&ddeInst, ddeCb, CBF_SKIP_ALLNOTIFICATIONS | CBF_FAIL_ADVISES |
@@ -1321,29 +1326,46 @@ static void test_dde_default_app(void)
assert(CreateThread(NULL, 0, ddeThread, (LPVOID)&info, 0, &threadId));
while (GetMessage(&msg, NULL, 0, 0)) DispatchMessage(&msg);
rc = msg.wParam > 32 ? 33 : msg.wParam;
+
+ /* First test, find which set of test data we expect to see */
+ if (test == dde_default_app_tests)
+ {
+ int i;
+ for (i=0; i<DDE_DEFAULT_APP_VARIANTS; i++)
+ {
+ if (!strcmp(ddeApplication, test->expectedDdeApplication[i]))
+ {
+ which = i;
+ break;
+ }
+ }
+ if (i == DDE_DEFAULT_APP_VARIANTS)
+ skip("Default DDE application test does not match any available results, using first expected data set.\n");
+ }
+
if ((test->todo & 0x1)==0)
{
- ok(rc==test->rc, "%s failed: rc=%d err=%d\n", shell_call,
+ ok(rc==test->rc[which], "%s failed: rc=%d err=%d\n", shell_call,
rc, GetLastError());
}
else todo_wine
{
- ok(rc==test->rc, "%s failed: rc=%d err=%d\n", shell_call,
+ ok(rc==test->rc[which], "%s failed: rc=%d err=%d\n", shell_call,
rc, GetLastError());
}
if (rc == 33)
{
if ((test->todo & 0x2)==0)
{
- ok(!strcmp(ddeApplication, test->expectedDdeApplication),
+ ok(!strcmp(ddeApplication, test->expectedDdeApplication[which]),
"Expected application '%s', got '%s'\n",
- test->expectedDdeApplication, ddeApplication);
+ test->expectedDdeApplication[which], ddeApplication);
}
else todo_wine
{
- ok(!strcmp(ddeApplication, test->expectedDdeApplication),
+ ok(!strcmp(ddeApplication, test->expectedDdeApplication[which]),
"Expected application '%s', got '%s'\n",
- test->expectedDdeApplication, ddeApplication);
+ test->expectedDdeApplication[which], ddeApplication);
}
}
More information about the wine-cvs
mailing list