Skip to content

Commit f78dfea

Browse files
winesynclearn-more
authored andcommitted
[WINESYNC] msi: Add MsiDatabaseApplyTransformA MSITRANSFORM_ERROR_VIEWTRANSFORM test.
Signed-off-by: Piotr Caban <[email protected]> Signed-off-by: Hans Leidekker <[email protected]> Signed-off-by: Alexandre Julliard <[email protected]> wine commit id 301dde9838563d33b610c2c09dc69cb07c4c8c9d by Piotr Caban <[email protected]>
1 parent 4048c06 commit f78dfea

File tree

1 file changed

+82
-0
lines changed
  • modules/rostests/winetests/msi

1 file changed

+82
-0
lines changed

modules/rostests/winetests/msi/db.c

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3069,11 +3069,40 @@ static UINT package_from_db(MSIHANDLE hdb, MSIHANDLE *handle)
30693069

30703070
static void test_try_transform(void)
30713071
{
3072+
static const struct {
3073+
const char *table;
3074+
const char *column;
3075+
const char *row;
3076+
const char *data;
3077+
const char *current;
3078+
} transform_view[] = {
3079+
{ "MOO", "OOO", "1", "c", "a" },
3080+
{ "MOO", "COW", "", "5378", "3" },
3081+
{ "MOO", "PIG", "", "5378", "4" },
3082+
{ "MOO", "PIG", "1", "5", "" },
3083+
{ "MOO", "DELETE", "3", "", "" },
3084+
{ "BINARY", "BLOB", "1", "BINARY.1", "" },
3085+
{ "BINARY", "INSERT", "1", "", "" },
3086+
{ "AAR", "CREATE", "", "", "" },
3087+
{ "AAR", "CAR", "", "15871", "1" },
3088+
{ "AAR", "BAR", "", "1282", "2" },
3089+
{ "AAR", "BAR", "vw", "1", "" },
3090+
{ "AAR", "BAR", "bmw", "2", "" },
3091+
{ "AAR", "INSERT", "vw", "", "" },
3092+
{ "AAR", "INSERT", "bmw", "", "" },
3093+
{ "Property", "CREATE", "", "", "" },
3094+
{ "Property", "Property", "", "11592", "1" },
3095+
{ "Property", "Value", "", "7424", "2" },
3096+
{ "Property", "Value", "prop", "val", "" },
3097+
{ "Property", "INSERT", "prop", "", "" }
3098+
};
3099+
30723100
MSIHANDLE hdb, hview, hrec, hpkg = 0;
30733101
LPCSTR query;
30743102
UINT r;
30753103
DWORD sz;
30763104
char buffer[MAX_PATH];
3105+
int i, matched;
30773106

30783107
DeleteFileA(msifile);
30793108
DeleteFileA(mstfile);
@@ -3135,6 +3164,59 @@ static void test_try_transform(void)
31353164
r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_DIRECT, &hdb );
31363165
ok( r == ERROR_SUCCESS , "Failed to create database\n" );
31373166

3167+
r = MsiDatabaseApplyTransformA(hdb, mstfile, MSITRANSFORM_ERROR_VIEWTRANSFORM);
3168+
ok(r == ERROR_SUCCESS, "return code %d, should be ERROR_SUCCESS\n", r);
3169+
3170+
query = "select * from `_TransformView`";
3171+
r = MsiDatabaseOpenViewA(hdb, query, &hview);
3172+
ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
3173+
r = MsiViewExecute(hview, 0);
3174+
ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
3175+
3176+
r = MsiViewGetColumnInfo(hview, MSICOLINFO_NAMES, &hrec);
3177+
ok(r == ERROR_SUCCESS, "error\n");
3178+
check_record(hrec, 5, "Table", "Column", "Row", "Data", "Current");
3179+
MsiCloseHandle(hrec);
3180+
3181+
r = MsiViewGetColumnInfo(hview, MSICOLINFO_TYPES, &hrec);
3182+
ok(r == ERROR_SUCCESS, "error\n");
3183+
check_record(hrec, 5, "g0", "g0", "G0", "G0", "G0");
3184+
MsiCloseHandle(hrec);
3185+
3186+
matched = 0;
3187+
while (MsiViewFetch(hview, &hrec) == ERROR_SUCCESS)
3188+
{
3189+
char data[5][256];
3190+
3191+
for (i = 1; i <= 5; i++) {
3192+
sz = ARRAY_SIZE(data[0]);
3193+
r = MsiRecordGetStringA(hrec, i, data[i-1], &sz);
3194+
ok(r == ERROR_SUCCESS, "%d) MsiRecordGetStringA failed %d\n", i, r);
3195+
}
3196+
3197+
for (i = 0; i < ARRAY_SIZE(transform_view); i++)
3198+
{
3199+
if (strcmp(data[0], transform_view[i].table) ||
3200+
strcmp(data[1], transform_view[i].column) ||
3201+
strcmp(data[2], transform_view[i].row))
3202+
continue;
3203+
3204+
matched++;
3205+
ok(!strcmp(data[3], transform_view[i].data), "%d) data[3] = %s\n", i, data[3]);
3206+
ok(!strcmp(data[4], transform_view[i].current), "%d) data[4] = %s\n", i, data[4]);
3207+
break;
3208+
}
3209+
ok(i != ARRAY_SIZE(transform_view), "invalid row: %s, %s, %s\n",
3210+
wine_dbgstr_a(data[0]), wine_dbgstr_a(data[1]), wine_dbgstr_a(data[2]));
3211+
MsiCloseHandle(hrec);
3212+
}
3213+
ok(matched == ARRAY_SIZE(transform_view), "matched = %d\n", matched);
3214+
3215+
r = MsiViewClose(hview);
3216+
ok(r == ERROR_SUCCESS, "MsiViewClose failed\n");
3217+
r = MsiCloseHandle(hview);
3218+
ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
3219+
31383220
r = MsiDatabaseApplyTransformA( hdb, mstfile, 0 );
31393221
ok( r == ERROR_SUCCESS, "return code %d, should be ERROR_SUCCESS\n", r );
31403222

0 commit comments

Comments
 (0)