msi: Add tests for importing a _SummaryInformation table.

This commit is contained in:
Hans Leidekker 2009-06-04 10:13:14 +02:00 committed by Alexandre Julliard
parent d02dbf4492
commit a0b9315dff
1 changed files with 142 additions and 0 deletions

View File

@ -24,6 +24,7 @@
#include <windows.h>
#include <msi.h>
#include <msidefs.h>
#include <msiquery.h>
#include <objidl.h>
@ -1711,6 +1712,24 @@ static const CHAR endlines2[] = "A\tB\tC\tD\tE\tF\r"
"a\tb\tc\td\te\tf\n"
"g\th\ti\tj\tk\tl\r\n";
static const CHAR suminfo[] = "PropertyId\tValue\n"
"i2\tl255\n"
"_SummaryInformation\tPropertyId\n"
"1\t1252\n"
"2\tInstaller Database\n"
"3\tInstaller description\n"
"4\tWineHQ\n"
"5\tInstaller\n"
"6\tInstaller comments\n"
"7\tIntel;1033\n"
"9\t{12345678-1234-1234-1234-123456789012}\n"
"12\t2009/04/12 15:46:11\n"
"13\t2009/04/12 15:46:11\n"
"14\t200\n"
"15\t2\n"
"18\tVim\n"
"19\t2\n";
static void write_file(const CHAR *filename, const char *data, int data_size)
{
DWORD size;
@ -1733,6 +1752,128 @@ static UINT add_table_to_db(MSIHANDLE hdb, LPCSTR table_data)
return r;
}
static void test_suminfo_import(void)
{
MSIHANDLE hdb, hsi, view = 0;
LPCSTR query;
UINT r, count, size, type;
char str_value[50];
INT int_value;
FILETIME ft_value;
GetCurrentDirectoryA(MAX_PATH, CURR_DIR);
r = MsiOpenDatabaseA(msifile, MSIDBOPEN_CREATE, &hdb);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
r = add_table_to_db(hdb, suminfo);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
/* _SummaryInformation is not imported as a regular table... */
query = "SELECT * FROM `_SummaryInformation`";
r = MsiDatabaseOpenViewA(hdb, query, &view);
ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %u\n", r);
MsiCloseHandle(view);
/* ...its data is added to the special summary information stream */
r = MsiGetSummaryInformationA(hdb, NULL, 0, &hsi);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
r = MsiSummaryInfoGetPropertyCount(hsi, &count);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(count == 14, "Expected 14, got %u\n", count);
r = MsiSummaryInfoGetPropertyA(hsi, PID_CODEPAGE, &type, &int_value, NULL, NULL, NULL);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_I2, "Expected VT_I2, got %u\n", type);
ok(int_value == 1252, "Expected 1252, got %d\n", int_value);
size = sizeof(str_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_TITLE, &type, NULL, NULL, str_value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type);
ok(size == 18, "Expected 18, got %u\n", size);
ok(!strcmp(str_value, "Installer Database"),
"Expected \"Installer Database\", got %s\n", str_value);
size = sizeof(str_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_SUBJECT, &type, NULL, NULL, str_value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type);
ok(!strcmp(str_value, "Installer description"),
"Expected \"Installer description\", got %s\n", str_value);
size = sizeof(str_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_AUTHOR, &type, NULL, NULL, str_value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type);
ok(!strcmp(str_value, "WineHQ"),
"Expected \"WineHQ\", got %s\n", str_value);
size = sizeof(str_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_KEYWORDS, &type, NULL, NULL, str_value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type);
ok(!strcmp(str_value, "Installer"),
"Expected \"Installer\", got %s\n", str_value);
size = sizeof(str_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_COMMENTS, &type, NULL, NULL, str_value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type);
ok(!strcmp(str_value, "Installer comments"),
"Expected \"Installer comments\", got %s\n", str_value);
size = sizeof(str_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_TEMPLATE, &type, NULL, NULL, str_value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type);
ok(!strcmp(str_value, "Intel;1033"),
"Expected \"Intel;1033\", got %s\n", str_value);
size = sizeof(str_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_REVNUMBER, &type, NULL, NULL, str_value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type);
ok(!strcmp(str_value, "{12345678-1234-1234-1234-123456789012}"),
"Expected \"{12345678-1234-1234-1234-123456789012}\", got %s\n", str_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_CREATE_DTM, &type, NULL, &ft_value, NULL, NULL);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_FILETIME, "Expected VT_FILETIME, got %u\n", type);
r = MsiSummaryInfoGetPropertyA(hsi, PID_LASTSAVE_DTM, &type, NULL, &ft_value, NULL, NULL);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_FILETIME, "Expected VT_FILETIME, got %u\n", type);
r = MsiSummaryInfoGetPropertyA(hsi, PID_PAGECOUNT, &type, &int_value, NULL, NULL, NULL);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_I4, "Expected VT_I4, got %u\n", type);
ok(int_value == 200, "Expected 200, got %d\n", int_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_WORDCOUNT, &type, &int_value, NULL, NULL, NULL);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_I4, "Expected VT_I4, got %u\n", type);
ok(int_value == 2, "Expected 2, got %d\n", int_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_SECURITY, &type, &int_value, NULL, NULL, NULL);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_I4, "Expected VT_I4, got %u\n", type);
ok(int_value == 2, "Expected 2, got %d\n", int_value);
size = sizeof(str_value);
r = MsiSummaryInfoGetPropertyA(hsi, PID_APPNAME, &type, NULL, NULL, str_value, &size);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
ok(type == VT_LPSTR, "Expected VT_LPSTR, got %u\n", type);
ok(!strcmp(str_value, "Vim"), "Expected \"Vim\", got %s\n", str_value);
MsiCloseHandle(hsi);
MsiCloseHandle(hdb);
DeleteFileA(msifile);
}
static void test_msiimport(void)
{
MSIHANDLE hdb, view, rec;
@ -7784,4 +7925,5 @@ START_TEST(db)
test_dbmerge();
test_insertorder();
test_columnorder();
test_suminfo_import();
}