From bfc1b5c15f35237e4234fca29f98079d59c4d69c Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Tue, 12 Sep 2006 14:00:06 -0700 Subject: [PATCH] msi: Add more join tests. --- dlls/msi/tests/db.c | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index 86d23898324..44a2532d922 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -1760,6 +1760,28 @@ static const struct join_res join_res_fourth[] = { "msvcp.dll.01234", "single.dll.31415" }, }; +static const struct join_res join_res_fifth[] = +{ + { "malar", "procerus" }, +}; + +static const struct join_res join_res_sixth[] = +{ + { "malar", "procerus" }, + { "malar", "procerus" }, + { "malar", "nasalis" }, + { "malar", "nasalis" }, + { "malar", "nasalis" }, + { "malar", "mentalis" }, +}; + +static const struct join_res join_res_seventh[] = +{ + { "malar", "nasalis" }, + { "malar", "nasalis" }, + { "malar", "nasalis" }, +}; + static void test_join(void) { MSIHANDLE hdb, hview, hrec; @@ -1989,6 +2011,146 @@ static void test_join(void) MsiViewClose(hview); MsiCloseHandle(hview); + + query = "SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` " + "FROM `Component`, `FeatureComponents` " + "WHERE `Component`.`Component` = 'zygomatic' " + "AND `FeatureComponents`.`Component_` = 'maxilla' " + "ORDER BY `Feature_`"; + r = MsiDatabaseOpenView(hdb, query, &hview); + todo_wine + { + ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r ); + } + + r = MsiViewExecute(hview, 0); + todo_wine + { + ok( r == ERROR_SUCCESS, "failed to execute view: %d\n", r ); + } + + i = 0; + while ((r = MsiViewFetch(hview, &hrec)) == ERROR_SUCCESS) + { + count = MsiRecordGetFieldCount( hrec ); + ok( count == 2, "Expected 2 record fields, got %d\n", count ); + + size = MAX_PATH; + r = MsiRecordGetString( hrec, 1, buf, &size ); + ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r ); + ok( !lstrcmp( buf, join_res_fifth[i].one ), + "Expected '%s', got %s\n", join_res_fifth[i].one, buf ); + + size = MAX_PATH; + r = MsiRecordGetString( hrec, 2, buf, &size ); + ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r ); + ok( !lstrcmp( buf, join_res_fifth[i].two ), + "Expected '%s', got %s\n", join_res_fifth[i].two, buf ); + + i++; + MsiCloseHandle(hrec); + } + + todo_wine + { + ok( r == ERROR_NO_MORE_ITEMS, "expected no more items: %d\n", r ); + } + + MsiViewClose(hview); + MsiCloseHandle(hview); + + query = "SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` " + "FROM `Component`, `FeatureComponents` " + "WHERE `Component` = 'zygomatic' " + "ORDER BY `Feature_`"; + r = MsiDatabaseOpenView(hdb, query, &hview); + todo_wine + { + ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r ); + } + + r = MsiViewExecute(hview, 0); + todo_wine + { + ok( r == ERROR_SUCCESS, "failed to execute view: %d\n", r ); + } + + i = 0; + while ((r = MsiViewFetch(hview, &hrec)) == ERROR_SUCCESS) + { + count = MsiRecordGetFieldCount( hrec ); + ok( count == 2, "Expected 2 record fields, got %d\n", count ); + + size = MAX_PATH; + r = MsiRecordGetString( hrec, 1, buf, &size ); + ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r ); + ok( !lstrcmp( buf, join_res_sixth[i].one ), + "Expected '%s', got %s\n", join_res_sixth[i].one, buf ); + + size = MAX_PATH; + r = MsiRecordGetString( hrec, 2, buf, &size ); + ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r ); + ok( !lstrcmp( buf, join_res_sixth[i].two ), + "Expected '%s', got %s\n", join_res_sixth[i].two, buf ); + + i++; + MsiCloseHandle(hrec); + } + + todo_wine + { + ok( r == ERROR_NO_MORE_ITEMS, "expected no more items: %d\n", r ); + } + + MsiViewClose(hview); + MsiCloseHandle(hview); + + query = "SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` " + "FROM `Component`, `FeatureComponents` " + "WHERE `Component` = 'zygomatic' " + "AND `Feature_` = 'nasalis' " + "ORDER BY `Feature_`"; + r = MsiDatabaseOpenView(hdb, query, &hview); + todo_wine + { + ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r ); + } + + r = MsiViewExecute(hview, 0); + todo_wine + { + ok( r == ERROR_SUCCESS, "failed to execute view: %d\n", r ); + } + + i = 0; + while ((r = MsiViewFetch(hview, &hrec)) == ERROR_SUCCESS) + { + count = MsiRecordGetFieldCount( hrec ); + ok( count == 2, "Expected 2 record fields, got %d\n", count ); + + size = MAX_PATH; + r = MsiRecordGetString( hrec, 1, buf, &size ); + ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r ); + ok( !lstrcmp( buf, join_res_seventh[i].one ), + "Expected '%s', got %s\n", join_res_seventh[i].one, buf ); + + size = MAX_PATH; + r = MsiRecordGetString( hrec, 2, buf, &size ); + ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r ); + ok( !lstrcmp( buf, join_res_seventh[i].two ), + "Expected '%s', got %s\n", join_res_seventh[i].two, buf ); + + i++; + MsiCloseHandle(hrec); + } + + todo_wine + { + ok( r == ERROR_NO_MORE_ITEMS, "expected no more items: %d\n", r ); + } + + MsiViewClose(hview); + MsiCloseHandle(hview); MsiCloseHandle(hdb); DeleteFile(msifile); } -- 2.11.4.GIT