msi 3: Add more tests for the _Streams table
James Hawkins
truiken at gmail.com
Wed Aug 30 20:10:35 CDT 2006
Hi,
Changelog:
* Add more tests for the _Streams table.
dlls/msi/tests/db.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 89 insertions(+), 1 deletions(-)
--
James Hawkins
-------------- next part --------------
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c
index 6b5336d..3d0a0f2 100644
--- a/dlls/msi/tests/db.c
+++ b/dlls/msi/tests/db.c
@@ -946,10 +946,25 @@ static void test_longstrings(void)
MsiCloseHandle(hdb);
DeleteFile(msifile);
}
+
+static void create_file(const CHAR *name)
+{
+ HANDLE file;
+ DWORD written;
+
+ file = CreateFileA(name, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
+ ok(file != INVALID_HANDLE_VALUE, "Failure to open file %s\n", name);
+ WriteFile(file, name, strlen(name), &written, NULL);
+ WriteFile(file, "\n", strlen("\n"), &written, NULL);
+ CloseHandle(file);
+}
static void test_streamtable(void)
{
- MSIHANDLE hdb = 0, rec;
+ MSIHANDLE hdb = 0, rec, view;
+ char file[MAX_PATH];
+ char buf[MAX_PATH];
+ DWORD size;
UINT r;
hdb = create_db();
@@ -981,6 +996,79 @@ static void test_streamtable(void)
}
MsiCloseHandle( rec );
+
+ /* insert a file into the _Streams table */
+ create_file( "test.txt" );
+
+ rec = MsiCreateRecord( 2 );
+ MsiRecordSetString( rec, 1, "data" );
+
+ r = MsiRecordSetStream( rec, 2, "test.txt" );
+ ok( r == ERROR_SUCCESS, "Failed to add stream data to the record: %d\n", r);
+
+ DeleteFile("test.txt");
+
+ r = MsiDatabaseOpenView( hdb,
+ "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &view );
+ todo_wine
+ {
+ ok( r == ERROR_SUCCESS, "Failed to open database view: %d\n", r);
+ }
+
+ r = MsiViewExecute( view, rec );
+ todo_wine
+ {
+ ok( r == ERROR_SUCCESS, "Failed to execute view: %d\n", r);
+ }
+
+ MsiCloseHandle( rec );
+ MsiCloseHandle( view );
+
+ r = MsiDatabaseOpenView( hdb,
+ "SELECT `Name`, `Data` FROM `_Streams`", &view );
+ todo_wine
+ {
+ ok( r == ERROR_SUCCESS, "Failed to open database view: %d\n", r);
+ }
+
+ r = MsiViewExecute( view, 0 );
+ todo_wine
+ {
+ ok( r == ERROR_SUCCESS, "Failed to execute view: %d\n", r);
+ }
+
+ r = MsiViewFetch( view, &rec );
+ todo_wine
+ {
+ ok( r == ERROR_SUCCESS, "Failed to fetch record: %d\n", r);
+ }
+
+ size = MAX_PATH;
+ r = MsiRecordGetString( rec, 1, file, &size );
+ todo_wine
+ {
+ ok( r == ERROR_SUCCESS, "Failed to get string: %d\n", r);
+ ok( !lstrcmp(file, "data"), "Expected 'data', got %s\n", file);
+ }
+
+ size = MAX_PATH;
+ memset(buf, 0, MAX_PATH);
+ r = MsiRecordReadStream( rec, 2, buf, &size );
+ todo_wine
+ {
+ ok( r == ERROR_SUCCESS, "Failed to get stream: %d\n", r);
+ ok( !lstrcmp(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf);
+ }
+
+ MsiCloseHandle( rec );
+
+ r = MsiViewFetch( view, &rec );
+ todo_wine
+ {
+ ok( r == ERROR_NO_MORE_ITEMS, "Expected ERROR_NO_MORE_ITEMS, got %d\n", r);
+ }
+
+ MsiCloseHandle( view );
MsiCloseHandle( hdb );
DeleteFile(msifile);
}
--
1.4.2
More information about the wine-patches
mailing list