James Hawkins : msi: Test the column types of MSI packages.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jul 27 05:42:25 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 75c866ed58c5fcab66dc826249bb6f096bcb8608
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=75c866ed58c5fcab66dc826249bb6f096bcb8608

Author: James Hawkins <truiken at gmail.com>
Date:   Wed Jul 26 14:53:09 2006 -0700

msi: Test the column types of MSI packages.

---

 dlls/msi/tests/install.c |   69 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 68 insertions(+), 1 deletions(-)

diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
index 8792629..609fafa 100644
--- a/dlls/msi/tests/install.c
+++ b/dlls/msi/tests/install.c
@@ -126,7 +126,7 @@ static const CHAR install_exec_seq_dat[]
                                            "WriteRegistryValues\t\t5000";
 
 static const CHAR media_dat[] = "DiskId\tLastSequence\tDiskPrompt\tCabinet\tVolumeLabel\tSource\n"
-                                "i2\ti2\tL64\tS255\tS32\tS72\n"
+                                "i2\ti4\tL64\tS255\tS32\tS72\n"
                                 "Media\tDiskId\n"
                                 "1\t3\t\t\tDISK1\t\n"
                                 "2\t5\t\tmsitest.cab\tDISK2\t\n";
@@ -316,6 +316,17 @@ static int fci_delete(char *pszFile, int
     return 0;
 }
 
+static BOOL check_record(MSIHANDLE rec, UINT field, LPSTR val)
+{
+    CHAR buffer[0x20];
+    UINT r;
+    DWORD sz;
+
+    sz = sizeof buffer;
+    r = MsiRecordGetString(rec, field, buffer, &sz);
+    return (r == ERROR_SUCCESS ) && !strcmp(val, buffer);
+}
+
 static BOOL get_temp_file(char *pszTempName, int cbTempName, void *pv)
 {
     LPSTR tempname;
@@ -679,6 +690,61 @@ static void test_MsiSetComponentState(vo
     CoUninitialize();
 }
 
+static void test_packagecoltypes(void)
+{
+    MSIHANDLE hdb, view, rec;
+    char path[MAX_PATH];
+    LPSTR query;
+    UINT r, count;
+
+    CoInitialize(NULL);
+
+    lstrcpy(path, CURR_DIR);
+    lstrcat(path, "\\");
+    lstrcat(path, msifile);
+
+    r = MsiOpenDatabase(path, MSIDBOPEN_READONLY, &hdb);
+    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+
+    query = "SELECT * FROM `Media`";
+    r = MsiDatabaseOpenView( hdb, query, &view );
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
+    }
+
+    r = MsiViewGetColumnInfo( view, MSICOLINFO_NAMES, &rec );
+    count = MsiRecordGetFieldCount( rec );
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "MsiViewGetColumnInfo failed\n");
+        ok(count == 6, "Expected 6, got %d\n", count);
+        ok(check_record(rec, 1, "DiskId"), "wrong column label\n");
+        ok(check_record(rec, 2, "LastSequence"), "wrong column label\n");
+        ok(check_record(rec, 3, "DiskPrompt"), "wrong column label\n");
+        ok(check_record(rec, 4, "Cabinet"), "wrong column label\n");
+        ok(check_record(rec, 5, "VolumeLabel"), "wrong column label\n");
+        ok(check_record(rec, 6, "Source"), "wrong column label\n");
+    }
+
+    r = MsiViewGetColumnInfo( view, MSICOLINFO_TYPES, &rec );
+    count = MsiRecordGetFieldCount( rec );
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "MsiViewGetColumnInfo failed\n");
+        ok(count == 6, "Expected 6, got %d\n", count);
+        ok(check_record(rec, 1, "i2"), "wrong column label\n");
+        ok(check_record(rec, 2, "i4"), "wrong column label\n");
+        ok(check_record(rec, 3, "L64"), "wrong column label\n");
+        ok(check_record(rec, 4, "S255"), "wrong column label\n");
+        ok(check_record(rec, 5, "S32"), "wrong column label\n");
+        ok(check_record(rec, 6, "S72"), "wrong column label\n");
+    }
+
+    MsiCloseHandle(hdb);
+    DeleteFile(msifile);
+}
+
 START_TEST(install)
 {
     if (!init_function_pointers())
@@ -689,6 +755,7 @@ START_TEST(install)
     
     test_MsiInstallProduct();
     test_MsiSetComponentState();
+    test_packagecoltypes();
     
     delete_test_files();
 }




More information about the wine-cvs mailing list