Jacek Caban : shdocvw: Added more InternetShortcut tests.

Alexandre Julliard julliard at winehq.org
Tue Apr 12 11:07:38 CDT 2011


Module: wine
Branch: master
Commit: 6db795873d81b1248599db4efdcf39b368dc2bf8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6db795873d81b1248599db4efdcf39b368dc2bf8

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Apr 12 13:27:55 2011 +0200

shdocvw: Added more InternetShortcut tests.

---

 dlls/shdocvw/tests/intshcut.c |   72 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/dlls/shdocvw/tests/intshcut.c b/dlls/shdocvw/tests/intshcut.c
index 108e4f5..ca28450 100644
--- a/dlls/shdocvw/tests/intshcut.c
+++ b/dlls/shdocvw/tests/intshcut.c
@@ -128,6 +128,24 @@ static void test_QueryInterface(void)
     IUnknown_Release(pUnknown);
 }
 
+#define test_shortcut_url(a,b) _test_shortcut_url(__LINE__,a,b)
+static void _test_shortcut_url(unsigned line, IUnknown *unk, const char *exurl)
+{
+    IUniformResourceLocatorA *locator_a;
+    char *url_a;
+    HRESULT hres;
+
+    hres = IUnknown_QueryInterface(unk, &IID_IUniformResourceLocatorA, (void**)&locator_a);
+    ok_(__FILE__,line)(hres == S_OK, "Could not get IUniformResourceLocatorA iface: %08x\n", hres);
+
+    hres = locator_a->lpVtbl->GetURL(locator_a, &url_a);
+    ok_(__FILE__,line)(hres == S_OK, "GetURL failed: %08x\n", hres);
+    ok_(__FILE__,line)(!strcmp(url_a, exurl), "unexpected URL, got %s, expected %s\n", url_a, exurl);
+    CoTaskMemFree(url_a);
+
+    IUnknown_Release(locator_a);
+}
+
 #define check_string_transform(a,b,c,d,e) _check_string_transform(__LINE__,a,b,c,d,e)
 static void _check_string_transform(unsigned line, IUniformResourceLocatorA *urlA, LPCSTR input, DWORD flags,
         LPCSTR expectedOutput, BOOL is_todo)
@@ -314,6 +332,59 @@ static void test_NullURLs(void)
     urlA->lpVtbl->Release(urlA);
 }
 
+typedef struct {
+    const char *data;
+    const char *url;
+} load_test_t;
+
+static const load_test_t load_tests[] = {
+    {"[InternetShortcut]\n"
+     "URL=http://www.winehq.org/\n"
+     "HotKey=0\n"
+     "IDList=\n"
+     "[{000214A0-0000-0000-C000-000000000046}]\n"
+     "Prop0=1,2\n",
+
+     "http://www.winehq.org/"
+    }
+};
+
+static void test_Load(void)
+{
+    IPersistFile *persist_file;
+    const load_test_t *test;
+    WCHAR file_path[MAX_PATH];
+    DWORD size;
+    HANDLE file;
+    HRESULT hres;
+
+    static const WCHAR test_urlW[] = {'t','e','s','t','.','u','r','l',0};
+
+    GetTempPathW(MAX_PATH, file_path);
+    lstrcatW(file_path, test_urlW);
+
+    for(test = load_tests; test < load_tests + sizeof(load_tests)/sizeof(*load_tests); test++) {
+        file = CreateFileW(file_path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+        ok(file != INVALID_HANDLE_VALUE, "could not create test file\n");
+        if(file == INVALID_HANDLE_VALUE)
+            continue;
+
+        WriteFile(file, test->data, strlen(test->data), &size, NULL);
+        CloseHandle(file);
+
+        hres = CoCreateInstance(&CLSID_InternetShortcut, NULL, CLSCTX_ALL, &IID_IPersistFile, (void**)&persist_file);
+        ok(hres == S_OK, "Could not create InternetShortcut instance: %08x\n", hres);
+
+        hres = IPersistFile_Load(persist_file, file_path, 0);
+        ok(hres == S_OK, "Load failed: %08x\n", hres);
+
+        test_shortcut_url((IUnknown*)persist_file, test->url);
+
+        IPersistFile_Release(persist_file);
+        DeleteFileW(file_path);
+    }
+}
+
 static void test_SetURLFlags(void)
 {
     HRESULT hr;
@@ -347,6 +418,7 @@ static void test_InternetShortcut(void)
     test_NullURLs();
     test_SetURLFlags();
     test_ReadAndWriteProperties();
+    test_Load();
 }
 
 START_TEST(intshcut)




More information about the wine-cvs mailing list