From a35ff56580329de3a1dc2aa47029568550c23ba6 Mon Sep 17 00:00:00 2001 From: Benjamin Arai Date: Wed, 20 Sep 2006 16:59:19 -0700 Subject: [PATCH] msi: Adds test to check if basic "JOIN" operator without "WHERE" clause returns the correct results. --- dlls/msi/tests/db.c | 64 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index 400e9203a90..d75d44ed24d 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -1776,6 +1776,14 @@ struct join_res const CHAR two[MAX_PATH]; }; +struct join_res_4col +{ + const CHAR one[MAX_PATH]; + const CHAR two[MAX_PATH]; + const CHAR three[MAX_PATH]; + const CHAR four[MAX_PATH]; +}; + static const struct join_res join_res_first[] = { { "alveolar", "procerus" }, @@ -1824,6 +1832,16 @@ static const struct join_res join_res_seventh[] = { "malar", "nasalis" }, }; +static const struct join_res_4col join_res_eighth[] = +{ + { "msvcp.dll", "msvcp.dll.01234", "msvcp.dll.01234", "abcdefgh" }, + { "msvcr.dll", "msvcr.dll.56789", "msvcp.dll.01234", "abcdefgh" }, + { "msvcp.dll", "msvcp.dll.01234", "msvcr.dll.56789", "ijklmnop" }, + { "msvcr.dll", "msvcr.dll.56789", "msvcr.dll.56789", "ijklmnop" }, + { "msvcp.dll", "msvcp.dll.01234", "single.dll.31415", "msvcp.dll" }, + { "msvcr.dll", "msvcr.dll.56789", "single.dll.31415", "msvcp.dll" }, +}; + static void test_join(void) { MSIHANDLE hdb, hview, hrec; @@ -2222,6 +2240,52 @@ static void test_join(void) MsiViewClose(hview); MsiCloseHandle(hview); + + query = "SELECT `StdDlls`.`File`, `Binary`.`Data` " + "FROM `StdDlls`, `Binary` "; + 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_eighth[i].one ), + "For (row %ld, column 1) expected '%s', got %s\n", i, join_res_eighth[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_eighth[i].four ), + "For (row %ld, column 2) expected '%s', got %s\n", i, join_res_eighth[i].four, buf ); + + i++; + MsiCloseHandle(hrec); + } + + todo_wine + { + ok( i == 6, "Expected 6 rows, got %ld\n", i ); + ok( r == ERROR_NO_MORE_ITEMS, "expected no more items: %d\n", r ); + } + + MsiViewClose(hview); + MsiCloseHandle(hview); + MsiCloseHandle(hdb); DeleteFile(msifile); }