Hans Leidekker : setupapi: Add tests for SetupGet{SourceFileLocation, SourceInfo, TargetPath}.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Nov 17 11:49:14 CST 2006


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

Author: Hans Leidekker <hans at it.vu.nl>
Date:   Fri Nov 17 13:48:38 2006 +0100

setupapi: Add tests for SetupGet{SourceFileLocation, SourceInfo, TargetPath}.

---

 dlls/setupapi/tests/query.c |  130 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 130 insertions(+), 0 deletions(-)

diff --git a/dlls/setupapi/tests/query.c b/dlls/setupapi/tests/query.c
index a1d3e3e..50d341b 100644
--- a/dlls/setupapi/tests/query.c
+++ b/dlls/setupapi/tests/query.c
@@ -29,6 +29,9 @@ static void (WINAPI *pSetupCloseInfFile)
 static BOOL (WINAPI *pSetupGetInfInformationA)(LPCVOID,DWORD,PSP_INF_INFORMATION,DWORD,PDWORD);
 static HINF (WINAPI *pSetupOpenInfFileA)(PCSTR,PCSTR,DWORD,PUINT);
 static BOOL (WINAPI *pSetupQueryInfFileInformationA)(PSP_INF_INFORMATION,UINT,PSTR,DWORD,PDWORD);
+static BOOL (WINAPI *pSetupGetSourceFileLocationA)(HINF,PINFCONTEXT,PCSTR,PUINT,PSTR,DWORD,PDWORD);
+static BOOL (WINAPI *pSetupGetSourceInfoA)(HINF,UINT,UINT,PSTR,DWORD,PDWORD);
+static BOOL (WINAPI *pSetupGetTargetPathA)(HINF,PINFCONTEXT,PCSTR,PSTR,DWORD,PDWORD);
 
 CHAR CURR_DIR[MAX_PATH];
 CHAR WIN_DIR[MAX_PATH];
@@ -43,6 +46,9 @@ static void init_function_pointers(void)
         pSetupGetInfInformationA = (void *)GetProcAddress(hSetupAPI, "SetupGetInfInformationA");
         pSetupOpenInfFileA = (void *)GetProcAddress(hSetupAPI, "SetupOpenInfFileA");
         pSetupQueryInfFileInformationA = (void *)GetProcAddress(hSetupAPI, "SetupQueryInfFileInformationA");
+        pSetupGetSourceFileLocationA = (void *)GetProcAddress(hSetupAPI, "SetupGetSourceFileLocationA");
+        pSetupGetSourceInfoA = (void *)GetProcAddress(hSetupAPI, "SetupGetSourceInfoA");
+        pSetupGetTargetPathA = (void *)GetProcAddress(hSetupAPI, "SetupGetTargetPathA");
     }
 }
 
@@ -80,6 +86,16 @@ static void create_inf_file(LPSTR filena
     append_str(&ptr, "[Version]\n");
     append_str(&ptr, "Signature=\"$Chicago$\"\n");
     append_str(&ptr, "AdvancedINF=2.5\n");
+    append_str(&ptr, "[SourceDisksNames]\n");
+    append_str(&ptr, "2 = %%SrcDiskName%%, LANCOM\\LANtools\\lanconf.cab\n");
+    append_str(&ptr, "[SourceDisksFiles]\n");
+    append_str(&ptr, "lanconf.exe = 2\n");
+    append_str(&ptr, "[DestinationDirs]\n");
+    append_str(&ptr, "DefaultDestDir = 24, %%DefaultDest%%\n");
+    append_str(&ptr, "[Strings]\n");
+    append_str(&ptr, "LangDir = english\n");
+    append_str(&ptr, "DefaultDest = LANCOM\n");
+    append_str(&ptr, "SrcDiskName = \"LANCOM Software CD\"\n");
 
     WriteFile(hf, data, ptr - data, &dwNumberOfBytesWritten, NULL);
     CloseHandle(hf);
@@ -251,10 +267,124 @@ static void test_SetupGetInfInformation(
     DeleteFileA(inf_two);
 }
 
+static void test_SetupGetSourceFileLocation(void)
+{
+    char buffer[MAX_PATH] = "not empty", inf_filename[MAX_PATH];
+    UINT source_id;
+    DWORD required;
+    HINF hinf;
+    BOOL ret;
+
+    lstrcpyA(inf_filename, CURR_DIR);
+    lstrcatA(inf_filename, "\\");
+    lstrcatA(inf_filename, "test.inf");
+
+    create_inf_file(inf_filename);
+
+    hinf = pSetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
+    ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
+
+    required = 0;
+    source_id = 0;
+
+    ret = pSetupGetSourceFileLocationA(hinf, NULL, "lanconf.exe", &source_id, buffer, sizeof(buffer), &required);
+    ok(ret, "SetupGetSourceFileLocation failed\n");
+
+    ok(required == 1, "unexpected required size: %d\n", required);
+    ok(source_id == 2, "unexpected source id: %d\n", source_id);
+    ok(!lstrcmpA("", buffer), "unexpected result string: %s\n", buffer);
+
+    pSetupCloseInfFile(hinf);
+    DeleteFileA(inf_filename);
+}
+
+static void test_SetupGetSourceInfo(void)
+{
+    char buffer[MAX_PATH], inf_filename[MAX_PATH];
+    DWORD required;
+    HINF hinf;
+    BOOL ret;
+
+    lstrcpyA(inf_filename, CURR_DIR);
+    lstrcatA(inf_filename, "\\");
+    lstrcatA(inf_filename, "test.inf");
+
+    create_inf_file(inf_filename);
+
+    hinf = pSetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
+    ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
+
+    required = 0;
+
+    ret = pSetupGetSourceInfoA(hinf, 2, SRCINFO_PATH, buffer, sizeof(buffer), &required);
+    ok(ret, "SetupGetSourceInfoA failed\n");
+
+    ok(required == 1, "unexpected required size: %d\n", required);
+    ok(!lstrcmpA("", buffer), "unexpected result string: %s\n", buffer);
+
+    required = 0;
+    buffer[0] = 0;
+
+    ret = pSetupGetSourceInfoA(hinf, 2, SRCINFO_TAGFILE, buffer, sizeof(buffer), &required);
+    ok(ret, "SetupGetSourceInfoA failed\n");
+
+    ok(required == 28, "unexpected required size: %d\n", required);
+    ok(!lstrcmpA("LANCOM\\LANtools\\lanconf.cab", buffer), "unexpected result string: %s\n", buffer);
+
+    required = 0;
+    buffer[0] = 0;
+
+    ret = pSetupGetSourceInfoA(hinf, 2, SRCINFO_DESCRIPTION, buffer, sizeof(buffer), &required);
+    ok(ret, "SetupGetSourceInfoA failed\n");
+
+    ok(required == 19, "unexpected required size: %d\n", required);
+    ok(!lstrcmpA("LANCOM Software CD", buffer), "unexpected result string: %s\n", buffer);
+
+    pSetupCloseInfFile(hinf);
+    DeleteFileA(inf_filename);
+}
+
+static void test_SetupGetTargetPath(void)
+{
+    char buffer[MAX_PATH], inf_filename[MAX_PATH];
+    DWORD required;
+    HINF hinf;
+    INFCONTEXT ctx;
+    BOOL ret;
+
+    lstrcpyA(inf_filename, CURR_DIR);
+    lstrcatA(inf_filename, "\\");
+    lstrcatA(inf_filename, "test.inf");
+
+    create_inf_file(inf_filename);
+
+    hinf = pSetupOpenInfFileA(inf_filename, NULL, INF_STYLE_WIN4, NULL);
+    ok(hinf != INVALID_HANDLE_VALUE, "could not open inf file\n");
+
+    ctx.Inf = hinf;
+    ctx.CurrentInf = hinf;
+    ctx.Section = 7;
+    ctx.Line = 0;
+
+    required = 0;
+
+    ret = pSetupGetTargetPathA(hinf, &ctx, NULL, buffer, sizeof(buffer), &required);
+    ok(ret, "SetupGetTargetPathA failed\n");
+
+    ok(required == 10, "unexpected required size: %d\n", required);
+    ok(!lstrcmpiA("C:\\LANCOM", buffer), "unexpected result string: %s\n", buffer);
+
+    pSetupCloseInfFile(hinf);
+    DeleteFileA(inf_filename);
+}
+
 START_TEST(query)
 {
     init_function_pointers();
     get_directories();
 
     test_SetupGetInfInformation();
+    test_SetupGetSourceFileLocation();
+    test_SetupGetSourceInfo();
+    test_SetupGetTargetPath();
 }




More information about the wine-cvs mailing list