Benjamin Arai : msi: Adds test to check if basic "JOIN" operator without " WHERE" clause returns the correct results.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Sep 25 09:46:36 CDT 2006


Module: wine
Branch: master
Commit: a35ff56580329de3a1dc2aa47029568550c23ba6
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=a35ff56580329de3a1dc2aa47029568550c23ba6

Author: Benjamin Arai <me at benjaminarai.com>
Date:   Wed Sep 20 16:59:19 2006 -0700

msi: Adds test to check if basic "JOIN" operator without "WHERE" clause returns the correct results.

---

 dlls/msi/tests/db.c |   64 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c
index 400e920..d75d44e 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_se
     { "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);
 }




More information about the wine-cvs mailing list