Module: wine Branch: master Commit: 9285351ad3b088ff126fde7f62648348682c4d40 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9285351ad3b088ff126fde7f62...
Author: James Hawkins truiken@gmail.com Date: Mon Jul 9 19:34:05 2007 -0700
msi: Test adding columns with data in a transform.
---
dlls/msi/tests/db.c | 122 +++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 95 insertions(+), 27 deletions(-)
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index 2c47a1e..2ce58ae 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -1821,6 +1821,18 @@ static void generate_transform(void)
MsiCloseHandle(hrec);
+ query = "ALTER TABLE `MOO` ADD `COW` INTEGER"; + r = run_query(hdb1, 0, query); + ok(r == ERROR_SUCCESS, "failed to add column\n"); + + query = "ALTER TABLE `MOO` ADD `PIG` INTEGER"; + r = run_query(hdb1, 0, query); + ok(r == ERROR_SUCCESS, "failed to add column\n"); + + query = "UPDATE `MOO` SET `PIG` = 5 WHERE `NOO` = 1"; + r = run_query(hdb1, 0, query); + ok(r == ERROR_SUCCESS, "failed to modify row\n"); + /* database needs to be committed */ MsiDatabaseCommit(hdb1);
@@ -1847,31 +1859,36 @@ static const WCHAR name8[] = { 0x3c8b, 0x3a97, 0x409b, 0x387e, 0 }; /* BINARY.1
/* data in each table */ static const WCHAR data1[] = { /* AAR */ - 0x0201, 0x0005, 0x8001, /* 0x0201 = add row (1), two shorts */ - 0x0201, 0x0006, 0x8002, + 0x0201, 0x0008, 0x8001, /* 0x0201 = add row (1), two shorts */ + 0x0201, 0x0009, 0x8002, }; static const WCHAR data2[] = { /* _Columns */ - 0x0401, 0x0002, 0x0000, 0x0003, 0xbdff, /* 0x0401 = add row (1), 4 shorts */ - 0x0401, 0x0002, 0x0000, 0x0004, 0x8502, + 0x0401, 0x0001, 0x8003, 0x0002, 0x9502, + 0x0401, 0x0001, 0x8004, 0x0003, 0x9502, + 0x0401, 0x0005, 0x0000, 0x0006, 0xbdff, /* 0x0401 = add row (1), 4 shorts */ + 0x0401, 0x0005, 0x0000, 0x0007, 0x8502, }; static const WCHAR data3[] = { /* _Tables */ - 0x0101, 0x0002, /* 0x0101 = add row (1), 1 short */ + 0x0101, 0x0005, /* 0x0101 = add row (1), 1 short */ }; static const char data4[] = /* _StringData */ - "cAARCARBARvwbmw"; /* all the strings squashed together */ + "MOOCOWPIGcAARCARBARvwbmw"; /* all the strings squashed together */ static const WCHAR data5[] = { /* _StringPool */ /* len, refs */ 0, 0, /* string 0 '' */ - 1, 1, /* string 1 'c' */ - 3, 3, /* string 2 'AAR' */ - 3, 1, /* string 3 'CAR' */ - 3, 1, /* string 4 'BAR' */ - 2, 1, /* string 5 'vw' */ - 3, 1, /* string 6 'bmw' */ + 3, 2, /* string 1 'MOO' */ + 3, 1, /* string 2 'COW' */ + 3, 1, /* string 3 'PIG' */ + 1, 1, /* string 4 'c' */ + 3, 3, /* string 5 'AAR' */ + 3, 1, /* string 6 'CAR' */ + 3, 1, /* string 7 'BAR' */ + 2, 1, /* string 8 'vw' */ + 3, 1, /* string 9 'bmw' */ }; /* update row, 0x0002 is a bitmask of present column data, keys are excluded */ static const WCHAR data6[] = { /* MOO */ - 0x0002, 0x8001, 0x0001, /* update row */ + 0x000a, 0x8001, 0x0004, 0x8005, /* update row */ 0x0000, 0x8003, /* delete row */ };
@@ -2032,21 +2049,30 @@ static void test_try_transform(void) hrec = 0; query = "select `NOO`,`OOO` from `MOO` where `NOO` = 1 AND `OOO` = 'c'"; r = do_query(hdb, query, &hrec); - ok(r == ERROR_SUCCESS, "select query failed\n"); + todo_wine + { + ok(r == ERROR_SUCCESS, "select query failed\n"); + } MsiCloseHandle(hrec);
/* check unchanged value */ hrec = 0; query = "select `NOO`,`OOO` from `MOO` where `NOO` = 2 AND `OOO` = 'b'"; r = do_query(hdb, query, &hrec); - ok(r == ERROR_SUCCESS, "select query failed\n"); + todo_wine + { + ok(r == ERROR_SUCCESS, "select query failed\n"); + } MsiCloseHandle(hrec);
/* check deleted value */ hrec = 0; query = "select * from `MOO` where `NOO` = 3"; r = do_query(hdb, query, &hrec); - ok(r == ERROR_NO_MORE_ITEMS, "select query failed\n"); + todo_wine + { + ok(r == ERROR_NO_MORE_ITEMS, "select query failed\n"); + } if (hrec) MsiCloseHandle(hrec);
/* check added stream */ @@ -2067,39 +2093,81 @@ static void test_try_transform(void) hrec = 0; query = "select * from `MOO`"; r = MsiDatabaseOpenView(hdb, query, &hview); - ok(r == ERROR_SUCCESS, "open view failed\n"); + todo_wine + { + ok(r == ERROR_SUCCESS, "open view failed\n"); + }
r = MsiViewExecute(hview, 0); - ok(r == ERROR_SUCCESS, "view execute failed\n"); + todo_wine + { + ok(r == ERROR_SUCCESS, "view execute failed\n"); + }
r = MsiViewFetch(hview, &hrec); - ok(r == ERROR_SUCCESS, "view fetch failed\n"); + todo_wine + { + ok(r == ERROR_SUCCESS, "view fetch failed\n"); + }
r = MsiRecordGetInteger(hrec, 1); - ok(r == 1, "Expected 1, got %d\n", r); + todo_wine + { + ok(r == 1, "Expected 1, got %d\n", r); + }
sz = sizeof buffer; r = MsiRecordGetString(hrec, 2, buffer, &sz); - ok(r == ERROR_SUCCESS, "record get string failed\n"); - ok(!lstrcmpA(buffer, "c"), "Expected c, got %s\n", buffer); + todo_wine + { + ok(r == ERROR_SUCCESS, "record get string failed\n"); + ok(!lstrcmpA(buffer, "c"), "Expected c, got %s\n", buffer); + } + + r = MsiRecordGetInteger(hrec, 3); + ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r); + + r = MsiRecordGetInteger(hrec, 4); + todo_wine + { + ok(r == 5, "Expected 5, got %d\n", r); + }
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec); - ok(r == ERROR_SUCCESS, "view fetch failed\n"); + todo_wine + { + ok(r == ERROR_SUCCESS, "view fetch failed\n"); + }
r = MsiRecordGetInteger(hrec, 1); - ok(r == 2, "Expected 2, got %d\n", r); + todo_wine + { + ok(r == 2, "Expected 2, got %d\n", r); + }
sz = sizeof buffer; r = MsiRecordGetString(hrec, 2, buffer, &sz); - ok(r == ERROR_SUCCESS, "record get string failed\n"); - ok(!lstrcmpA(buffer, "b"), "Expected b, got %s\n", buffer); + todo_wine + { + ok(r == ERROR_SUCCESS, "record get string failed\n"); + ok(!lstrcmpA(buffer, "b"), "Expected b, got %s\n", buffer); + } + + r = MsiRecordGetInteger(hrec, 3); + ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r); + + r = MsiRecordGetInteger(hrec, 4); + ok(r == 0x80000000, "Expected 0x80000000, got %d\n", r);
MsiCloseHandle(hrec);
r = MsiViewFetch(hview, &hrec); - ok(r == ERROR_NO_MORE_ITEMS, "view fetch succeeded\n"); + todo_wine + { + ok(r == ERROR_NO_MORE_ITEMS, "view fetch succeeded\n"); + }
MsiCloseHandle(hrec); MsiCloseHandle(hview);