Mike McCormack : msi: Add some test cases for "SELECT ... WHERE
condition".
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 12 07:09:49 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: bbbcc2a1be3ed3e3a498f07cfbd707186114007a
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=bbbcc2a1be3ed3e3a498f07cfbd707186114007a
Author: Mike McCormack <mike at codeweavers.com>
Date: Sun Jun 11 09:51:59 2006 +0900
msi: Add some test cases for "SELECT ... WHERE condition".
---
dlls/msi/tests/db.c | 76 ++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 63 insertions(+), 13 deletions(-)
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c
index 2ae69a4..44eecb1 100644
--- a/dlls/msi/tests/db.c
+++ b/dlls/msi/tests/db.c
@@ -48,7 +48,29 @@ static void test_msidatabase(void)
ok( res == TRUE, "Failed to delete database\n" );
}
-static void test_msiinsert(void)
+static UINT do_query(MSIHANDLE hdb, const char *query, MSIHANDLE *phrec)
+{
+ MSIHANDLE hview = 0;
+ UINT r, ret;
+
+ /* open a select query */
+ r = MsiDatabaseOpenView(hdb, query, &hview);
+ if (r != ERROR_SUCCESS)
+ return r;
+ r = MsiViewExecute(hview, 0);
+ if (r != ERROR_SUCCESS)
+ return r;
+ ret = MsiViewFetch(hview, phrec);
+ r = MsiViewClose(hview);
+ if (r != ERROR_SUCCESS)
+ return r;
+ r = MsiCloseHandle(hview);
+ if (r != ERROR_SUCCESS)
+ return r;
+ return ret;
+}
+
+void test_msiinsert(void)
{
MSIHANDLE hdb = 0, hview = 0, hrec = 0;
UINT r;
@@ -87,18 +109,21 @@ static void test_msiinsert(void)
r = MsiCloseHandle(hview);
ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
- query = "SELECT * FROM `phone`";
- r = MsiDatabaseOpenView(hdb, query, &hview);
- ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
- r = MsiViewExecute(hview, 0);
- ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
- r = MsiViewFetch(hview, &hrec);
+ query = "SELECT * FROM `phone` WHERE `id` = 1";
+ r = do_query(hdb, query, &hrec);
ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
/* check the record contains what we put in it */
r = MsiRecordGetFieldCount(hrec);
ok(r == 3, "record count wrong\n");
+ todo_wine {
+ r = MsiRecordIsNull(hrec, 0);
+ ok(r == FALSE, "field 0 not null\n");
+ r = MsiRecordGetInteger(hrec, 0);
+ ok(r == 0x138080, "field 0 contents wrong\n");
+ }
+
r = MsiRecordGetInteger(hrec, 1);
ok(r == 1, "field 1 contents wrong\n");
sz = sizeof buf;
@@ -109,14 +134,39 @@ static void test_msiinsert(void)
r = MsiRecordGetString(hrec, 3, buf, &sz);
ok(r == ERROR_SUCCESS, "field 3 content fetch failed\n");
ok(!strcmp(buf,"8675309"), "field 3 content incorrect\n");
-
- r = MsiViewClose(hview);
- ok(r == ERROR_SUCCESS, "MsiViewClose failed\n");
- r = MsiCloseHandle(hview);
+
+ r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
+
+ /* open a select query */
+ hrec = 100;
+ query = "SELECT * FROM `phone` WHERE `id` >= 10";
+ r = do_query(hdb, query, &hrec);
+ ok(r == ERROR_NO_MORE_ITEMS, "MsiViewFetch failed\n");
+ ok(hrec == 0, "hrec should be null\n");
+
r = MsiCloseHandle(hrec);
ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
+ query = "SELECT * FROM `phone` WHERE `id` < 0";
+ r = do_query(hdb, query, &hrec);
+ ok(r == ERROR_NO_MORE_ITEMS, "MsiViewFetch failed\n");
+
+ query = "SELECT * FROM `phone` WHERE `id` <= 0";
+ r = do_query(hdb, query, &hrec);
+ ok(r == ERROR_NO_MORE_ITEMS, "MsiViewFetch failed\n");
+
+ query = "SELECT * FROM `phone` WHERE `id` <> 1";
+ r = do_query(hdb, query, &hrec);
+ ok(r == ERROR_NO_MORE_ITEMS, "MsiViewFetch failed\n");
+
+ query = "SELECT * FROM `phone` WHERE `id` > 10";
+ r = do_query(hdb, query, &hrec);
+ ok(r == ERROR_NO_MORE_ITEMS, "MsiViewFetch failed\n");
+
+ r = MsiViewFetch(0, NULL);
+ ok(r == ERROR_INVALID_PARAMETER, "MsiViewFetch failed\n");
+
r = MsiDatabaseCommit(hdb);
ok(r == ERROR_SUCCESS, "MsiDatabaseCommit failed\n");
@@ -141,7 +191,7 @@ static void test_msidecomposedesc(void)
hmod = GetModuleHandle("msi.dll");
if (!hmod)
return;
- pMsiDecomposeDescriptorA = (fnMsiDecomposeDescriptorA)
+ pMsiDecomposeDescriptorA = (fnMsiDecomposeDescriptorA)
GetProcAddress(hmod, "MsiDecomposeDescriptorA");
if (!pMsiDecomposeDescriptorA)
return;
@@ -623,7 +673,7 @@ static UINT get_columns_table_type(MSIHA
if (r == field)
type = MsiRecordGetInteger( rec, 4 );
MsiCloseHandle( rec );
- }
+ }
MsiViewClose(hview);
}
More information about the wine-cvs
mailing list