From 30e53218673b401429296ba53b348abde1bb6ccb Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Wed, 13 Feb 2008 23:36:08 -0600 Subject: [PATCH] msi: Add tests for the MSIMODIFY_REFRESH command. --- dlls/msi/tests/db.c | 103 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index fa3b55b7673..d6eed20510e 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -5727,6 +5727,108 @@ static void test_forcecodepage(void) DeleteFileA("forcecodepage.idt"); } +static void test_viewmodify_refresh(void) +{ + MSIHANDLE hdb, hview, hrec; + const char *query; + char buffer[MAX_PATH]; + UINT r; + DWORD size; + + DeleteFile(msifile); + + r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + query = "CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL, `B` INT PRIMARY KEY `A` )"; + r = run_query(hdb, 0, query); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + query = "INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hi', 1 )"; + r = run_query(hdb, 0, query); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + query = "SELECT * FROM `Table`"; + r = MsiDatabaseOpenView(hdb, query, &hview); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + r = MsiViewExecute(hview, 0); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + r = MsiViewFetch(hview, &hrec); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + query = "UPDATE `Table` SET `B` = 2 WHERE `A` = 'hi'"; + r = run_query(hdb, 0, query); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + r = MsiViewModify(hview, MSIMODIFY_REFRESH, hrec); + todo_wine + { + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + } + + size = MAX_PATH; + r = MsiRecordGetStringA(hrec, 1, buffer, &size); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + ok(!lstrcmpA(buffer, "hi"), "Expected \"hi\", got \"%s\"\n", buffer); + ok(size == 2, "Expected 2, got %d\n", size); + + r = MsiRecordGetInteger(hrec, 2); + todo_wine + { + ok(r == 2, "Expected 2, got %d\n", r); + } + + MsiCloseHandle(hrec); + MsiViewClose(hview); + MsiCloseHandle(hview); + + query = "INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hello', 3 )"; + r = run_query(hdb, 0, query); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + query = "SELECT * FROM `Table` WHERE `B` = 3"; + r = MsiDatabaseOpenView(hdb, query, &hview); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + r = MsiViewExecute(hview, 0); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + r = MsiViewFetch(hview, &hrec); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + query = "UPDATE `Table` SET `B` = 2 WHERE `A` = 'hello'"; + r = run_query(hdb, 0, query); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + query = "INSERT INTO `Table` ( `A`, `B` ) VALUES ( 'hithere', 3 )"; + r = run_query(hdb, 0, query); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + + r = MsiViewModify(hview, MSIMODIFY_REFRESH, hrec); + todo_wine + { + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + } + + size = MAX_PATH; + r = MsiRecordGetStringA(hrec, 1, buffer, &size); + ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r); + ok(!lstrcmpA(buffer, "hello"), "Expected \"hello\", got \"%s\"\n", buffer); + ok(size == 5, "Expected 5, got %d\n", size); + + r = MsiRecordGetInteger(hrec, 2); + todo_wine + { + ok(r == 2, "Expected 2, got %d\n", r); + } + + MsiCloseHandle(hrec); + MsiViewClose(hview); + MsiCloseHandle(hview); + MsiCloseHandle(hdb); + DeleteFileA(msifile); +} + START_TEST(db) { test_msidatabase(); @@ -5762,4 +5864,5 @@ START_TEST(db) test_carriagereturn(); test_noquotes(); test_forcecodepage(); + test_viewmodify_refresh(); }