2025-11-28 00:35:46 +09:00

15435 lines
445 KiB
C++

//--------------------------------------------------------------------
// Microsoft OLE DB Test
//
// Copyright 1995-2000 Microsoft Corporation.
//
// @doc
//
// @module ICMDPRPTS.CPP | The test module for ICommandProperties
//
#include "modstandard.hpp" // Standard headers, precompiled in modcore.cpp
#define DBINITCONSTANTS // Must be defined to initialize constants in OLEDB.H
#define INITGUID
#include "icmdprpt.h" // Testcase's header
#include "extralib.h"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Module Values
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// {{ TCW_MODULE_GLOBALS
DECLARE_MODULE_CLSID = { 0xce185360, 0x0d97, 0x11cf, { 0xac, 0x3b, 0x00, 0xaa, 0x00, 0x4a, 0x99, 0xe0 }};
DECLARE_MODULE_NAME("ICommandProperties");
DECLARE_MODULE_OWNER("Microsoft");
DECLARE_MODULE_DESCRIP("Test module for ICommandProperties");
DECLARE_MODULE_VERSION(835645043);
// }}
//--------------------------------------------------------------------------------
// The globals for this test module
//--------------------------------------------------------------------------------
//The global pointer for a CTable object so that a table will not be created and dropped
//got each test case
CTable *g_pCTable=NULL;
//A pointer to IDBCreateCommand pointer
IDBCreateCommand *g_pIDBCreateCommand=NULL;
//Provider Name
WCHAR g_pwszProviderName[100] = L"";
//Extra rowset PropSets
ULONG g_ulExtraROWProp=0;
ULONG g_ulPropertyCount=0;
//Global for &DBPROPERTYSUPPORT attributes
struct DBPrptAttr
{
const GUID *pGuidPropertySet; //The GUID of the property set
DBPROPID dwPropertyID; //The ID of the property
BOOL fSupported; //Whether the property is supported
BOOL fSettable; //Whether the property is settable
BOOL fColumn; //Whether the property is applicable to a column
BOOL fColumnOK; //Applies to all columns
VARTYPE vtType; //The type of the property
VARIANT vDefault; //The default of the property
WCHAR wszDescription[DESCRIPTION_SIZE]; //The description of the property
}g_rgDBProperties[]={
//
//pGuidPropertySet dwPropertyID fSupported fSettable fColumn fColumnOK vtType vDefault Description
//================ ============ ========== ========= ======= ====== ======== ============
&DBPROPSET_COLUMN, DBPROP_COL_AUTOINCREMENT, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Autoincrement\0",
&DBPROPSET_COLUMN, DBPROP_COL_DEFAULT, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Default\0",
&DBPROPSET_COLUMN, DBPROP_COL_DESCRIPTION, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Description\0",
&DBPROPSET_COLUMN, DBPROP_COL_FIXEDLENGTH, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Fixed Length\0",
&DBPROPSET_COLUMN, DBPROP_COL_INCREMENT, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Increment\0",
&DBPROPSET_COLUMN, DBPROP_COL_ISLONG, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Is Long\0",
&DBPROPSET_COLUMN, DBPROP_COL_NULLABLE, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Nullable\0",
&DBPROPSET_COLUMN, DBPROP_COL_PRIMARYKEY, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Primary Key\0",
&DBPROPSET_COLUMN, DBPROP_COL_SEED, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Seed\0",
&DBPROPSET_COLUMN, DBPROP_COL_UNIQUE, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Unique\0",
&DBPROPSET_COLUMN, DBPROP_COLUMNLCID, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Column LCID\0",
&DBPROPSET_DATASOURCE, DBPROP_CURRENTCATALOG, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Current Catalog\0",
&DBPROPSET_DATASOURCE, DBPROP_MULTIPLECONNECTIONS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Multiple Connections\0",
&DBPROPSET_DATASOURCE, DBPROP_RESETDATASOURCE, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Reset Datasource\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_ACTIVESESSIONS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Active Sessions\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_ALTERCOLUMN, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Alter Column Support\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_ASYNCTXNABORT, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Asynchable Abort\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_ASYNCTXNCOMMIT, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Asynchable Commit\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_BYREFACCESSORS, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Pass By Ref Accessors\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_CATALOGLOCATION, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Catalog Location\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_CATALOGTERM, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Catalog Term\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_CATALOGUSAGE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Catalog Usage\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_COLUMNDEFINITION, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Column Definition\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_COMSERVICES, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"COM Service Support\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_CONCATNULLBEHAVIOR, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"NULL Concatenation Behavior\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_CONNECTIONSTATUS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Connection Status\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_DATASOURCENAME, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Data Source Name\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_DATASOURCEREADONLY, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Read-Only Data Source\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_DATASOURCE_TYPE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Data Source Type\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_DBMSNAME, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"DBMS Name\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_DBMSVER, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"DBMS Version\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_DSOTHREADMODEL, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Data Source Object Threading Model\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_GENERATEURL, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"URL Generation\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_GROUPBY, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"GROUP BY Support\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_HETEROGENEOUSTABLES, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Heterogeneous Table Support\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_IDENTIFIERCASE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Identifier Case Sensitivity\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_MAXINDEXSIZE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Maximum Index Size\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_MAXOPENCHAPTERS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Maximum Open Chapters\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_MAXROWSIZE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Maximum Row Size\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_MAXROWSIZEINCLUDESBLOB, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Maximum Row Size Includes BLOB\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_MAXTABLESINSELECT, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Maximum Tables in SELECT\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_MULTIPLEPARAMSETS, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Multiple Parameter Sets\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_MULTIPLERESULTS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Multiple Results\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_MULTIPLESTORAGEOBJECTS, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Multiple Storage Objects\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_MULTITABLEUPDATE, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Multi-Table Update\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_NULLCOLLATION, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"NULL Collation Order\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_OLEOBJECTS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"OLE Object Support\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_OPENROWSETSUPPORT, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Open Rowset Support\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_ORDERBYCOLUMNSINSELECT, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"ORDER BY Columns in Select List\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_OUTPUTPARAMETERAVAILABILITY, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Output Parameter Availability\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_PERSISTENTIDTYPE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Persistent ID Type\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_PREPAREABORTBEHAVIOR, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Prepare Abort Behavior\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_PREPARECOMMITBEHAVIOR, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Prepare Commit Behavior\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_PROCEDURETERM, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Procedure Term\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_PROVIDERFRIENDLYNAME, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Provider Friendly Name\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_PROVIDERFILENAME, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Provider Name\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_PROVIDERMEMORY, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Provider Owned Memory\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_PROVIDEROLEDBVER, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"OLE DB Version\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_PROVIDERVER, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Provider Version\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_QUOTEDIDENTIFIERCASE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Quoted Identifier Sensitivity\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_ROWSETCONVERSIONSONCOMMAND, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Rowset Conversions on Command\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_SCHEMATERM, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Schema Term\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_SCHEMAUSAGE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Schema Usage\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_SERVERNAME, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Server Name\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_SQLSUPPORT, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"SQL Support\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_STRUCTUREDSTORAGE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Structured Storage\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_SUBQUERIES, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Subquery Support\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_SUPPORTEDTXNDDL, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Transaction DDL\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_SUPPORTEDTXNISOLEVELS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Isolation Levels\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_SUPPORTEDTXNISORETAIN, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Isolation Retention\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_TABLETERM, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Table Term\0",
&DBPROPSET_DATASOURCEINFO, DBPROP_USERNAME, FALSE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"User Name\0",
&DBPROPSET_INDEX, DBPROP_INDEX_AUTOUPDATE, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Auto-Update\0",
&DBPROPSET_INDEX, DBPROP_INDEX_CLUSTERED, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Clustered\0",
&DBPROPSET_INDEX, DBPROP_INDEX_FILLFACTOR, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Fill Factor\0",
&DBPROPSET_INDEX, DBPROP_INDEX_INITIALSIZE, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Initial Size\0",
&DBPROPSET_INDEX, DBPROP_INDEX_NULLCOLLATION, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"NULL Collation\0",
&DBPROPSET_INDEX, DBPROP_INDEX_NULLS, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"NULL Keys\0",
&DBPROPSET_INDEX, DBPROP_INDEX_PRIMARYKEY, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Primary Key\0",
&DBPROPSET_INDEX, DBPROP_INDEX_SORTBOOKMARKS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Sort Bookmarks\0",
&DBPROPSET_INDEX, DBPROP_INDEX_TEMPINDEX, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Temporary Index\0",
&DBPROPSET_INDEX, DBPROP_INDEX_TYPE, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Index Type\0",
&DBPROPSET_INDEX, DBPROP_INDEX_UNIQUE, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Unique\0",
&DBPROPSET_DBINIT, DBPROP_AUTH_CACHE_AUTHINFO, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Cache Authentication\0",
&DBPROPSET_DBINIT, DBPROP_AUTH_ENCRYPT_PASSWORD, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Encrypt Password\0",
&DBPROPSET_DBINIT, DBPROP_AUTH_INTEGRATED, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Integrated Security\0",
&DBPROPSET_DBINIT, DBPROP_AUTH_MASK_PASSWORD, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Mask Password\0",
&DBPROPSET_DBINIT, DBPROP_AUTH_PASSWORD, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Password\0",
&DBPROPSET_DBINIT, DBPROP_AUTH_PERSIST_ENCRYPTED, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Persist Encrypted\0",
&DBPROPSET_DBINIT, DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Persist Security Info\0",
&DBPROPSET_DBINIT, DBPROP_AUTH_USERID, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"User ID\0",
&DBPROPSET_DBINIT, DBPROP_INIT_ASYNCH, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Asynchronous Processing\0",
&DBPROPSET_DBINIT, DBPROP_INIT_BINDFLAGS, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Bind Flags\0",
&DBPROPSET_DBINIT, DBPROP_INIT_CATALOG, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Initial Catalog\0",
&DBPROPSET_DBINIT, DBPROP_INIT_DATASOURCE, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Data Source\0",
&DBPROPSET_DBINIT, DBPROP_INIT_GENERALTIMEOUT, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"General Timeout\0",
#ifdef _WIN64
&DBPROPSET_DBINIT, DBPROP_INIT_HWND, FALSE, TRUE, FALSE, FALSE, VT_I8, {VT_EMPTY,0,0,0,0}, L"Window Handle\0",
#else
&DBPROPSET_DBINIT, DBPROP_INIT_HWND, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Window Handle\0",
#endif
&DBPROPSET_DBINIT, DBPROP_INIT_IMPERSONATION_LEVEL, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Impersonation Level\0",
&DBPROPSET_DBINIT, DBPROP_INIT_LCID, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Locale Identifier\0",
&DBPROPSET_DBINIT, DBPROP_INIT_LOCATION, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Location\0",
&DBPROPSET_DBINIT, DBPROP_INIT_LOCKOWNER, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Lock Owner\0",
&DBPROPSET_DBINIT, DBPROP_INIT_MODE, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Mode\0",
&DBPROPSET_DBINIT, DBPROP_INIT_OLEDBSERVICES, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"OLE DB Services\0",
&DBPROPSET_DBINIT, DBPROP_INIT_PROMPT, FALSE, TRUE, FALSE, FALSE, VT_I2, {VT_EMPTY,0,0,0,0}, L"Prompt\0",
&DBPROPSET_DBINIT, DBPROP_INIT_PROTECTION_LEVEL, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Protection Level\0",
&DBPROPSET_DBINIT, DBPROP_INIT_PROVIDERSTRING, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Extended Properties\0",
&DBPROPSET_DBINIT, DBPROP_INIT_TIMEOUT, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Connect Timeout\0",
&DBPROPSET_ROWSET, DBPROP_ABORTPRESERVE, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Preserve on Abort\0",
&DBPROPSET_ROWSET, DBPROP_ACCESSORDER, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Access Order\0",
&DBPROPSET_ROWSET, DBPROP_APPENDONLY, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Append-Only Rowset\0",
&DBPROPSET_ROWSET, DBPROP_BLOCKINGSTORAGEOBJECTS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Blocking Storage Objects\0",
&DBPROPSET_ROWSET, DBPROP_BOOKMARKINFO, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Bookmark Information\0",
&DBPROPSET_ROWSET, DBPROP_BOOKMARKS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Use Bookmarks\0",
&DBPROPSET_ROWSET, DBPROP_BOOKMARKSKIPPED, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Skip Deleted Bookmarks\0",
&DBPROPSET_ROWSET, DBPROP_BOOKMARKTYPE, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Bookmark Type\0",
&DBPROPSET_ROWSET, DBPROP_CACHEDEFERRED, FALSE, TRUE, TRUE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Cache Deferred Columns\0",
&DBPROPSET_ROWSET, DBPROP_CANFETCHBACKWARDS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Fetch Backwards\0",
&DBPROPSET_ROWSET, DBPROP_CANHOLDROWS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Hold Rows\0",
&DBPROPSET_ROWSET, DBPROP_CANSCROLLBACKWARDS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Scroll Backwards\0",
&DBPROPSET_ROWSET, DBPROP_CHANGEINSERTEDROWS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Change Inserted Rows\0",
&DBPROPSET_ROWSET, DBPROP_CLIENTCURSOR, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Client Cursor\0",
&DBPROPSET_ROWSET, DBPROP_COLUMNRESTRICT, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Column Privileges\0",
&DBPROPSET_ROWSET, DBPROP_COMMANDTIMEOUT, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Command Time Out\0",
&DBPROPSET_ROWSET, DBPROP_COMMITPRESERVE, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Preserve on Commit\0",
&DBPROPSET_ROWSET, DBPROP_DEFERRED, FALSE, TRUE, TRUE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Defer Column\0",
&DBPROPSET_ROWSET, DBPROP_DELAYSTORAGEOBJECTS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Delay Storage Object Updates\0",
&DBPROPSET_ROWSET, DBPROP_FINDCOMPAREOPS, FALSE, TRUE, TRUE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Find Operations\0",
&DBPROPSET_ROWSET, DBPROP_HIDDENCOLUMNS, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Hidden Columns\0",
&DBPROPSET_ROWSET, DBPROP_IMMOBILEROWS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Immobile Rows\0",
&DBPROPSET_ROWSET, DBPROP_LITERALBOOKMARKS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Literal Bookmarks\0",
&DBPROPSET_ROWSET, DBPROP_LITERALIDENTITY, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Literal Row Identity\0",
&DBPROPSET_ROWSET, DBPROP_LOCKMODE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Lock Mode\0",
&DBPROPSET_ROWSET, DBPROP_MAXOPENROWS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Maximum Open Rows\0",
&DBPROPSET_ROWSET, DBPROP_MAXPENDINGROWS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Maximum Pending Rows\0",
&DBPROPSET_ROWSET, DBPROP_MAXROWS, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Maximum Rows\0",
&DBPROPSET_ROWSET, DBPROP_MAYWRITECOLUMN, FALSE, TRUE, TRUE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Column Writable\0",
&DBPROPSET_ROWSET, DBPROP_MEMORYUSAGE, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Memory Usage\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFICATIONGRANULARITY, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Notification Granularity\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFICATIONPHASES, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Notification Phases\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYCOLUMNSET, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Column Set Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWDELETE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Row Delete Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWFIRSTCHANGE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Row First Change Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWINSERT, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Row Insert Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWRESYNCH, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Row Resynchronization Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWSETCHANGED, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Rowset Change Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Rowset Fetch Position Change Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWSETRELEASE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Rowset Release Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWUNDOCHANGE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Row Undo Change Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWUNDODELETE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Row Undo Delete Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWUNDOINSERT, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Row Undo Insert Notification\0",
&DBPROPSET_ROWSET, DBPROP_NOTIFYROWUPDATE, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Row Update Notification\0",
&DBPROPSET_ROWSET, DBPROP_ORDEREDBOOKMARKS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Bookmarks Ordered\0",
&DBPROPSET_ROWSET, DBPROP_OTHERINSERT, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Others' Inserts Visible\0",
&DBPROPSET_ROWSET, DBPROP_OTHERUPDATEDELETE, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Others' Changes Visible\0",
&DBPROPSET_ROWSET, DBPROP_OWNINSERT, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Own Inserts Visible\0",
&DBPROPSET_ROWSET, DBPROP_OWNUPDATEDELETE, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Own Changes Visible\0",
&DBPROPSET_ROWSET, DBPROP_QUICKRESTART, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Quick Restart\0",
&DBPROPSET_ROWSET, DBPROP_REENTRANTEVENTS, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Reentrant Events\0",
&DBPROPSET_ROWSET, DBPROP_REMOVEDELETED, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Remove Deleted Rows\0",
&DBPROPSET_ROWSET, DBPROP_REPORTMULTIPLECHANGES, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Report Multiple Changes\0",
&DBPROPSET_ROWSET, DBPROP_RETURNPENDINGINSERTS, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Return Pending Inserts\0",
&DBPROPSET_ROWSET, DBPROP_ROW_BULKOPS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Bulk Operations\0",
&DBPROPSET_ROWSET, DBPROP_ROWRESTRICT, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Row Privileges\0",
&DBPROPSET_ROWSET, DBPROP_ROWSET_ASYNCH, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Asynchronous Rowset Processing\0",
&DBPROPSET_ROWSET, DBPROP_ROWTHREADMODEL, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Row Threading Model\0",
&DBPROPSET_ROWSET, DBPROP_SERVERCURSOR, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Server Cursor\0",
&DBPROPSET_ROWSET, DBPROP_SERVERDATAONINSERT, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Server Data on Insert\0",
&DBPROPSET_ROWSET, DBPROP_STORAGEFLAGS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Storage Flags\0",
&DBPROPSET_ROWSET, DBPROP_STRONGIDENTITY, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Strong Row Identity\0",
&DBPROPSET_ROWSET, DBPROP_TRANSACTEDOBJECT, FALSE, TRUE, TRUE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Objects Transacted\0",
&DBPROPSET_ROWSET, DBPROP_UNIQUEROWS, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Unique Rows\0",
&DBPROPSET_ROWSET, DBPROP_UPDATABILITY, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Updatability\0",
&DBPROPSET_ROWSET, DBPROP_IAccessor, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IAccessor\0",
&DBPROPSET_ROWSET, DBPROP_IBindResource, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IBindResource\0",
&DBPROPSET_ROWSET, DBPROP_IChapteredRowset, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IChapteredRowset\0",
&DBPROPSET_ROWSET, DBPROP_IColumnsInfo, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IColumnsInfo\0",
&DBPROPSET_ROWSET, DBPROP_IColumnsInfo2, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IColumnsInfo2\0",
&DBPROPSET_ROWSET, DBPROP_IColumnsRowset, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IColumnsRowset\0",
&DBPROPSET_ROWSET, DBPROP_IConnectionPointContainer, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IConnectionPointContainer\0",
&DBPROPSET_ROWSET, DBPROP_IConvertType, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IConvertType\0",
&DBPROPSET_ROWSET, DBPROP_ICreateRow, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"ICreateRow\0",
&DBPROPSET_ROWSET, DBPROP_IDBAsynchStatus, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IDBAsynchStatus\0",
&DBPROPSET_ROWSET, DBPROP_IDBBinderProperties, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IDBBinderProperties\0",
&DBPROPSET_ROWSET, DBPROP_IGetRow, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IGetRow\0",
&DBPROPSET_ROWSET, DBPROP_IGetSession, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IGetSession\0",
&DBPROPSET_ROWSET, DBPROP_IGetSourceRow, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IGetSourceRow\0",
&DBPROPSET_ROWSET, DBPROP_IMultipleResults, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IMultipleResults\0",
&DBPROPSET_ROWSET, DBPROP_IParentRowset, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IParentRowset\0",
&DBPROPSET_ROWSET, DBPROP_IRegisterProvider, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRegisterProvider\0",
&DBPROPSET_ROWSET, DBPROP_IRow, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRow\0",
&DBPROPSET_ROWSET, DBPROP_IRowChange, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowChange\0",
&DBPROPSET_ROWSET, DBPROP_IRowSchemaChange, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowSchemaChange\0",
&DBPROPSET_ROWSET, DBPROP_IRowset, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowset\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetChange, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetChange\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetCurrentIndex, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetCurrentIndex\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetFind, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetFind\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetIdentity, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetIdentity\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetIndex, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetIndex\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetInfo, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetInfo\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetLocate, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetLocate\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetRefresh, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetRefresh\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetResynch, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetResynch\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetScroll, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetScroll\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetUpdate, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetUpdate\0",
&DBPROPSET_ROWSET, DBPROP_IRowsetView, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetView\0",
&DBPROPSET_ROWSET, DBPROP_IScopedOperations, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IScopedOperations\0",
&DBPROPSET_ROWSET, DBPROP_ISupportErrorInfo, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"ISupportErrorInfo\0",
&DBPROPSET_ROWSET, DBPROP_ILockBytes, FALSE, TRUE, TRUE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"ILockBytes\0",
&DBPROPSET_ROWSET, DBPROP_ISequentialStream, FALSE, TRUE, TRUE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"ISequentialStream\0",
&DBPROPSET_ROWSET, DBPROP_IStorage, FALSE, TRUE, TRUE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IStorage\0",
&DBPROPSET_ROWSET, DBPROP_IStream, FALSE, TRUE, TRUE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IStream\0",
&DBPROPSET_SESSION, DBPROP_SESS_AUTOCOMMITISOLEVELS, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Autocommit Isolation Levels\0",
&DBPROPSET_TABLE, DBPROP_TBL_TEMPTABLE, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Temporary Table\0",
&DBPROPSET_TRUSTEE, DBPROP_TRUSTEE_USERNAME, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Trustee User Name\0",
&DBPROPSET_TRUSTEE, DBPROP_TRUSTEE_AUTHENTICATION, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Trustee Authentication\0",
&DBPROPSET_TRUSTEE, DBPROP_TRUSTEE_NEWAUTHENTICATION, FALSE, TRUE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"New Trustee Authentication\0",
&DBPROPSET_VIEW, DBPROP_FILTERCOMPAREOPS, FALSE, TRUE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Filter Operations\0",
&DBPROPSET_VIEW, DBPROP_IAccessor, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IAccessor\0",
&DBPROPSET_VIEW, DBPROP_IColumnsInfo, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IColumnsInfo\0",
&DBPROPSET_VIEW, DBPROP_ISupportErrorInfo, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"ISupportErrorInfo\0",
&DBPROPSET_VIEW, DBPROP_IViewChapter, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IViewChapter\0",
&DBPROPSET_VIEW, DBPROP_IViewFilter, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IViewFilter\0",
&DBPROPSET_VIEW, DBPROP_IViewRowset, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IViewRowset\0",
&DBPROPSET_VIEW, DBPROP_IViewSort, FALSE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IViewSort\0",
&DBPROPSET_VIEW, DBPROP_MAXORSINFILTER, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Maximum OR Conditions\0",
&DBPROPSET_VIEW, DBPROP_MAXSORTCOLUMNS, FALSE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Maximum Sort Columns\0",
&DBPROPSET_VIEW, DBPROP_SORTONINDEX, FALSE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Sort on Index\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_ACCESSIBLEPROCEDURES,TRUE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Accessible Procedures\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_ACCESSIBLETABLES, TRUE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Accessible Tables\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_ODBCSQLOPTIEF, TRUE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Integrity Enhancement Facility\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_OJCAPABILITY, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Outer Join Capabilities\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_PROCEDURES, TRUE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Stored Procedures\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_DRIVERNAME, TRUE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Driver Name\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_DRIVERVER, TRUE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Driver Version\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_DRIVERODBCVER, TRUE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Driver ODBC Version\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_LIKEESCAPECLAUSE, TRUE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Like Escape Clause\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_SPECIALCHARACTERS, TRUE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Special Characters\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_MAXCOLUMNSINGROUPBY,TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Max Columns in Group By\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_MAXCOLUMNSININDEX, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Max Columns in Index\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_MAXCOLUMNSINORDERBY,TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Max Columns in Order By\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_MAXCOLUMNSINSELECT, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Max Columns in Select\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_MAXCOLUMNSINTABLE, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Max Columns in Table\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_NUMERICFUNCTIONS, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Numeric Functions\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_ODBCSQLCONFORMANCE, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"SQL Grammar Support\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_OUTERJOINS, TRUE, FALSE, FALSE, FALSE, VT_BSTR, {VT_EMPTY,0,0,0,0}, L"Outer Joins\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_STRINGFUNCTIONS, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"String Functions\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_SYSTEMFUNCTIONS, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"System Functions\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_TIMEDATEFUNCTIONS, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Time/Date Functions\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_FILEUSAGE, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"File Usage\0",
&DBPROPSET_PROVIDERDATASOURCEINFO, KAGPROP_ACTIVESTATEMENTS, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"Active Statements\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_QUERYBASEDUPDATES, TRUE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Query Based Updates/Deletes/Inserts\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_MARSHALLABLE, TRUE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Generate a Rowset that can be marshalled\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_POSITIONONNEWROW, TRUE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Position on the last row after insert\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_IRowsetChangeExtInfo,TRUE, FALSE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"IRowsetChangeExtInfo\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_CURSOR, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"ODBC Cursor Type\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_CONCURRENCY, TRUE, FALSE, FALSE, FALSE, VT_I4, {VT_EMPTY,0,0,0,0}, L"ODBC Concurrency Type\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_BLOBSONFOCURSOR, TRUE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"BLOB accessibility on Forward-Only cursor\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_INCLUDENONEXACT, TRUE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Include SQL_FLOAT, SQL_DOUBLE, and SQL_REAL in QBU where clauses\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_FORCESSFIREHOSEMODE,TRUE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Force SQL Server Firehose Mode cursor\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_FORCENOPARAMETERREBIND,TRUE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Force no parameter rebinding when executing a command\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_FORCENOPREPARE, TRUE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Force no command preparation when executing a parameterized command\0",
&DBPROPSET_PROVIDERROWSET, KAGPROP_FORCENOREEXECUTE, TRUE, TRUE, FALSE, FALSE, VT_BOOL, {VT_EMPTY,0,0,0,0}, L"Force no command reexecution when failure to satisfy all required properties\0",
};
ULONG g_cDBProperties = sizeof(g_rgDBProperties)/sizeof(g_rgDBProperties[0]);
//Indexes to g_rgDBProperties[] array. Need parenthese in the code.
//Can not add parenthese here, exceeds compiler limit.
const ULONG IDX_COL_AUTOINCREMENT =(ULONG)0L;
const ULONG IDX_COL_DEFAULT =IDX_COL_AUTOINCREMENT+1;
const ULONG IDX_COL_DESCRIPTION =IDX_COL_DEFAULT+1;
const ULONG IDX_COL_FIXEDLENGTH =IDX_COL_DESCRIPTION+1;
const ULONG IDX_COL_INCREMENT =IDX_COL_FIXEDLENGTH+1;
const ULONG IDX_COL_ISLONG =IDX_COL_INCREMENT+1;
const ULONG IDX_COL_NULLABLE =IDX_COL_ISLONG+1;
const ULONG IDX_COL_PRIMARYKEY =IDX_COL_NULLABLE+1;
const ULONG IDX_COL_SEED =IDX_COL_PRIMARYKEY+1;
const ULONG IDX_COL_UNIQUE =IDX_COL_SEED+1;
const ULONG IDX_COLUMNLCID =IDX_COL_UNIQUE+1;
const ULONG IDX_CURRENTCATALOG =IDX_COLUMNLCID+1;
const ULONG IDX_MULTIPLECONNECTIONS =IDX_CURRENTCATALOG+1;
const ULONG IDX_RESETDATASOURCE =IDX_MULTIPLECONNECTIONS+1;
const ULONG IDX_ACTIVESESSIONS =IDX_RESETDATASOURCE+1;
const ULONG IDX_ALTERCOLUMN =IDX_ACTIVESESSIONS+1;
const ULONG IDX_ASYNCTXNABORT =IDX_ALTERCOLUMN+1;
const ULONG IDX_ASYNCTXNCOMMIT =IDX_ASYNCTXNABORT+1;
const ULONG IDX_BYREFACCESSORS =IDX_ASYNCTXNCOMMIT+1;
const ULONG IDX_CATALOGLOCATION =IDX_BYREFACCESSORS+1;
const ULONG IDX_CATALOGTERM =IDX_CATALOGLOCATION+1;
const ULONG IDX_CATALOGUSAGE =IDX_CATALOGTERM+1;
const ULONG IDX_COLUMNDEFINITION =IDX_CATALOGUSAGE+1;
const ULONG IDX_COMSERVICES =IDX_COLUMNDEFINITION+1;
const ULONG IDX_CONCATNULLBEHAVIOR =IDX_COMSERVICES+1;
const ULONG IDX_CONNECTIONSTATUS =IDX_CONCATNULLBEHAVIOR+1;
const ULONG IDX_DATASOURCENAME =IDX_CONNECTIONSTATUS+1;
const ULONG IDX_DATASOURCEREADONLY =IDX_DATASOURCENAME+1;
const ULONG IDX_DATASOURCETYPE =IDX_DATASOURCEREADONLY+1;
const ULONG IDX_DBMSNAME =IDX_DATASOURCETYPE+1;
const ULONG IDX_DBMSVER =IDX_DBMSNAME+1;
const ULONG IDX_DSOTHREADMODEL =IDX_DBMSVER+1;
const ULONG IDX_GENERATEURL =IDX_DSOTHREADMODEL+1;
const ULONG IDX_GROUPBY =IDX_GENERATEURL+1;
const ULONG IDX_HETEROGENEOUSTABLES =IDX_GROUPBY+1;
const ULONG IDX_IDENTIFIERCASE =IDX_HETEROGENEOUSTABLES+1;
const ULONG IDX_MAXINDEXSIZE =IDX_IDENTIFIERCASE+1;
const ULONG IDX_MAXOPENCHAPTERS =IDX_MAXINDEXSIZE+1;
const ULONG IDX_MAXROWSIZE =IDX_MAXOPENCHAPTERS+1;
const ULONG IDX_MAXROWSIZEINCLUDESBLOB =IDX_MAXROWSIZE+1;
const ULONG IDX_MAXTABLESINSELECT =IDX_MAXROWSIZEINCLUDESBLOB+1;
const ULONG IDX_MULTIPLEPARAMSETS =IDX_MAXTABLESINSELECT+1;
const ULONG IDX_MULTIPLERESULTS =IDX_MULTIPLEPARAMSETS+1;
const ULONG IDX_MULTIPLESTORAGEOBJECTS =IDX_MULTIPLERESULTS+1;
const ULONG IDX_MULTITABLEUPDATE =IDX_MULTIPLESTORAGEOBJECTS+1;
const ULONG IDX_NULLCOLLATION =IDX_MULTITABLEUPDATE+1;
const ULONG IDX_OLEOBJECTS =IDX_NULLCOLLATION+1;
const ULONG IDX_OPENROWSETSUPPORT =IDX_OLEOBJECTS+1;
const ULONG IDX_ORDERBYCOLUMNSINSELECT =IDX_OPENROWSETSUPPORT+1;
const ULONG IDX_OUTPUTPARAMETERAVAILABILITY =IDX_ORDERBYCOLUMNSINSELECT+1;
const ULONG IDX_PERSISTENTIDTYPE =IDX_OUTPUTPARAMETERAVAILABILITY+1;
const ULONG IDX_PREPAREABORTBEHAVIOR =IDX_PERSISTENTIDTYPE+1;
const ULONG IDX_PREPARECOMMITBEHAVIOR =IDX_PREPAREABORTBEHAVIOR+1;
const ULONG IDX_PROCEDURETERM =IDX_PREPARECOMMITBEHAVIOR+1;
const ULONG IDX_PROVIDERFRIENDLYNAME =IDX_PROCEDURETERM+1;
const ULONG IDX_PROVIDERMEMORY =IDX_PROVIDERFRIENDLYNAME+1;
const ULONG IDX_PROVIDERFILENAME =IDX_PROVIDERMEMORY+1;
const ULONG IDX_PROVIDEROLEDBVER =IDX_PROVIDERFILENAME+1;
const ULONG IDX_PROVIDERVER =IDX_PROVIDEROLEDBVER+1;
const ULONG IDX_QUOTEDIDENTIFIERCASE =IDX_PROVIDERVER+1;
const ULONG IDX_ROWSETCONVERSIONSONCOMMAND =IDX_QUOTEDIDENTIFIERCASE+1;
const ULONG IDX_SCHEMATERM =IDX_ROWSETCONVERSIONSONCOMMAND+1;
const ULONG IDX_SCHEMAUSAGE =IDX_SCHEMATERM+1;
const ULONG IDX_SERVERNAME =IDX_SCHEMAUSAGE+1;
const ULONG IDX_SQLSUPPORT =IDX_SERVERNAME+1;
const ULONG IDX_STRUCTUREDSTORAGE =IDX_SQLSUPPORT+1;
const ULONG IDX_SUBQUERIES =IDX_STRUCTUREDSTORAGE+1;
const ULONG IDX_SUPPORTEDTXNDDL =IDX_SUBQUERIES+1;
const ULONG IDX_SUPPORTEDTXNISOLEVELS =IDX_SUPPORTEDTXNDDL+1;
const ULONG IDX_SUPPORTEDTXNISORETAIN =IDX_SUPPORTEDTXNISOLEVELS+1;
const ULONG IDX_TABLETERM =IDX_SUPPORTEDTXNISORETAIN+1;
const ULONG IDX_USERNAME =IDX_TABLETERM+1;
const ULONG IDX_INDEX_AUTOUPDATE =IDX_USERNAME+1;
const ULONG IDX_INDEX_CLUSTERED =IDX_INDEX_AUTOUPDATE+1;
const ULONG IDX_INDEX_FILLFACTOR =IDX_INDEX_CLUSTERED+1;
const ULONG IDX_INDEX_INITIALSIZE =IDX_INDEX_FILLFACTOR+1;
const ULONG IDX_INDEX_NULLCOLLATION =IDX_INDEX_INITIALSIZE+1;
const ULONG IDX_INDEX_NULLS =IDX_INDEX_NULLCOLLATION+1;
const ULONG IDX_INDEX_PRIMARYKEY =IDX_INDEX_NULLS+1;
const ULONG IDX_INDEX_SORTBOOKMARKS =IDX_INDEX_PRIMARYKEY+1;
const ULONG IDX_INDEX_TEMPINDEX =IDX_INDEX_SORTBOOKMARKS+1;
const ULONG IDX_INDEX_TYPE =IDX_INDEX_TEMPINDEX+1;
const ULONG IDX_INDEX_UNIQUE =IDX_INDEX_TYPE+1;
const ULONG IDX_AUTH_CACHE_AUTHINFO =IDX_INDEX_UNIQUE+1;
const ULONG IDX_AUTH_ENCRYPT_PASSWORD =IDX_AUTH_CACHE_AUTHINFO+1;
const ULONG IDX_AUTH_INTEGRATED =IDX_AUTH_ENCRYPT_PASSWORD+1;
const ULONG IDX_AUTH_MASK_PASSWORD =IDX_AUTH_INTEGRATED+1;
const ULONG IDX_AUTH_PASSWORD =IDX_AUTH_MASK_PASSWORD+1;
const ULONG IDX_AUTH_PERSIST_ENCRYPTED =IDX_AUTH_PASSWORD+1;
const ULONG IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO =IDX_AUTH_PERSIST_ENCRYPTED+1;
const ULONG IDX_AUTH_USERID =IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO+1;
const ULONG IDX_INIT_ASYNCH =IDX_AUTH_USERID+1;
const ULONG IDX_INIT_BINDFLAGS =IDX_INIT_ASYNCH+1;
const ULONG IDX_INIT_CATALOG =IDX_INIT_BINDFLAGS+1;
const ULONG IDX_INIT_DATASOURCE =IDX_INIT_CATALOG+1;
const ULONG IDX_INIT_GENERALTIMEOUT =IDX_INIT_DATASOURCE+1;
const ULONG IDX_INIT_HWND =IDX_INIT_GENERALTIMEOUT+1;
const ULONG IDX_INIT_IMPERSONATION_LEVEL =IDX_INIT_HWND+1;
const ULONG IDX_INIT_LCID =IDX_INIT_IMPERSONATION_LEVEL+1;
const ULONG IDX_INIT_LOCATION =IDX_INIT_LCID+1;
const ULONG IDX_INIT_LOCKOWNER =IDX_INIT_LOCATION+1;
const ULONG IDX_INIT_MODE =IDX_INIT_LOCKOWNER+1;
const ULONG IDX_INIT_OLEDBSERVICES =IDX_INIT_MODE+1;
const ULONG IDX_INIT_PROMPT =IDX_INIT_OLEDBSERVICES+1;
const ULONG IDX_INIT_PROTECTION_LEVEL =IDX_INIT_PROMPT+1;
const ULONG IDX_INIT_PROVIDERSTRING =IDX_INIT_PROTECTION_LEVEL+1;
const ULONG IDX_INIT_TIMEOUT =IDX_INIT_PROVIDERSTRING+1;
const ULONG IDX_ABORTPRESERVE =IDX_INIT_TIMEOUT+1;
const ULONG IDX_ACCESSORDER =IDX_ABORTPRESERVE+1;
const ULONG IDX_APPENDONLY =IDX_ACCESSORDER+1;
const ULONG IDX_BLOCKINGSTORAGEOBJECTS =IDX_APPENDONLY+1;
const ULONG IDX_BOOKMARKINFO =IDX_BLOCKINGSTORAGEOBJECTS+1;
const ULONG IDX_BOOKMARKS =IDX_BOOKMARKINFO+1;
const ULONG IDX_BOOKMARKSKIPPED =IDX_BOOKMARKS+1;
const ULONG IDX_BOOKMARKTYPE =IDX_BOOKMARKSKIPPED+1;
const ULONG IDX_CACHEDEFERRED =IDX_BOOKMARKTYPE+1;
const ULONG IDX_CANFETCHBACKWARDS =IDX_CACHEDEFERRED+1;
const ULONG IDX_CANHOLDROWS =IDX_CANFETCHBACKWARDS+1;
const ULONG IDX_CANSCROLLBACKWARDS =IDX_CANHOLDROWS+1;
const ULONG IDX_CHANGEINSERTEDROWS =IDX_CANSCROLLBACKWARDS+1;
const ULONG IDX_CLIENTCURSOR =IDX_CHANGEINSERTEDROWS+1;
const ULONG IDX_COLUMNRESTRICT =IDX_CLIENTCURSOR+1;
const ULONG IDX_COMMANDTIMEOUT =IDX_COLUMNRESTRICT+1;
const ULONG IDX_COMMITPRESERVE =IDX_COMMANDTIMEOUT+1;
const ULONG IDX_DEFERRED =IDX_COMMITPRESERVE+1;
const ULONG IDX_DELAYSTORAGEOBJECTS =IDX_DEFERRED+1;
const ULONG IDX_FINDCOMPAREOPS =IDX_DELAYSTORAGEOBJECTS+1;
const ULONG IDX_HIDDENCOLUMNS =IDX_FINDCOMPAREOPS+1;
const ULONG IDX_IMMOBILEROWS =IDX_HIDDENCOLUMNS+1;
const ULONG IDX_LITERALBOOKMARKS =IDX_IMMOBILEROWS+1;
const ULONG IDX_LITERALIDENTITY =IDX_LITERALBOOKMARKS+1;
const ULONG IDX_LOCKMODE =IDX_LITERALIDENTITY+1;
const ULONG IDX_MAXOPENROWS =IDX_LOCKMODE+1;
const ULONG IDX_MAXPENDINGROWS =IDX_MAXOPENROWS+1;
const ULONG IDX_MAXROWS =IDX_MAXPENDINGROWS+1;
const ULONG IDX_MAYWRITECOLUMN =IDX_MAXROWS+1;
const ULONG IDX_MEMORYUSAGE =IDX_MAYWRITECOLUMN+1;
const ULONG IDX_NOTIFICATIONGRANULARITY =IDX_MEMORYUSAGE+1;
const ULONG IDX_NOTIFICATIONPHASES =IDX_NOTIFICATIONGRANULARITY+1;
const ULONG IDX_NOTIFYCOLUMNSET =IDX_NOTIFICATIONPHASES+1;
const ULONG IDX_NOTIFYROWDELETE =IDX_NOTIFYCOLUMNSET+1;
const ULONG IDX_NOTIFYROWFIRSTCHANGE =IDX_NOTIFYROWDELETE+1;
const ULONG IDX_NOTIFYROWINSERT =IDX_NOTIFYROWFIRSTCHANGE+1;
const ULONG IDX_NOTIFYROWRESYNCH =IDX_NOTIFYROWINSERT+1;
const ULONG IDX_NOTIFYROWSETCHANGED =IDX_NOTIFYROWRESYNCH+1;
const ULONG IDX_NOTIFYROWSETFETCHPOSITIONCHANGE =IDX_NOTIFYROWSETCHANGED+1;
const ULONG IDX_NOTIFYROWSETRELEASE =IDX_NOTIFYROWSETFETCHPOSITIONCHANGE+1;
const ULONG IDX_NOTIFYROWUNDOCHANGE =IDX_NOTIFYROWSETRELEASE+1;
const ULONG IDX_NOTIFYROWUNDODELETE =IDX_NOTIFYROWUNDOCHANGE+1;
const ULONG IDX_NOTIFYROWUNDOINSERT =IDX_NOTIFYROWUNDODELETE+1;
const ULONG IDX_NOTIFYROWUPDATE =IDX_NOTIFYROWUNDOINSERT+1;
const ULONG IDX_ORDEREDBOOKMARKS =IDX_NOTIFYROWUPDATE+1;
const ULONG IDX_OTHERINSERT =IDX_ORDEREDBOOKMARKS+1;
const ULONG IDX_OTHERUPDATEDELETE =IDX_OTHERINSERT+1;
const ULONG IDX_OWNINSERT =IDX_OTHERUPDATEDELETE+1;
const ULONG IDX_OWNUPDATEDELETE =IDX_OWNINSERT+1;
const ULONG IDX_QUICKRESTART =IDX_OWNUPDATEDELETE+1;
const ULONG IDX_REENTRANTEVENTS =IDX_QUICKRESTART+1;
const ULONG IDX_REMOVEDELETED =IDX_REENTRANTEVENTS+1;
const ULONG IDX_REPORTMULTIPLECHANGES =IDX_REMOVEDELETED+1;
const ULONG IDX_RETURNPENDINGINSERTS =IDX_REPORTMULTIPLECHANGES+1;
const ULONG IDX_ROW_BULKOPS =IDX_RETURNPENDINGINSERTS+1;
const ULONG IDX_ROWRESTRICT =IDX_ROW_BULKOPS+1;
const ULONG IDX_ROWSET_ASYNCH =IDX_ROWRESTRICT+1;
const ULONG IDX_ROWTHREADMODEL =IDX_ROWSET_ASYNCH+1;
const ULONG IDX_SERVERCURSOR =IDX_ROWTHREADMODEL+1;
const ULONG IDX_SERVERDATAONINSERT =IDX_SERVERCURSOR+1;
const ULONG IDX_STORAGEFLAGS =IDX_SERVERDATAONINSERT+1;
const ULONG IDX_STRONGIDENTITY =IDX_STORAGEFLAGS+1;
const ULONG IDX_TRANSACTEDOBJECT =IDX_STRONGIDENTITY+1;
const ULONG IDX_UNIQUEROWS =IDX_TRANSACTEDOBJECT+1;
const ULONG IDX_UPDATABILITY =IDX_UNIQUEROWS+1;
const ULONG IDX_IACCESSOR =IDX_UPDATABILITY+1;
const ULONG IDX_IBINDRESOURCE =IDX_IACCESSOR+1;
const ULONG IDX_ICHAPTEREDROWSET =IDX_IBINDRESOURCE+1;
const ULONG IDX_ICOLUMNSINFO =IDX_ICHAPTEREDROWSET+1;
const ULONG IDX_ICOLUMNSINFO2 =IDX_ICOLUMNSINFO+1;
const ULONG IDX_ICOLUMNSROWSET =IDX_ICOLUMNSINFO2+1;
const ULONG IDX_ICONNECTIONPOINTCONTAINER =IDX_ICOLUMNSROWSET+1;
const ULONG IDX_ICONVERTTYPE =IDX_ICONNECTIONPOINTCONTAINER+1;
const ULONG IDX_ICREATEROW =IDX_ICONVERTTYPE+1;
const ULONG IDX_IDBASYNCHSTATUS =IDX_ICREATEROW+1;
const ULONG IDX_IBINDERPROPERTIES =IDX_IDBASYNCHSTATUS+1;
const ULONG IDX_IGETROW =IDX_IBINDERPROPERTIES+1;
const ULONG IDX_IGETSESSION =IDX_IGETROW+1;
const ULONG IDX_IGETSOURCEROW =IDX_IGETSESSION+1;
const ULONG IDX_IMULTIPLERESULTS =IDX_IGETSOURCEROW+1;
const ULONG IDX_IPARENTROWSET =IDX_IMULTIPLERESULTS+1;
const ULONG IDX_IREGISTERPROVIDER =IDX_IPARENTROWSET+1;
const ULONG IDX_IROW =IDX_IREGISTERPROVIDER+1;
const ULONG IDX_IROWCHANGE =IDX_IROW+1;
const ULONG IDX_IROWSCHEMACHANGE =IDX_IROWCHANGE+1;
const ULONG IDX_IROWSET =IDX_IROWSCHEMACHANGE+1;
const ULONG IDX_IROWSETCHANGE =IDX_IROWSET+1;
const ULONG IDX_IROWSETCURRENTINDEX =IDX_IROWSETCHANGE+1;
const ULONG IDX_IROWSETFIND =IDX_IROWSETCURRENTINDEX+1;
const ULONG IDX_IROWSETIDENTITY =IDX_IROWSETFIND+1;
const ULONG IDX_IROWSETINDEX =IDX_IROWSETIDENTITY+1;
const ULONG IDX_IROWSETINFO =IDX_IROWSETINDEX+1;
const ULONG IDX_IROWSETLOCATE =IDX_IROWSETINFO+1;
const ULONG IDX_IROWSETREFRESH =IDX_IROWSETLOCATE+1;
const ULONG IDX_IROWSETRESYNCH =IDX_IROWSETREFRESH+1;
const ULONG IDX_IROWSETSCROLL =IDX_IROWSETRESYNCH+1;
const ULONG IDX_IROWSETUPDATE =IDX_IROWSETSCROLL+1;
const ULONG IDX_IROWSETVIEW =IDX_IROWSETUPDATE+1;
const ULONG IDX_ISCOPEDOPERATIONS =IDX_IROWSETVIEW+1;
const ULONG IDX_ISUPPORTERRORINFO =IDX_ISCOPEDOPERATIONS+1;
const ULONG IDX_ILOCKBYTES =IDX_ISUPPORTERRORINFO+1;
const ULONG IDX_ISEQUENTIALSTREAM =IDX_ILOCKBYTES+1;
const ULONG IDX_ISTORAGE =IDX_ISEQUENTIALSTREAM+1;
const ULONG IDX_ISTREAM =IDX_ISTORAGE+1;
const ULONG IDX_SESS_AUTOCOMMITISOLEVELS =IDX_ISTREAM+1;
const ULONG IDX_TBL_TEMPTABLE =IDX_SESS_AUTOCOMMITISOLEVELS+1;
const ULONG IDX_TRUSTEE_USERNAME =IDX_TBL_TEMPTABLE+1;
const ULONG IDX_TRUSTEE_AUTHENTICATION =IDX_TRUSTEE_USERNAME+1;
const ULONG IDX_TRUSTEE_NEWAUTHENTICATION =IDX_TRUSTEE_AUTHENTICATION+1;
const ULONG IDX_FILTERCOMPAREOPS =IDX_TRUSTEE_NEWAUTHENTICATION+1;
const ULONG IDX_VIACCESSOR =IDX_FILTERCOMPAREOPS+1;
const ULONG IDX_VICOLUMNSINFO =IDX_VIACCESSOR+1;
const ULONG IDX_VISUPPORTERRORINFO =IDX_VICOLUMNSINFO+1;
const ULONG IDX_IVIEWCHAPTER =IDX_VISUPPORTERRORINFO+1;
const ULONG IDX_IVIEWFILTER =IDX_IVIEWCHAPTER+1;
const ULONG IDX_IVIEWROWSET =IDX_IVIEWFILTER+1;
const ULONG IDX_IVIEWSORT =IDX_IVIEWROWSET+1;
const ULONG IDX_MAXORSINFILTER =IDX_IVIEWSORT+1;
const ULONG IDX_MAXSORTCOLUMNS =IDX_MAXORSINFILTER+1;
const ULONG IDX_SORTONINDEX =IDX_MAXSORTCOLUMNS+1;
// Provider Specific
const ULONG IDX_ACCESSIBLEPROCEDURES =IDX_TBL_TEMPTABLE+1;
const ULONG IDX_ACCESSIBLETABLES =IDX_ACCESSIBLEPROCEDURES+1;
const ULONG IDX_ODBCSQLOPTIEF =IDX_ACCESSIBLETABLES+1;
const ULONG IDX_OJCAPABILITY =IDX_ODBCSQLOPTIEF+1;
const ULONG IDX_PROCEDURES =IDX_OJCAPABILITY+1;
const ULONG IDX_DRIVERNAME =IDX_PROCEDURES+1;
const ULONG IDX_DRIVERVER =IDX_DRIVERNAME+1;
const ULONG IDX_DRIVERODBCVER =IDX_DRIVERVER+1;
const ULONG IDX_LIKEESCAPECLAUSE =IDX_DRIVERODBCVER+1;
const ULONG IDX_SPECIALCHARACTERS =IDX_LIKEESCAPECLAUSE+1;
const ULONG IDX_MAXCOLUMNSINGROUPBY =IDX_SPECIALCHARACTERS+1;
const ULONG IDX_MAXCOLUMNSININDEX =IDX_MAXCOLUMNSINGROUPBY+1;
const ULONG IDX_MAXCOLUMNSINORDERBY =IDX_MAXCOLUMNSININDEX+1;
const ULONG IDX_MAXCOLUMNSINSELECT =IDX_MAXCOLUMNSINORDERBY+1;
const ULONG IDX_MAXCOLUMNSINTABLE =IDX_MAXCOLUMNSINSELECT+1;
const ULONG IDX_NUMERICFUNCTIONS =IDX_MAXCOLUMNSINTABLE+1;
const ULONG IDX_ODBCSQLCONFORMANCE =IDX_NUMERICFUNCTIONS+1;
const ULONG IDX_OUTERJOINS =IDX_ODBCSQLCONFORMANCE+1;
const ULONG IDX_STRINGFUNCTIONS =IDX_OUTERJOINS+1;
const ULONG IDX_SYSTEMFUNCTIONS =IDX_STRINGFUNCTIONS+1;
const ULONG IDX_TIMEDATEFUNCTIONS =IDX_SYSTEMFUNCTIONS+1;
const ULONG IDX_FILEUSAGE =IDX_TIMEDATEFUNCTIONS+1;
const ULONG IDX_ACTIVESTATEMENTS =IDX_FILEUSAGE+1;
const ULONG IDX_QUERYBASEDUPDATES =IDX_ACTIVESTATEMENTS+1;
const ULONG IDX_MARSHALLABLE =IDX_QUERYBASEDUPDATES+1;
const ULONG IDX_POSITIONONNEWROW =IDX_MARSHALLABLE+1;
const ULONG IDX_IROWSETCHANGEEXTINFO =IDX_POSITIONONNEWROW+1;
const ULONG IDX_CURSOR =IDX_IROWSETCHANGEEXTINFO+1;
const ULONG IDX_CONCURRENCY =IDX_CURSOR+1;
const ULONG IDX_BLOBSONFOCURSOR =IDX_CONCURRENCY+1;
const ULONG IDX_INCLUDENONEXACT =IDX_BLOBSONFOCURSOR+1;
const ULONG IDX_FORCESSFIREHOSEMODE =IDX_INCLUDENONEXACT+1;
const ULONG IDX_FORCENOPARAMETERREBIND =IDX_FORCESSFIREHOSEMODE+1;
const ULONG IDX_FORCENOPREPARE =IDX_FORCENOPARAMETERREBIND+1;
const ULONG IDX_FORCENOREEXECUTE =IDX_FORCENOPREPARE+1;
const ULONG IDX_ROWSET_START =IDX_ABORTPRESERVE;
const ULONG IDX_ROWSET_END =IDX_ISTREAM;
const ULONG IDX_INTERFACE_START =IDX_IACCESSOR;
const ULONG IDX_INTERFACE_END =IDX_ISTREAM;
const ULONG IDX_OLEDB_START =IDX_COL_AUTOINCREMENT;
const ULONG IDX_OLEDB_END =IDX_TBL_TEMPTABLE;
const ULONG IDX_KAGERA_START =IDX_ACCESSIBLEPROCEDURES;
const ULONG IDX_KAGERA_END =IDX_FORCENOREEXECUTE;
//-----------------------------------------------------------------------------
// Unitility C functions
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//@mfunc: Verify the property is not mandatory
//
//-----------------------------------------------------------------------------
BOOL PassAsNotSupported(DBPROPID DBPropID)
{
if(DBPropID==DBPROP_IAccessor)
{
odtLog<<wszIAccessorNotSupported;
return FALSE;
}
if(DBPropID==DBPROP_IRowsetInfo)
{
odtLog<<wszIRowsetInfoNotSupported;
return FALSE;
}
if(DBPropID==DBPROP_IColumnsInfo)
{
odtLog<<wszIColumnsInfoNotSupported;
return FALSE;
}
if(DBPropID==DBPROP_IRowset)
{
odtLog<<wszIRowsetNotSupported;
return FALSE;
}
if(DBPropID==DBPROP_IConvertType)
{
odtLog<<wszIConvertTypeNotSupported;
return FALSE;
}
return TRUE;
}
//-----------------------------------------------------------------------------
//@mfunc: Create a table to be used by the whole test module
//
//-----------------------------------------------------------------------------
BOOL CreateTable(IDBCreateCommand *pIDBCreateCommand)
{
// Create the table, passing in the module name
g_pCTable = new CTable(pIDBCreateCommand, (WCHAR *)gwszModuleName, USENULLS);
if(!g_pCTable)
{
odtLog<<wszCMDMemoryAllocationError;
return FALSE;
}
// Create a table with an index on it to eliminate special behavior of SQL Server
if( !SUCCEEDED(g_pCTable->CreateTable(TABLE_ROW_COUNT)))
{
odtLog<<wszCanNotCreateTable;
SAFE_DELETE(g_pCTable);
return FALSE;
}
return TRUE;
}
//-----------------------------------------------------------------------------
//@mfunc: Retrieve supported IDBProperties
//
//-----------------------------------------------------------------------------
BOOL InitSupported( IDBProperties *pIDBProperties,CThisTestModule *pThisTestModule)
{
HRESULT hr=E_FAIL;
ULONG cPrptSupported=0;
DBPROPIDSET DBPropIDSet;
DBPROPID DBPropID;
ULONG cPropertyInfoSets=0;
DBPROPINFOSET *pPropertyInfoSets=NULL;
WCHAR *pDescBuffer=NULL;
BOOL fPass=FALSE;
// Loop through the struct. Get default info on each command property
for(ULONG cDBProperties = 0; cDBProperties<g_cDBProperties; cDBProperties++)
{
// Init for IDBProperties
DBPropID=g_rgDBProperties[cDBProperties].dwPropertyID;
DBPropIDSet.guidPropertySet=*(g_rgDBProperties[cDBProperties].pGuidPropertySet);
DBPropIDSet.cPropertyIDs=1;
DBPropIDSet.rgPropertyIDs=&DBPropID;
//GetPropertyID
hr=pIDBProperties->GetPropertyInfo(1,&DBPropIDSet,
&cPropertyInfoSets,&pPropertyInfoSets,&pDescBuffer);
if( (hr != S_OK) && (hr != DB_E_ERRORSOCCURRED) )
goto END;
// Check for return DBProperties
COMPARE(cPropertyInfoSets, 1);
// Check DBPROPINFOSET.guidPropertySet
COMPARE(pPropertyInfoSets->guidPropertySet,
*(g_rgDBProperties[cDBProperties].pGuidPropertySet));
// Check DBPROPINFOSET.cPropertyInfos
COMPARE(pPropertyInfoSets->cPropertyInfos, 1);
// Check dwPropertyID
COMPARE(pPropertyInfoSets->rgPropertyInfos->dwPropertyID,DBPropID);
// Check dwFlags
// Mark the property as not supported
if(pPropertyInfoSets->rgPropertyInfos->dwFlags == DBPROPFLAGS_NOTSUPPORTED)
g_rgDBProperties[cDBProperties].fSupported=FALSE;
else
{
// Flip the Supported flag on
g_rgDBProperties[cDBProperties].fSupported=TRUE;
// Check pwszDescription
if(!COMPARE(0, wcscmp(pPropertyInfoSets->rgPropertyInfos->pwszDescription,
g_rgDBProperties[cDBProperties].wszDescription)))
odtLog<<L"The description is not same at "<<cDBProperties<<L" \n";
// dwFlags should set DBPROPFLAGS_ROWSET
if( (((cDBProperties >= IDX_ROWSET_START) && (cDBProperties <= IDX_ROWSET_END)) ||
(cDBProperties > IDX_QUERYBASEDUPDATES)) &&
(!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET)) )
odtLog<<wszRowsetFlagNotSetAt<<cDBProperties<<L" \n";
else if( ((cDBProperties < IDX_ROWSET_START) ||
((cDBProperties > IDX_ROWSET_END) && (cDBProperties < IDX_QUERYBASEDUPDATES))) &&
(!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN) &&
!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE) &&
!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE) &&
!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO) &&
!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT) &&
!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX) &&
!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION) &&
!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE)) )
odtLog<<wszDataSourceFlagSetAt<<cDBProperties<<L" \n";
else if(!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT) &&
pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED)
odtLog<<L"The DBPROPFLAGS_REQUIRED flag was on a NON DBINIT Property at index "<<cDBProperties<<L" \n";
// dwFlags should not set DBPROPFLAGS_NOTSUPPORTED
if(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_NOTSUPPORTED)
odtLog<<L"The DBPROPFLAGS_NOTSUPPORTED flag was on a Supported Property at index "<<cDBProperties<<L" \n";
// dwFlags should set for DBPROPFLAGS_READ
if(!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_WRITE))
{
g_rgDBProperties[cDBProperties].fSettable = FALSE;
COMPARE((pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_READ), DBPROPFLAGS_READ);
}
else
g_rgDBProperties[cDBProperties].fSettable = TRUE;
// Should be able to read all properties
COMPARE((pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_READ), DBPROPFLAGS_READ);
// dwFlags should set for DBPROPFLAGS_COLUMNOK
if(g_rgDBProperties[cDBProperties].fColumn)
{
if(!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK))
odtLog<<wszColumnFlagNotSetAt<<cDBProperties<<L" \n";
else
g_rgDBProperties[cDBProperties].fColumnOK = TRUE;
}
else
{
if((pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK))
{
// Compare is used just to increment the count of errors
odtLog<<wszColumnFlagSetAt<<cDBProperties<<L" \n";
COMPARE(g_rgDBProperties[cDBProperties].fColumn, TRUE);
}
}
// Skip DBPROP_COL_DEFAULT because can return an type
if(g_rgDBProperties[cDBProperties].dwPropertyID != DBPROP_COL_DEFAULT)
{
//Compare the vtType
if(!COMPARE(pPropertyInfoSets->rgPropertyInfos->vtType, g_rgDBProperties[cDBProperties].vtType))
odtLog<<wszIncorrectVtType<<cDBProperties<<L" \n";
}
// Copy the default value into the array
if(!SUCCEEDED(VariantCopy(&(g_rgDBProperties[cDBProperties].vDefault),
&(pPropertyInfoSets->rgPropertyInfos->vValues))))
{
odtLog<<wszDefaultValueFailed<<cDBProperties<<L" \n";
goto FREE;
}
// Keep track of # of supported properties
cPrptSupported++;
}
FREE:
// Free memory from GetProperties
FreeProperties(&cPropertyInfoSets,&pPropertyInfoSets,&pDescBuffer);
}
// The command object has to support at least one property in order
// to continue on testing
if(!cPrptSupported)
odtLog<<wszNoneSupported;
else
odtLog<<wszTotalSupportedIs<<cPrptSupported<<L" \n";
fPass=TRUE;
END:
// Free memory from GetProperties
FreeProperties(&cPropertyInfoSets,&pPropertyInfoSets,&pDescBuffer);
return fPass;
}
//-----------------------------------------------------------------------------
//@mfunc: Intialize the default values for all rowset properties
//
//-----------------------------------------------------------------------------
BOOL InitDefault(ICommandProperties *pICommandProperties,CThisTestModule *pThisTestModule)
{
ULONG cSetCount;
ULONG cPropertyCount;
ULONG cIndex;
ULONG cPropertySets=0;
ULONG cPrptSupported=0;
DBPROPSET *pPropertySets=NULL;
HRESULT hr;
BOOL fPass=FALSE;
DWORD dwMask=0;
ULONG ExtraCnt=0;
// Call ICommandProperties
if(!CHECK(hr=pICommandProperties->GetProperties(0,NULL,
&cPropertySets,&pPropertySets), S_OK))
goto END;
// Set the default value for each property set
for(cSetCount=0;cSetCount<cPropertySets;cSetCount++)
{
cPrptSupported = cPrptSupported + pPropertySets[cSetCount].cProperties;
// Check to see if the Provider has Provider specific PropSets
if(pPropertySets[cSetCount].guidPropertySet != DBPROPSET_ROWSET)
ExtraCnt++;
// Make sure we get at least 1 property
if(!pPropertySets[cSetCount].cProperties)
COMPARE(pPropertySets[cSetCount].cProperties, 1);
// Go through each property
for(cPropertyCount=0; cPropertyCount<pPropertySets[cSetCount].cProperties;
cPropertyCount++)
{
//Check to see if the Provider has returned an invalid PropSets
if( (pPropertySets[cSetCount].guidPropertySet == DBPROPSET_DBINIT) ||
(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_DATASOURCE) ||
(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_DATASOURCEINFO) ||
(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_COLUMN) ||
(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_INDEX) ||
(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_SESSION)||
(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_TABLE) )
odtLog<<L"ERROR: An Invalid OLEDB PropertySet has been returned by ICommandProperties::GetProperties!\n";
// Count the Rowset properties
if(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_ROWSET)
g_ulPropertyCount++;
// Go through the whole list
for(cIndex=IDX_OLEDB_START; cIndex<=(ExtraCnt ? IDX_KAGERA_END : IDX_OLEDB_END);cIndex++)
{
// Search for the properties
if((g_rgDBProperties[cIndex].dwPropertyID ==
pPropertySets[cSetCount].rgProperties[cPropertyCount].dwPropertyID) &&
(*(g_rgDBProperties[cIndex].pGuidPropertySet) ==
pPropertySets[cSetCount].guidPropertySet))
{
// Print the value to the screen
odtLog<<" "<<g_rgDBProperties[cIndex].wszDescription<<" = ";
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt)
odtLog<<pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue<<L" \n";
else
odtLog<<L"VT_EMPTY \n";
// Set the property to supported
g_rgDBProperties[cIndex].fSupported=TRUE;
// Copy the default
if( pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt )
{
hr = VariantCopy(&(g_rgDBProperties[cIndex].vDefault),
&(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue));
}
else
VariantInit(&g_rgDBProperties[cIndex].vDefault);
// dwStatus has to be DBPROPSTATUS_OK
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].dwStatus!=
DBPROPSTATUS_OK)
odtLog<<L"The dwStatus in default is not DBPROPSTATUS_OK at index "<<cIndex<<"!\n";
// Check VT type
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt!=
g_rgDBProperties[cIndex].vtType)
{
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt!=
VT_EMPTY)
odtLog<<L"The vt in vValue is not correct at index "<<cIndex<<"!\n";
else
goto BREAK;
}
//If VT==VT_BOOL, the value has to be either VAIANT_TRUE or VARIANT_FALSE
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt==
VT_BOOL)
{
if((V_BOOL(&pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue)!=VARIANT_TRUE) &&
(V_BOOL(&pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue)!=VARIANT_FALSE))
odtLog<<L"The bool is not VARIANT_TRUE or VARIANT_FALSE at index "<<cIndex<<"!\n";
}
else
{
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt==
VT_EMPTY)
{
//The value has to be 0
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.lVal!=0)
odtLog<<L"The lVal is not 0 at index "<<cIndex<<"!\n";
}
else
{
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt==
VT_I4)
{
//The value has to be greate than 0
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.lVal<0)
odtLog<<L"The lVal is less than 0 at index "<<cIndex<<"!\n";
}
else
{
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt==
VT_I2)
{
//The value has to be greate than 0
if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.iVal<0)
odtLog<<L"The lVal is less than 0 at index "<<cIndex<<"!\n";
}
}
}
}
BREAK:
break;
}
}
// Check the Index count with the total number of properties
if(cIndex > (ExtraCnt ? IDX_KAGERA_END : IDX_OLEDB_END))
{
if(ExtraCnt)
odtLog<<L"This autotest needs to be updated with Provider specific properties!\n";
else
odtLog<<L"ERROR: A OLEDB Property has the wrong guidPropertySet!\n";
}
}
}
odtLog<<wszTotalGetPropertiesIs<<cPrptSupported<<L" \n";
if(ExtraCnt)
odtLog<<L"The Total includes Provider specific properties"<<L" \n";
g_ulExtraROWProp = ExtraCnt;
fPass=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&pPropertySets);
return fPass;
}
//-----------------------------------------------------------------------------
//@mfunc: Get the pointer to the guid for the interface
//
//-----------------------------------------------------------------------------
const GUID *GetGuidPointer(ULONG cIndex)
{
switch(cIndex)
{
case IDX_IACCESSOR:
return &IID_IAccessor;
case IDX_ICHAPTEREDROWSET:
return &IID_IChapteredRowset;
case IDX_ICOLUMNSINFO:
return &IID_IColumnsInfo;
case IDX_ICOLUMNSROWSET:
return &IID_IColumnsRowset;
case IDX_ICONNECTIONPOINTCONTAINER:
return &IID_IConnectionPointContainer;
case IDX_ICONVERTTYPE:
return &IID_IConvertType;
case IDX_IDBASYNCHSTATUS:
return &IID_IDBAsynchStatus;
case IDX_IROWSET:
return &IID_IRowset;
case IDX_IROWSETCHANGE:
return &IID_IRowsetChange;
case IDX_IROWSETFIND:
return &IID_IRowsetFind;
case IDX_IROWSETIDENTITY:
return &IID_IRowsetIdentity;
case IDX_IROWSETINDEX:
return &IID_IRowsetIndex;
case IDX_IROWSETINFO:
return &IID_IRowsetInfo;
case IDX_IROWSETLOCATE:
return &IID_IRowsetLocate;
case IDX_IROWSETRESYNCH:
return &IID_IRowsetResynch;
case IDX_IROWSETSCROLL:
return &IID_IRowsetScroll;
case IDX_IROWSETUPDATE:
return &IID_IRowsetUpdate;
case IDX_IROWSETVIEW:
return &IID_IRowsetView;
case IDX_IVIEWCHAPTER:
return &IID_IViewChapter;
case IDX_IVIEWFILTER:
return &IID_IViewFilter;
case IDX_IVIEWROWSET:
return &IID_IViewRowset;
case IDX_IVIEWSORT:
return &IID_IViewSort;
case IDX_ILOCKBYTES:
return &IID_ILockBytes;
case IDX_ISEQUENTIALSTREAM:
return &IID_ISequentialStream;
case IDX_ISTORAGE:
return &IID_IStorage;
case IDX_ISTREAM:
return &IID_IStream;
case IDX_ISUPPORTERRORINFO:
return &IID_ISupportErrorInfo;
default:
return &IID_IUnknown;
}
}
//-----------------------------------------------------------------------------
//@mfunc: If the property contains a numeric value
//
//-----------------------------------------------------------------------------
BOOL PropertyNumeric(const ULONG cPrpt)
{
if(g_rgDBProperties[cPrpt].vtType==VT_I4)
return TRUE;
else
return FALSE;
}
//-----------------------------------------------------------------------------
//@mfunc: Set the DBPROPIDSET
//
//-----------------------------------------------------------------------------
BOOL InitDBPropIDSet(const ULONG cPrpt, DBPROPIDSET *pDBPropIDSet)
{
if(!(pDBPropIDSet->rgPropertyIDs))
return FALSE;
pDBPropIDSet->guidPropertySet=*(g_rgDBProperties[cPrpt].pGuidPropertySet);
pDBPropIDSet->cPropertyIDs=1;
*(pDBPropIDSet->rgPropertyIDs)=g_rgDBProperties[cPrpt].dwPropertyID;
return TRUE;
}
//-----------------------------------------------------------------------------
//@mfunc: Set the DBPROPSET
//
//-----------------------------------------------------------------------------
BOOL InitDBPropSet(
const ULONG cPrpt,
DBPROPSET *pDBPropSet,
BOOL fSet)
{
if(!(pDBPropSet->rgProperties))
return FALSE;
memset(pDBPropSet->rgProperties ,0,sizeof(DBPROP));
pDBPropSet->guidPropertySet=*(g_rgDBProperties[cPrpt].pGuidPropertySet);
pDBPropSet->cProperties=1;
pDBPropSet->rgProperties->dwStatus=99;
//Set dwPropertyID and dwOptions
pDBPropSet->rgProperties->dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
if(3 != fSet)
pDBPropSet->rgProperties->dwOptions=DBPROPOPTIONS_REQUIRED;
else
pDBPropSet->rgProperties->dwOptions=DBPROPOPTIONS_SETIFCHEAP;
//Set column info
if(g_rgDBProperties[cPrpt].fColumn)
pDBPropSet->rgProperties->colid=DB_NULLID;
//Set value
if(2 == fSet)
{
pDBPropSet->rgProperties->vValue.vt=VT_EMPTY;
}
else
{
switch(g_rgDBProperties[cPrpt].vtType)
{
case VT_BOOL:
{
pDBPropSet->rgProperties->vValue.vt=VT_BOOL;
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.boolVal == VARIANT_FALSE))
V_BOOL(&pDBPropSet->rgProperties->vValue)=VARIANT_TRUE;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.boolVal == VARIANT_TRUE))
V_BOOL(&pDBPropSet->rgProperties->vValue)=VARIANT_FALSE;
else
V_BOOL(&pDBPropSet->rgProperties->vValue)=g_rgDBProperties[cPrpt].vDefault.boolVal;
}
break;
case VT_I4:
{
pDBPropSet->rgProperties->vValue.vt=VT_I4;
switch(cPrpt)
{
case IDX_BOOKMARKTYPE:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_BMK_NUMERIC))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_BMK_NUMERIC;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_BMK_NUMERIC))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_BMK_KEY;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
case IDX_FILTERCOMPAREOPS:
case IDX_FINDCOMPAREOPS:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CO_EQUALITY))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CO_EQUALITY;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CO_EQUALITY))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CO_STRING;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
case IDX_LOCKMODE:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_LM_NONE))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_LM_NONE;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_LM_NONE))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_LM_SINGLEROW;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
case IDX_COMMANDTIMEOUT:
case IDX_MAXOPENROWS:
case IDX_MAXPENDINGROWS:
case IDX_MAXROWS:
case IDX_MEMORYUSAGE:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
pDBPropSet->rgProperties->vValue.lVal = 0;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
pDBPropSet->rgProperties->vValue.lVal = 1;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
case IDX_NOTIFICATIONGRANULARITY:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_NT_SINGLEROW))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_NT_SINGLEROW;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_NT_SINGLEROW))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_NT_MULTIPLEROWS;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
case IDX_NOTIFICATIONPHASES:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_NP_OKTODO))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_NP_OKTODO;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_NP_OKTODO))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_NP_ABOUTTODO;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
case IDX_NOTIFYCOLUMNSET:
case IDX_NOTIFYROWDELETE:
case IDX_NOTIFYROWFIRSTCHANGE:
case IDX_NOTIFYROWINSERT:
case IDX_NOTIFYROWRESYNCH:
case IDX_NOTIFYROWSETRELEASE:
case IDX_NOTIFYROWSETFETCHPOSITIONCHANGE:
case IDX_NOTIFYROWUNDOCHANGE:
case IDX_NOTIFYROWUNDODELETE:
case IDX_NOTIFYROWUNDOINSERT:
case IDX_NOTIFYROWUPDATE:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
pDBPropSet->rgProperties->vValue.lVal = 0;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_NP_OKTODO;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
case IDX_ROWSET_ASYNCH:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_ASYNCH_INITIALIZE))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_ASYNCH_INITIALIZE;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_ASYNCH_INITIALIZE))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_ASYNCH_SEQUENTIALPOPULATION;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
case IDX_ROWTHREADMODEL:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_RT_FREETHREAD))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_RT_FREETHREAD;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_RT_FREETHREAD))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_RT_APTMTTHREAD;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
case IDX_UPDATABILITY:
// Set the Non Default value and the Default value
if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_UP_CHANGE))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_UP_CHANGE;
else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_UP_CHANGE))
pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_UP_DELETE;
else
pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
break;
default:
break;
}
}
break;
}
}
return TRUE;
}
//-----------------------------------------------------------------------------
//@mfunc: Verify the property is set
//
//-----------------------------------------------------------------------------
BOOL VerifyDBPropSet(
const ULONG cPrpt,
DBPROPSET *pDBPropSet,
DBPROPSTATUS dwStatus,
BOOL fSet)
{
if(!(pDBPropSet->rgProperties))
return FALSE;
//Check guidPropertySet
if(pDBPropSet->guidPropertySet != *(g_rgDBProperties[cPrpt].pGuidPropertySet))
return FALSE;
//Check cProperties
if(pDBPropSet->cProperties != 1)
return FALSE;
//Check dwPropertyID
if(pDBPropSet->rgProperties->dwPropertyID !=
g_rgDBProperties[cPrpt].dwPropertyID)
return FALSE;
//Check dwOptions
if((3 != fSet) && (dwStatus != DBPROPSTATUS_BADOPTION))
{
if(pDBPropSet->rgProperties->dwOptions != DBPROPOPTIONS_REQUIRED)
return FALSE;
}
else if (dwStatus != DBPROPSTATUS_BADOPTION)
{
if(pDBPropSet->rgProperties->dwOptions != DBPROPOPTIONS_SETIFCHEAP)
return FALSE;
}
else
{
if(pDBPropSet->rgProperties->dwOptions != 99)
return FALSE;
}
//Check dwStatus
if(pDBPropSet->rgProperties->dwStatus != dwStatus)
return FALSE;
//Check column info
if(g_rgDBProperties[cPrpt].fColumn)
{
if(!CompareDBID(pDBPropSet->rgProperties->colid, DB_NULLID))
return FALSE;
}
//Check vValue
switch(g_rgDBProperties[cPrpt].vtType)
{
case VT_BOOL:
{
if(pDBPropSet->rgProperties->vValue.vt != VT_BOOL)
return FALSE;
if (fSet)
{
if (((V_BOOL(&g_rgDBProperties[cPrpt].vDefault) == VARIANT_TRUE) &&
(V_BOOL(&pDBPropSet->rgProperties->vValue) == VARIANT_TRUE)) ||
((V_BOOL(&g_rgDBProperties[cPrpt].vDefault) != VARIANT_TRUE) &&
(V_BOOL(&pDBPropSet->rgProperties->vValue) != VARIANT_TRUE)))
return FALSE;
}
else
{
if (V_BOOL(&g_rgDBProperties[cPrpt].vDefault) != V_BOOL(&pDBPropSet->rgProperties->vValue))
return FALSE;
}
}
break;
case VT_I4:
{
if(pDBPropSet->rgProperties->vValue.vt != VT_I4)
return FALSE;
switch(cPrpt)
{
case IDX_BOOKMARKTYPE:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_BMK_NUMERIC) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_BMK_KEY)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_BMK_NUMERIC) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_BMK_NUMERIC))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_FILTERCOMPAREOPS:
case IDX_FINDCOMPAREOPS:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CO_EQUALITY) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CO_STRING)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CO_EQUALITY) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CO_EQUALITY))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_LOCKMODE:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_LM_NONE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_LM_SINGLEROW)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_LM_NONE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_LM_NONE))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_COMMANDTIMEOUT:
case IDX_MAXOPENROWS:
case IDX_MAXPENDINGROWS:
case IDX_MAXROWS:
case IDX_MEMORYUSAGE:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == 0) &&
(pDBPropSet->rgProperties->vValue.lVal == 1)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != 0) &&
(pDBPropSet->rgProperties->vValue.lVal == 0))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_NOTIFICATIONGRANULARITY:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_NT_SINGLEROW) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NT_MULTIPLEROWS)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_NT_SINGLEROW) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NT_SINGLEROW))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_NOTIFICATIONPHASES:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_NP_OKTODO) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NP_ABOUTTODO)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_NP_OKTODO) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NP_OKTODO))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_NOTIFYCOLUMNSET:
case IDX_NOTIFYROWDELETE:
case IDX_NOTIFYROWFIRSTCHANGE:
case IDX_NOTIFYROWINSERT:
case IDX_NOTIFYROWRESYNCH:
case IDX_NOTIFYROWSETRELEASE:
case IDX_NOTIFYROWSETFETCHPOSITIONCHANGE:
case IDX_NOTIFYROWUNDOCHANGE:
case IDX_NOTIFYROWUNDODELETE:
case IDX_NOTIFYROWUNDOINSERT:
case IDX_NOTIFYROWUPDATE:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == 0) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NP_OKTODO)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != 0) &&
(pDBPropSet->rgProperties->vValue.lVal == 0))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_ROWSET_ASYNCH:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_ASYNCH_INITIALIZE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_ASYNCH_SEQUENTIALPOPULATION)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_ASYNCH_INITIALIZE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_ASYNCH_INITIALIZE))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_ROWTHREADMODEL:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_RT_FREETHREAD) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_RT_APTMTTHREAD)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_RT_FREETHREAD) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_RT_FREETHREAD))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_UPDATABILITY:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_UP_CHANGE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_UP_DELETE)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_UP_CHANGE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_UP_CHANGE))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
break;
}
}
break;
}
return TRUE;
}
//-----------------------------------------------------------------------------
//@mfunc: VerifyDBPropGet
//
//-----------------------------------------------------------------------------
BOOL VerifyDBPropGet(
const ULONG cPrpt,
DBPROPSET *pDBPropSet,
DBPROPSTATUS dwStatus,
BOOL fSet
)
{
if(!(pDBPropSet->rgProperties))
return FALSE;
//Check guidPropertySet
if(pDBPropSet->guidPropertySet!= *(g_rgDBProperties[cPrpt].pGuidPropertySet))
return FALSE;
//Check cProperties
if(pDBPropSet->cProperties !=1)
return FALSE;
//Check dwPropertyID
if(pDBPropSet->rgProperties->dwPropertyID !=
g_rgDBProperties[cPrpt].dwPropertyID)
return FALSE;
//Check dwStatus
if(pDBPropSet->rgProperties->dwStatus!=dwStatus)
return FALSE;
//Stop if dwStatus==DBPROPSTATUS_NOTSUPPORTED
if(dwStatus==DBPROPSTATUS_NOTSUPPORTED)
return TRUE;
//Check column info
if(g_rgDBProperties[cPrpt].fColumn && fSet)
{
if(!CompareDBID(pDBPropSet->rgProperties->colid, DB_NULLID))
return FALSE;
}
//Check vValue
switch(g_rgDBProperties[cPrpt].vtType)
{
case VT_BOOL:
{
if(pDBPropSet->rgProperties->vValue.vt != VT_BOOL)
return FALSE;
if (fSet)
{
if (((V_BOOL(&g_rgDBProperties[cPrpt].vDefault) == VARIANT_TRUE) &&
(V_BOOL(&pDBPropSet->rgProperties->vValue) == VARIANT_TRUE)) ||
((V_BOOL(&g_rgDBProperties[cPrpt].vDefault) != VARIANT_TRUE) &&
(V_BOOL(&pDBPropSet->rgProperties->vValue) != VARIANT_TRUE)))
return FALSE;
}
else
{
if (V_BOOL(&g_rgDBProperties[cPrpt].vDefault) != V_BOOL(&pDBPropSet->rgProperties->vValue))
return FALSE;
}
}
break;
case VT_I4:
{
if(pDBPropSet->rgProperties->vValue.vt != VT_I4)
return FALSE;
switch(cPrpt)
{
case IDX_BOOKMARKTYPE:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_BMK_NUMERIC) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_BMK_KEY)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_BMK_NUMERIC) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_BMK_NUMERIC))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_FILTERCOMPAREOPS:
case IDX_FINDCOMPAREOPS:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CO_EQUALITY) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CO_STRING)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CO_EQUALITY) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CO_EQUALITY))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_LOCKMODE:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_LM_NONE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_LM_SINGLEROW)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_LM_NONE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_LM_NONE))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_COMMANDTIMEOUT:
case IDX_MAXOPENROWS:
case IDX_MAXPENDINGROWS:
case IDX_MAXROWS:
case IDX_MEMORYUSAGE:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == 0) &&
(pDBPropSet->rgProperties->vValue.lVal == 1)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != 0) &&
(pDBPropSet->rgProperties->vValue.lVal == 0))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_NOTIFICATIONGRANULARITY:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_NT_SINGLEROW) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NT_MULTIPLEROWS)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_NT_SINGLEROW) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NT_SINGLEROW))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_NOTIFICATIONPHASES:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_NP_OKTODO) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NP_ABOUTTODO)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_NP_OKTODO) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NP_OKTODO))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_NOTIFYCOLUMNSET:
case IDX_NOTIFYROWDELETE:
case IDX_NOTIFYROWFIRSTCHANGE:
case IDX_NOTIFYROWINSERT:
case IDX_NOTIFYROWRESYNCH:
case IDX_NOTIFYROWSETRELEASE:
case IDX_NOTIFYROWSETFETCHPOSITIONCHANGE:
case IDX_NOTIFYROWUNDOCHANGE:
case IDX_NOTIFYROWUNDODELETE:
case IDX_NOTIFYROWUNDOINSERT:
case IDX_NOTIFYROWUPDATE:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == 0) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NP_OKTODO)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != 0) &&
(pDBPropSet->rgProperties->vValue.lVal == 0))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_ROWSET_ASYNCH:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_ASYNCH_INITIALIZE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_ASYNCH_SEQUENTIALPOPULATION)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_ASYNCH_INITIALIZE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_ASYNCH_INITIALIZE))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_ROWTHREADMODEL:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_RT_FREETHREAD) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_RT_APTMTTHREAD)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_RT_FREETHREAD) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_RT_FREETHREAD))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
case IDX_UPDATABILITY:
if ((fSet) &&
(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_UP_CHANGE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_UP_DELETE)) ||
((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_UP_CHANGE) &&
(pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_UP_CHANGE))))
break;
else if ((!fSet) &&
(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
break;
else
return FALSE;
break;
}
}
break;
}
return TRUE;
}
//-----------------------------------------------------------------------------
//@mfunc: VerifyDBPropDefault: Verify the return value is the same as
// the default value.
//
//-----------------------------------------------------------------------------
BOOL VerifyDBPropDefault(ULONG cPrpt, DBPROPSET *pDBPropSet, BOOL fAfterRowset)
{
if(!(pDBPropSet->rgProperties))
return FALSE;
//Check guidPropertySet
if(pDBPropSet->guidPropertySet != *(g_rgDBProperties[cPrpt].pGuidPropertySet))
return FALSE;
//Check cProperties
if(pDBPropSet->cProperties != 1)
return FALSE;
//Check dwPropertyID
if(pDBPropSet->rgProperties->dwPropertyID !=
g_rgDBProperties[cPrpt].dwPropertyID)
return FALSE;
//Check dwStatus has to be DBPROPSTATUS_OK
if(pDBPropSet->rgProperties->dwStatus != DBPROPSTATUS_OK)
return FALSE;
//Check vValue
if(!((fAfterRowset == TRUE) && (g_rgDBProperties[cPrpt].fSettable == FALSE)))
{
if(pDBPropSet->rgProperties->vValue.vt == VT_I4)
{
if(pDBPropSet->rgProperties->vValue.lVal!=g_rgDBProperties[cPrpt].vDefault.lVal)
return FALSE;
}
else
{
if(V_BOOL(&pDBPropSet->rgProperties->vValue) !=
V_BOOL(&g_rgDBProperties[cPrpt].vDefault))
return FALSE;
}
}
return TRUE;
}
//-----------------------------------------------------------------------------
//@mfunc: Check to make sure a specific command properties is returned from
// ICommandProperties->GetProperties
//
//-----------------------------------------------------------------------------
BOOL CheckSet(
ULONG cIDX, //the index to g_rgDBProperties
GUID *pGuidPropertySet, //the GUID of the property set
ULONG cProperties, //the count of cProperties
DBPROP *rgProperties //the array of DBPROP returned by ICommandProperties::GetProperties
)
{
ULONG cCount;
for(cCount=0;cCount<cProperties;cCount++)
{
//Check the guidPropertySet and dwPropertyID
if( (*(g_rgDBProperties[cIDX].pGuidPropertySet)== *pGuidPropertySet)
&&(g_rgDBProperties[cIDX].dwPropertyID==rgProperties[cCount].dwPropertyID))
{
if(rgProperties[cCount].vValue.vt != g_rgDBProperties[cIDX].vtType)
return FALSE;
if(!CompareVariant(&(rgProperties[cCount].vValue),
&(g_rgDBProperties[cIDX].vDefault)))
return FALSE;
else
return TRUE;
}
}
//Check if the property is supported
if((cCount==cProperties) && (!(g_rgDBProperties[cIDX].fSupported)))
return TRUE;
return FALSE;
}
//-----------------------------------------------------------------------------
// @func Module level initialization routine
//
// @rdesc Success or Failure
// @flag TRUE | Successful initialization
// @flag FALSE | Initialization problems
//
//-----------------------------------------------------------------------------
BOOL ModuleInit(CThisTestModule * pThisTestModule)
{
HRESULT hr=E_FAIL;
IDBProperties *pIDBProperties=NULL;
ICommandProperties *pICommandProperties=NULL;
BOOL fInitPass=FALSE;
ULONG cPropertySets=0;
DBPROPSET *rgPropertySets=NULL;
IDBInitialize * pIDBInitialize = NULL;
// Initialize the globals
g_ulExtraROWProp=0;
g_ulPropertyCount=0;
g_pCTable=NULL;
g_pIDBCreateCommand=NULL;
// Set the fSupported back to TRUE
for(ULONG i=0; i < g_cDBProperties; i++) {
g_rgDBProperties[i].fSupported=TRUE;
g_rgDBProperties[i].fColumnOK=FALSE;
}
// Use pThisTestModule->m_pIUnknown2 to get an IDBCreateCommand pointer
// and pThisTestModule->m_pIUnknown to get an IDBCreateSession pointer.
if(!CommonModuleInit(pThisTestModule))
return FALSE;
// Fail gracefully and quit module if we don't support Commands
if(!VerifyInterface(pThisTestModule->m_pIUnknown2, IID_IDBCreateCommand,
SESSION_INTERFACE, (IUnknown**)&g_pIDBCreateCommand))
{
odtLog << L"IDBCreateCommand is not supported by Provider." << ENDL;
return TEST_SKIPPED;
}
// IDBProperties interface
if(!VerifyInterface(pThisTestModule->m_pIUnknown, IID_IDBProperties,
DATASOURCE_INTERFACE, (IUnknown **)&pIDBProperties))
goto END;
// Create a command object, asking for ICommandProperties pointer
if(!SUCCEEDED(g_pIDBCreateCommand->CreateCommand(NULL,IID_ICommandProperties,
(IUnknown **)&pICommandProperties)))
{
odtLog<<wszCMDInterfaceNotSupported;
fInitPass=TEST_SKIPPED;
goto END;
}
// Retrieve the information on supported command properties and their
// default values
if(!InitSupported(pIDBProperties, pThisTestModule))
goto END;
// Get the default values
if(InitDefault(pICommandProperties, pThisTestModule))
fInitPass=TRUE;
// Create a table
if(!CreateTable(g_pIDBCreateCommand))
odtLog <<wszCanNotCreateTable;
if (!VerifyInterface(pThisTestModule->m_pIUnknown, IID_IDBInitialize, DATASOURCE_INTERFACE, (IUnknown**)&pIDBInitialize))
return FALSE;
END:
// Release the ICommandProperties pointer on the command object
SAFE_RELEASE_(pICommandProperties);
SAFE_RELEASE(pIDBProperties);
SAFE_RELEASE(pIDBInitialize);
FreeProperties(&cPropertySets,&rgPropertySets);
return fInitPass;
}
//-----------------------------------------------------------------------------
// @func Module level termination routine
//
// @rdesc Success or Failure
// @flag TRUE | Successful initialization
// @flag FALSE | Initialization problems
//
//-----------------------------------------------------------------------------
BOOL ModuleTerminate(CThisTestModule * pThisTestModule)
{
//Drop the table
if(g_pCTable)
{
g_pCTable->DropTable();
delete g_pCTable;
}
// Loop through the struct. Free the variants
for(ULONG cDBProperties = 0; cDBProperties<g_cDBProperties; cDBProperties++)
VariantClear(&g_rgDBProperties[cDBProperties].vDefault);
//Release g_pICreateCommand pointer
SAFE_RELEASE(g_pIDBCreateCommand);
//Release the IDBCreateCommand pointer to pThisTestModule->m_pIUnknown2
//and a IDBCreateSession pointer to pThisTestModule->m_pIUnknown.
if(!CommonModuleTerminate(pThisTestModule))
return FALSE;
return TRUE;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Base test Case Section
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//Base class TCICMDPRPT: The base class for the rest of test cases in this
// test module.
class TCICMDPRPT : public COLEDB
{
private:
protected:
//@cmember: Interface pointer for ICommand
ICommand *m_pICommand;
//@cmember: Interface pointer for ICommandProperties
ICommandProperties *m_pICommandProperties;
//@cmember: Interface pointer for ICommandText
ICommandText *m_pICommandText;
//@cmember: Interface pointer for IRowset
IRowsetInfo *m_pIRowsetInfo;
//@cmember: HResult
HRESULT m_hr;
//@mfunc: Init creates a Data Source object, a DB Session object,
//and a command object and initialialize interface pointers
BOOL Init();
//@mfunc: Retreive supported DBProperties
BOOL InitSupported();
//@mfunc: Terminate releases the data source object, DB Session object,
// and Command object
BOOL Terminate();
//@mfunc: Recreate a new command object, start from scratch
BOOL ResetProperties();
//@mfunc: Open a rowset and initialize m_pIRowset
BOOL OpenRowset(EQUERY eSQLStmt=SELECT_COLLISTFROMTBL);
//@mfunc: Release a rowset object
BOOL ReleaseRowset();
//@mfunc: Set Command text,
BOOL ReadyToExecute(EQUERY eSQLStmt=SELECT_COLLISTFROMTBL);
//@mfunc: Clean Up Command text
BOOL CleanUpFromExecute();
//@mfunc: Verify if the property is supported. It has to be called after
// InitSupported()
inline BOOL VerifySupported(ULONG idxPrpt)
{return g_rgDBProperties[idxPrpt].fSupported;};
public:
//constructor
TCICMDPRPT(WCHAR *wstrTestCaseName);
//destructor
virtual ~TCICMDPRPT();
};
//--------------------------------------------------------------------
// @mfunc base class TCICMDPRPT constructor, must take testcase name
// as parameter.
//
TCICMDPRPT::TCICMDPRPT(WCHAR * wstrTestCaseName) //Takes TestCase Class name as parameter
: COLEDB (wstrTestCaseName)
{
//initialize member data
m_pICommand=NULL;
m_pICommandProperties = NULL;
m_pICommandText=NULL;
m_pIRowsetInfo = NULL;
}
//--------------------------------------------------------------------
// @mfunc base class TCICMDPRPT destructor
//
TCICMDPRPT::~TCICMDPRPT()
{
}
//--------------------------------------------------------------------
//@mfunc: Init creates a Data Source object, a DB Session object,
//and a command object and initialize corresponding interface pointers.
//
BOOL TCICMDPRPT::Init()
{
if(!(COLEDB::Init()))
goto END;
//create a command object
if(!CHECK(g_pIDBCreateCommand->CreateCommand(NULL,IID_ICommand,(IUnknown **)&m_pICommand),S_OK))
goto END;
//queryinterface for ICommandProperties interface pointer
if(!CHECK(m_pICommand->QueryInterface(IID_ICommandProperties,(LPVOID *)&m_pICommandProperties),S_OK))
goto END;
return TRUE;
END:
odtLog<<wszTestCaseInitFail;
return FALSE;
}
//--------------------------------------------------------------------
//@mfunc: Terminate release the data source object, DB Session object, Command object
//
BOOL TCICMDPRPT::Terminate()
{
// Release the objects
SAFE_RELEASE(m_pICommandProperties);
SAFE_RELEASE_(m_pICommand);
return (COLEDB::Terminate());
}
//--------------------------------------------------------------------
// @cmember Recreate a new command object, start from scratch
//
BOOL TCICMDPRPT::ResetProperties()
{
//Release the objects
SAFE_RELEASE(m_pIRowsetInfo);
SAFE_RELEASE(m_pICommandText);
SAFE_RELEASE(m_pICommandProperties);
SAFE_RELEASE(m_pICommand);
//Create CommandObject
if(!CHECK(g_pIDBCreateCommand->CreateCommand(NULL,IID_ICommand,(IUnknown **)&m_pICommand),S_OK))
{
COMPARE(m_pICommand, NULL);
return FALSE;
}
//QueryInterface for ICommandProperties
if(!CHECK(m_pICommand->QueryInterface(IID_ICommandProperties,
(LPVOID *)&m_pICommandProperties), S_OK))
{
odtLog<<wszCMDInterfaceNotSupported;
SAFE_RELEASE_(m_pICommand);
return FALSE;
}
return TRUE;
}
//--------------------------------------------------------------------
//@mfunc: Open a rowset and initialize m_pIRowset. OpenRowset has to be called
// after CreateTable().
//
BOOL TCICMDPRPT::OpenRowset(EQUERY eSQLStmt)
{
HRESULT hr = E_FAIL;
//Make sure a select statement has been set up
if(!m_pICommandText)
if(!ReadyToExecute(eSQLStmt))
goto END;
hr=m_pICommand->Execute(NULL,IID_IRowsetInfo,NULL,NULL,(IUnknown **)&m_pIRowsetInfo);
// The Execute may fail
if( ((hr == S_OK) && (m_pIRowsetInfo)) ||
((hr == DB_E_ERRORSOCCURRED) && (!m_pIRowsetInfo)) )
{
// If the Execute failed, get the DBPROPSET_PROPERTIESINERROR errors
if(hr == DB_E_ERRORSOCCURRED)
odtLog << L"The Execute failed" <<ENDL;
return TRUE;
}
END:
return FALSE;
}
//--------------------------------------------------------------------
//@mfunc: release a rowset object
//
BOOL TCICMDPRPT::ReleaseRowset()
{
// Release the object
SAFE_RELEASE_(m_pIRowsetInfo);
return (CleanUpFromExecute());
}
//--------------------------------------------------------------------
//mfunc: ReadyToExecute: Set the command text for
// the command object. ReadyToExecute has to be called after
// CreateTable()
//
BOOL TCICMDPRPT::ReadyToExecute(EQUERY eSQLStmt)
{
WCHAR *wszSelectStmt=NULL;
BOOL fPass=FALSE;
ULONG cRefCount=0;
//make sure Init() is called
if(!m_pICommandProperties)
goto END;
//make sure CreateTable( ) is called
if(!g_pCTable)
goto END;
//ask for ICommandText interface
if(!SUCCEEDED(m_pICommandProperties->QueryInterface(IID_ICommandText,
(LPVOID *)&m_pICommandText)))
{
odtLog<<wszICommandTextNotSupprted;
goto END;
}
//get the SQL Statement
if(!SUCCEEDED(g_pCTable->CreateSQLStmt(eSQLStmt,NULL,&wszSelectStmt,NULL,NULL)))
goto END;
//set the SQL Statement
if(CHECK(m_pICommandText->SetCommandText(DBGUID_DBSQL, wszSelectStmt),S_OK))
fPass=TRUE;
END:
//release the memory for SQL Statement
PROVIDER_FREE(wszSelectStmt);
return fPass;
}
//--------------------------------------------------------------------
//@mfunc: Clean Up Command text
//
BOOL TCICMDPRPT::CleanUpFromExecute()
{
//m_pICommand and m_pICommandProperties are only two interfaces pointers on the command.
SAFE_RELEASE(m_pICommandText);
return TRUE;
}
//---------------------------------------------------------------------------------
//base class: base class inherited by TCICMDPRPT_SetProperties
// and TCICMDPRPT_GetProperties
//
class TCICMDPRPT_ChangeProperties:public TCICMDPRPT
{
protected:
//@cmember: The index array of default implied properties.
//Should be IAccessor, IRowsetInfo, IColumnsInfo, IConvertType, and IRowset
ULONG m_rgImpPrpt[5];
//@cmember: Initialization Routine
virtual BOOL Init();
//@cmember: Termination Routine
virtual BOOL Terminate() {return (TCICMDPRPT::Terminate());};
//@mfunc: Check to make sure the mandatory interfaces are set
BOOL VerifyMandatoryInterfaces();
//@mfunc: Get the attribute of the property
EPROPERTYATTR GetPrptAttr(const ULONG cPrpt);
//@mfunc: Verify the property is set or unset correctly
virtual BOOL VerifyProperty(ULONG cPrpt,BOOL fIReadData=FALSE,ULONG cImpPrpt=0,
ULONG rgIDXPrpt[]=NULL){return TRUE;};
//@mfunc: Verify the implied properties
virtual BOOL VerifyImpliedProperties(ULONG cImpPrpt,ULONG rgIDXPrpt[]){return TRUE;};
//@mfunc: Verify the interface is mandatory
BOOL VerifyInterfaceMandatory(ULONG cPrpt,BOOL fIReadData);
//@mfunc: Verify the rowset property set on a particular column
BOOL VerifyRowsetColumn(ULONG cPrpt);
//@mfunc: Verify the command property is not supported
BOOL VerifyNotSupported(ULONG cPrpt, EPROPERTYATTR ePrptAttr);
//@mfunc: Verify the interface property is supported
BOOL VerifyInterfaceSupported(ULONG cPrpt,BOOL fIReadData=FALSE,
ULONG cImpPrpt=0,ULONG rgIDXPrpt[]=NULL, BOOL fSet=TRUE);
//@mfunc: Verify rowset property is supported and not settable
BOOL VerifyRowsetSettable(ULONG cPrpt,BOOL fIReadData=FALSE,
ULONG cImpPrpt=0,ULONG rgIDXPrpt[]=NULL, BOOL fSet=TRUE);
//@mfunc: Verify rowset property is supported and settable
BOOL VerifyRowsetNotSettable(ULONG cPrpt,BOOL fIReadData=FALSE,
ULONG cImpPrpt=0,ULONG rgIDXPrpt[]=NULL, BOOL fSet=TRUE);
public:
//Constructor
TCICMDPRPT_ChangeProperties(WCHAR *wstrTestCaseName);
//Destructor
virtual ~TCICMDPRPT_ChangeProperties();
};
//--------------------------------------------------------------------
// @mfunc base class TCICMDPRPT constructor, must take testcase name
// as parameter.
//
TCICMDPRPT_ChangeProperties::TCICMDPRPT_ChangeProperties(WCHAR * wstrTestCaseName) //Takes TestCase Class name as parameter
: TCICMDPRPT (wstrTestCaseName)
{
}
//--------------------------------------------------------------------
// @mfunc base class TCICMDPRPT destructor
//
TCICMDPRPT_ChangeProperties::~TCICMDPRPT_ChangeProperties()
{
}
//--------------------------------------------------------------------
// @mfunc Init: set up the default implied properties
//
BOOL TCICMDPRPT_ChangeProperties::Init()
{
if(TCICMDPRPT::Init())
{
m_rgImpPrpt[0]=IDX_IACCESSOR;
m_rgImpPrpt[1]=IDX_IROWSETINFO;
m_rgImpPrpt[2]=IDX_ICOLUMNSINFO;
m_rgImpPrpt[3]=IDX_IROWSET;
m_rgImpPrpt[4]=IDX_ICONVERTTYPE;
return TRUE;
}
return FALSE;
}
//--------------------------------------------------------------------
//@mfunc: Get the attribute of the property
//
EPROPERTYATTR TCICMDPRPT_ChangeProperties::GetPrptAttr(const ULONG cPrpt)
{
BOOL fInterface=FALSE;
if(cPrpt >= g_cDBProperties)
return PROPERTY_INVALID;
//Return INTERFACE_MANDATORY for IAccessor, IColumnsInfo, IRowsetInfo,
// IRowset, and IConvertType
if( (cPrpt==(ULONG)IDX_IACCESSOR) ||
(cPrpt==(ULONG)IDX_ICOLUMNSINFO) ||
(cPrpt==(ULONG)IDX_IROWSETINFO) ||
(cPrpt==(ULONG)IDX_ICONVERTTYPE) ||
(cPrpt==(ULONG)IDX_IROWSET)
)
return INTERFACE_MANDATORY;
if(cPrpt >= (ULONG)IDX_INTERFACE_START &&
cPrpt <= (ULONG)IDX_INTERFACE_END)
fInterface=TRUE;
//Check if the property is supported
if(((cPrpt < IDX_ROWSET_START) || (cPrpt > IDX_ROWSET_END)) ||
(!(g_rgDBProperties[cPrpt].fSupported)))
if(fInterface)
return INTERFACE_NOT_SUPPORTED;
else
return ROWSET_NOT_SUPPORTED;
//Check if the property is settable
if(g_rgDBProperties[cPrpt].fSettable)
//Interface property is always settable
if(fInterface)
return INTERFACE_SUPPORTED;
else
return ROWSET_SETTABLE;
return (ROWSET_NOT_SETTABLE);
}
//--------------------------------------------------------------------------------
//@ mfunc: Check to make sure the mandatory interfaces are set
//
BOOL TCICMDPRPT_ChangeProperties::VerifyMandatoryInterfaces()
{
ULONG cPrpt;
DBPROPID DBPropID;
DBPROPIDSET DBPropIDSet;
ULONG cPropertySets;
DBPROPSET *pPropertySets=NULL;
const GUID *pGuidProperty;
IUnknown *pIUnknown;
BOOL fTest=FALSE;
//Init DBPropIDSet
DBPropIDSet.guidPropertySet=DBPROPSET_ROWSET;
DBPropIDSet.cPropertyIDs=1;
DBPropIDSet.rgPropertyIDs=&DBPropID;
//Get each of the mandatory interfaces
for(cPrpt=0;cPrpt<5;cPrpt++)
{
DBPropID=g_rgDBProperties[m_rgImpPrpt[cPrpt]].dwPropertyID;
//Call GetProperties to verify the property is set
if(!CHECK(m_pIRowsetInfo->GetProperties(1,&DBPropIDSet,
&cPropertySets,&pPropertySets),S_OK))
goto END;
//Only one set will come back
if(!COMPARE(cPropertySets,1))
goto END;
//Only one property will come back
if(!COMPARE(pPropertySets->cProperties,1))
goto END;
if(!COMPARE(V_BOOL(&pPropertySets->rgProperties->vValue),VARIANT_TRUE))
goto END;
//Release the memory for next use
FreeProperties(&cPropertySets,&pPropertySets);
//Call GetProperties to verify the property is set
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cPropertySets,&pPropertySets),S_OK))
goto END;
//Only one set will come back
if(!COMPARE(cPropertySets,1))
goto END;
//Only one property will come back
if(!COMPARE(pPropertySets->cProperties,1))
goto END;
if(!COMPARE(V_BOOL(&pPropertySets->rgProperties->vValue),VARIANT_TRUE))
goto END;
//Release the memory for next use
FreeProperties(&cPropertySets,&pPropertySets);
//Get the guid for the interface
pGuidProperty=GetGuidPointer(m_rgImpPrpt[cPrpt]);
//Call Queryinterface to verify that the property is set
//if the property is an interface property
if(!CHECK(m_pIRowsetInfo->QueryInterface(*pGuidProperty,
(LPVOID *)&pIUnknown),S_OK))
goto END;
SAFE_RELEASE(pIUnknown);
fTest=TRUE;
}
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&pPropertySets);
if(fTest && (cPrpt==5))
return TRUE;
else
return FALSE;
}
//------------------------------------------------------------------------------------
// @cmember: Verify the interface is mandatory
//
BOOL TCICMDPRPT_ChangeProperties::VerifyInterfaceMandatory(ULONG cPrpt,BOOL fIReadData)
{
DBPROPIDSET DBPropIDSet;
DBPROPID DBPropID;
DBPROPSET DBPropSet;
DBPROP DBProp;
DBPROPSET *pDBPropSet=NULL;
ULONG cDBPrpt=0;
BOOL fTest=FALSE;
//Reset the command objects
if(!ResetProperties())
return FALSE;
//Init
DBPropIDSet.guidPropertySet=DBPROPSET_ROWSET;
DBPropIDSet.cPropertyIDs=1;
DBPropIDSet.rgPropertyIDs=&DBPropID;
DBPropSet.rgProperties=&DBProp;
//Set property to TRUE should return NOTSETTABLE
//Set DBPropSet
if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
goto END;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet), DB_E_ERRORSOCCURRED))
goto END;
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSETTABLE,TRUE))
goto END;
//Set property to FALSE should return NOTSETTABLE
if(!InitDBPropSet(cPrpt,&DBPropSet,FALSE))
goto END;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet), S_OK))
goto END;
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_OK,FALSE))
goto END;
//Get property always returns TRUE
//set DBPROPIDSET
if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
goto END;
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet),S_OK))
goto END;
//One property set should be returned
if(!COMPARE(cDBPrpt,1))
goto END;
//The property should always be set
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,FALSE))
goto END;
//Open a rowset
if(!OpenRowset())
goto END;
//The interface should always be supported
if(!m_pIRowsetInfo || VerifyMandatoryInterfaces())
fTest=TRUE;
ReleaseRowset();
END:
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
//------------------------------------------------------------------------------------
//@mfunc: Verify the rowset property set on a particular column
//
BOOL TCICMDPRPT_ChangeProperties::VerifyRowsetColumn(ULONG cPrpt)
{
IColumnsInfo *pIColumnsInfo=NULL;
ICommandPrepare *pICommandPrepare=NULL;
DBORDINAL cColumns;
DBCOLUMNINFO *pColumnsInfo;
WCHAR *pwStrings;
ULONG cDBPrpt;
DBPROPIDSET DBPropIDSet;
DBPROPID DBPropID;
DBPROPSET DBPropSet;
DBPROP DBProp;
DBPROPSET *pDBPropSet=NULL;
BOOL fPass=FALSE;
//Make sure it is supported
if( !(g_rgDBProperties[cPrpt].fSupported) ||
!(g_rgDBProperties[cPrpt].fSettable))
return TRUE;
if(!ResetProperties())
return FALSE;
//Init
DBPropIDSet.rgPropertyIDs=&DBPropID;
DBPropSet.rgProperties=&DBProp;
//Set DBPropSet
if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
return FALSE;
//Set up a select * statement
if(!ReadyToExecute())
return FALSE;
//Ask for ICommandPrepare interface
if(!CHECK(m_pICommandProperties->QueryInterface(IID_ICommandPrepare,
(LPVOID *)&pICommandPrepare),S_OK))
goto END;
//Prepare the query so that IColumndInfo will return valid information
if(!CHECK(pICommandPrepare->Prepare(1),S_OK))
goto END;
//Ask for IColumnsInfo interface
if(!CHECK(m_pICommandProperties->QueryInterface(IID_IColumnsInfo,
(LPVOID *)&pIColumnsInfo),S_OK))
goto END;
//Ask for the columns ID of the first column
if(!CHECK(pIColumnsInfo->GetColumnInfo(&cColumns,&pColumnsInfo,&pwStrings),S_OK))
goto END;
//Have to have columns in the table
if(!cColumns)
goto END;
//Try to set the property
memcpy(&(DBPropSet.rgProperties->colid),
&(pColumnsInfo[1].columnid),sizeof(DBID));
//Unprepare
if(!CHECK(pICommandPrepare->Unprepare(),S_OK))
goto END;
//Set the property with the first column deferred
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet),S_OK))
goto END;
//Open a rowset
if(!OpenRowset())
goto END;
//Set DBPROPIDSET
if(!InitDBPropIDSet(cPrpt, &DBPropIDSet))
goto END;
//Verify the property is set correctly
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet),S_OK))
goto END;
if(CompareDBID(pDBPropSet->rgProperties->colid,
pColumnsInfo[1].columnid))
fPass=TRUE;
END:
//Free memory
PROVIDER_FREE(pColumnsInfo);
PROVIDER_FREE(pwStrings);
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Release the objects
SAFE_RELEASE(pICommandPrepare);
SAFE_RELEASE(pIColumnsInfo);
ReleaseRowset();
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
//------------------------------------------------------------------------------------
// @cmember: Verify the property is not supported
//
BOOL TCICMDPRPT_ChangeProperties::VerifyNotSupported(
ULONG cPrpt, //@[in]: The index to g_rgDBProperties array
EPROPERTYATTR ePrptAttr //@[in]: Either INTERFACE_NOT_SUPPORTED or ROWSET_NOT_SUPPORTED
)
{
DBPROPIDSET DBPropIDSet;
DBPROPID DBPropID;
DBPROPSET DBPropSet;
DBPROP DBProp;
DBPROPSET *pDBPropSet=NULL;
ULONG cDBPrpt=0;
IUnknown *pIUnknown;
BOOL fPass=FALSE;
//Create a new command object, start from scratch
if(!ResetProperties())
return FALSE;
if(ePrptAttr!=INTERFACE_NOT_SUPPORTED && ePrptAttr!=ROWSET_NOT_SUPPORTED)
return FALSE;
//Init
DBPropIDSet.rgPropertyIDs=&DBPropID;
DBPropSet.rgProperties=&DBProp;
//If the property is a mandatory interface, it has to be supported
if(!PassAsNotSupported(g_rgDBProperties[cPrpt].dwPropertyID))
return FALSE;
//Try to unset the property
//Init DBPropSet
if(!InitDBPropSet(cPrpt,&DBPropSet,FALSE))
goto END;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet), DB_E_ERRORSOCCURRED))
goto END;
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSUPPORTED,FALSE))
goto END;
//Try to set the property
if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
goto END;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet), DB_E_ERRORSOCCURRED))
goto END;
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSUPPORTED,TRUE))
goto END;
//Verify that the property is not supported by calling GetProperties
//set DBPROPIDSET
if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
goto END;
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet), DB_E_ERRORSOCCURRED))
goto END;
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_NOTSUPPORTED,TRUE))
goto END;
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Open a rowset
if(!OpenRowset())
goto END;
// Check the pointer the property my conflict
if(!m_pIRowsetInfo)
{
fPass=TRUE;
goto END;
}
//Call Queryinterface if the property is an interface property
if(ePrptAttr==INTERFACE_NOT_SUPPORTED)
{
if(!CHECK(m_hr=m_pIRowsetInfo->QueryInterface(*(GetGuidPointer(cPrpt)),
(LPVOID *)&pIUnknown), E_NOINTERFACE))
{
if(SUCCEEDED(m_hr))
SAFE_RELEASE(pIUnknown);
goto END;
}
//pIUnknown should be NULL
if(!COMPARE(pIUnknown, NULL))
goto END;
}
//Call GetRowsetInfo to verify that the property is not supported
if(!CHECK(m_pIRowsetInfo->GetProperties(1,&DBPropIDSet,&cDBPrpt,
&pDBPropSet), DB_E_ERRORSOCCURRED))
goto END;
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_NOTSUPPORTED,TRUE))
goto END;
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Verify that the property is not supported by calling GetProperties
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,&cDBPrpt,
&pDBPropSet), DB_E_ERRORSOCCURRED))
goto END;
if(VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_NOTSUPPORTED,TRUE))
fPass=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
ReleaseRowset();
return (fPass);
}
//-------------------------------------------------------------------------------------
// @cmember: Verify the interface property is supported
//
BOOL TCICMDPRPT_ChangeProperties::VerifyInterfaceSupported
(ULONG cPrpt, //@[in]: The index to g_rgDBProperties array
BOOL fIReadData,
ULONG cImpPrpt, //@[in]: The count of implied properties
ULONG rgIDXPrpt[], //@[in]: The index array of implied properties
BOOL fSet //@[in]: To set or unset the property
)
{
DBPROPIDSET DBPropIDSet;
DBPROPID DBPropID;
DBPROPSET DBPropSet;
DBPROP DBProp;
DBPROPSET *pDBPropSet=NULL;
ULONG cDBPrpt;
IUnknown *pIUnknown;
BOOL fPass=FALSE;
//Create a new command object, start from scratch
if(!ResetProperties())
goto END;
//Init
DBPropIDSet.rgPropertyIDs=&DBPropID;
DBPropSet.rgProperties=&DBProp;
//Set the property to the default value using VT_EMPTY
if(!InitDBPropSet(cPrpt,&DBPropSet,2))
goto END;
//Set the properties
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet),
S_OK))
goto END;
//Get the property and check the default values
if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
goto END;
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet),S_OK))
goto END;
//Verify the result against its default values
if(!VerifyDBPropDefault(cPrpt,pDBPropSet,FALSE))
goto END;
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Set the property with dwOptions = DBPROPOPTIONS_SETIFCHEAP
if(!InitDBPropSet(cPrpt,&DBPropSet,3))
goto END;
//Set the properties
m_hr = m_pICommandProperties->SetProperties(1,&DBPropSet);
//As long as we get back S_OK with status = OK or
if( m_hr == S_OK )
{
if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_OK))
goto END;
}
else
{
//DB_E_ERRORSOCCURRED with NOTSET it succeeded.
if( m_hr == DB_E_ERRORSOCCURRED )
{
if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_NOTSET))
goto END;
}
else
goto END;
}
//Verify the result. Status was already verified and
//fSet=3 that which is the same as fSet=TRUE
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBProp.dwStatus,3))
goto END;
//Set the property
//Init DBPropSet
if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
goto END;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet),S_OK))
goto END;
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_OK,TRUE))
goto END;
//Initialization to set/unset the property
if(!fSet)
{
if(!InitDBPropSet(cPrpt,&DBPropSet,FALSE))
goto END;
}
//Try to set/unset the property
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet),S_OK))
goto END;
if(fSet)
{
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_OK,TRUE))
goto END;
}
else
{
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_OK,FALSE))
goto END;
}
//Verify that the property is set/unset by calling GetProperties
//Init DBPOPRID
if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
goto END;
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet),S_OK))
goto END;
//Only one set is returned
if(!COMPARE(cDBPrpt,1))
goto END;
//Make sure the property is set/unset
if(fSet)
{
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK, TRUE))
goto END;
}
else
{
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK, FALSE))
goto END;
}
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Open a rowset
if(!OpenRowset())
goto END;
if(m_pIRowsetInfo)
{
if((fSet) && (V_BOOL(&g_rgDBProperties[cPrpt].vDefault) == VARIANT_FALSE))
{ //If the interface is set
if( (g_rgDBProperties[cPrpt].dwPropertyID!=DBPROP_ISequentialStream) &&
(g_rgDBProperties[cPrpt].dwPropertyID!=DBPROP_IStream) &&
(g_rgDBProperties[cPrpt].dwPropertyID!=DBPROP_IStorage) &&
(g_rgDBProperties[cPrpt].dwPropertyID!=DBPROP_ILockBytes) )
{
if(!CHECK(m_pIRowsetInfo->QueryInterface(*GetGuidPointer(cPrpt),
(LPVOID *)&pIUnknown),S_OK))
goto END;
SAFE_RELEASE(pIUnknown);
}
}
else
{ //If the interface is not set, it is still possibly set by the provider
m_hr=m_pIRowsetInfo->QueryInterface(*GetGuidPointer(cPrpt),
(LPVOID *)&pIUnknown);
if(SUCCEEDED(m_hr))
SAFE_RELEASE(pIUnknown);
}
//Call GetRowsetInfo to verify the property is set/unset
if(!CHECK(m_pIRowsetInfo->GetProperties(1,&DBPropIDSet,&cDBPrpt,
&pDBPropSet),S_OK))
goto END;
//Only one property set is returned
if(!COMPARE(cDBPrpt,1))
goto END;
//Make sure the property is set/unset
if(fSet)
{
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,TRUE))
goto END;
}
else
{
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,FALSE))
goto END;
}
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Check for mandatory interfaces
if(!VerifyMandatoryInterfaces())
goto END;
}
//Call GetProperties to verify the property is set/unset
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet),S_OK))
goto END;
//Only one property set is returned
if(!COMPARE(cDBPrpt,1))
goto END;
//Make sure the property is set/unset
if(fSet)
{
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,TRUE))
goto END;
}
else
{
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,FALSE))
goto END;
}
//Check for the implied properties. If the property is set, the implied properties
//shoud be set.
if(cImpPrpt)
if(!VerifyImpliedProperties(cImpPrpt,rgIDXPrpt))
goto END;
fPass=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
ReleaseRowset();
return fPass;
}
//-------------------------------------------------------------------------------------
// @cmember: Verify the rowset property is not settable
//
BOOL TCICMDPRPT_ChangeProperties::VerifyRowsetNotSettable
(ULONG cPrpt, //@[in]: The index to g_rgDBProperties array
BOOL fIReadData,
ULONG cImpPrpt, //@[in]: The count of implied properties
ULONG rgIDXPrpt[], //@[in]: The index array of implied properties
BOOL fSet //@[in]: To set or unset the property
)
{
DBPROPIDSET DBPropIDSet;
DBPROPID DBPropID;
DBPROPSET DBPropSet;
DBPROP DBProp;
DBPROPSET *pDBPropSet=NULL;
ULONG cDBPrpt=0;
BOOL fPass=FALSE;
HRESULT hr=S_OK;
//Create a new command object, start from scratch
if(!ResetProperties())
return FALSE;
//Initialization
DBPropIDSet.rgPropertyIDs=&DBPropID;
DBPropSet.rgProperties=&DBProp;
//Initialization to set/unset the property
if(fSet)
hr = DB_E_ERRORSOCCURRED;
else
hr = S_OK;
if(!InitDBPropSet(cPrpt,&DBPropSet,fSet))
goto END;
//Try to set the property
m_hr=m_pICommandProperties->SetProperties(1,&DBPropSet);
//Check for the ReturnCode
if(SUCCEEDED(m_hr) && fSet && CHECKW(m_hr, hr))
odtLog <<wszPropertySet;
else
CHECK(m_hr, hr);
//Verify the status value
// If GetPropertyInfo lied about ReadOnly
if(!VerifyDBPropSet(cPrpt,&DBPropSet,(FAILED(m_hr) ? DBPROPSTATUS_NOTSETTABLE : DBPROPSTATUS_OK),fSet))
goto END;
//Verify the property before execution by calling GetProperties.
//Init DBPROPIDSET
if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
goto END;
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet), S_OK))
goto END;
//Only one set should return
if(!COMPARE(cDBPrpt, 1))
goto END;
//Verify the result against its default values
if(!VerifyDBPropDefault(cPrpt,pDBPropSet,(FAILED(m_hr) ? FALSE : TRUE)))
goto END;
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
if(!InitDBPropSet(cPrpt,&DBPropSet,FALSE))
goto END;
//Try to set to the default property
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet), S_OK))
goto END;
//Open a rowset
if(!OpenRowset())
goto END;
if(m_pIRowsetInfo)
{
//Call GetRowsetInfo to retrieve rowset property info
if(!CHECK(m_pIRowsetInfo->GetProperties(1,&DBPropIDSet,&cDBPrpt,
&pDBPropSet),S_OK))
goto END;
//Only one set should return
if(!COMPARE(cDBPrpt, 1))
goto END;
//Verify the result against its default values
if(!VerifyDBPropDefault(cPrpt,pDBPropSet,TRUE))
goto END;
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Check for mandatory interfaces
if(!VerifyMandatoryInterfaces())
goto END;
}
//Call GetProperties to retrieve rowset property info
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,&cDBPrpt,
&pDBPropSet),S_OK))
goto END;
//Only one set should return
if(!COMPARE(cDBPrpt, 1))
goto END;
//Verify the result against its default values
if(!VerifyDBPropDefault(cPrpt,pDBPropSet,TRUE))
goto END;
//Check for the implied properties. If the property is set, the implied properties
//shoud be set.
//We are verifying unsettable property, so only if the default is TRUR, the implied properties
//would be true.
if(cImpPrpt && (g_rgDBProperties[cPrpt].vDefault.boolVal==VARIANT_TRUE) && fSet)
if(!VerifyImpliedProperties(cImpPrpt,rgIDXPrpt))
fPass=FALSE;
fPass=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
ReleaseRowset();
return (fPass);
}
//-------------------------------------------------------------------------------------
// @cmember: Verify the rowset property is settable
//
BOOL TCICMDPRPT_ChangeProperties::VerifyRowsetSettable
(ULONG cPrpt, //@[in]: The index to g_rgDBProperties array
BOOL fIReadData,
ULONG cImpPrpt, //@[in]: The count of implied properties
ULONG rgIDXPrpt[], //@[in]: The index array of implied properties
BOOL fSet //@[in]: To set or unset property
)
{
DBPROPIDSET DBPropIDSet;
DBPROPID DBPropID;
DBPROPSET DBPropSet;
DBPROP DBProp;
DBPROPSET *pDBPropSet=NULL;
ULONG cDBPrpt=0;
BOOL fPass=FALSE;
//Create a new command object, start from scratch
if(!ResetProperties())
return FALSE;
//Initialization
DBPropIDSet.rgPropertyIDs=&DBPropID;
DBPropSet.rgProperties=&DBProp;
//Set the property to the default value using VT_EMPTY
if(!InitDBPropSet(cPrpt,&DBPropSet,2))
goto END;
//Set the properties
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPropSet),
S_OK))
goto END;
//Get the property and check the default values
if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
goto END;
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet),S_OK))
goto END;
//Verify the result against its default values
if(!VerifyDBPropDefault(cPrpt,pDBPropSet,FALSE))
goto END;
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Set the property with dwOptions = DBPROPOPTIONS_SETIFCHEAP
if(!InitDBPropSet(cPrpt,&DBPropSet,3))
goto END;
//Set the properties
m_hr = m_pICommandProperties->SetProperties(1,&DBPropSet);
//As long as we get back S_OK with status = OK or
if( m_hr == S_OK )
{
if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_OK))
goto END;
}
else
{
//DB_S_ERRORSOCCURRED with NOTSET it succeeded.
if( m_hr == DB_E_ERRORSOCCURRED )
{
if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_NOTSET))
goto END;
}
else
goto END;
}
//Verify the result. Status was already verified and
//fSet=3 that which is the same as fSet=TRUE
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBProp.dwStatus,3))
goto END;
//Try to set the property
if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
goto END;
//Set the properties
//For the same reason above, set bogus string could return DB_E_ERRORSOCCURRED
//and status DBPROPSTATUS_BADVALUE
m_hr = m_pICommandProperties->SetProperties(1,&DBPropSet);
//As long as we get back S_OK with status = OK or
if( m_hr == S_OK )
{
//Verify the result
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_OK,TRUE))
goto END;
}
else
{
//DB_E_ERRORSOCCURRED with BADVALUE it succeeded.
if( m_hr == DB_E_ERRORSOCCURRED )
{
//Verify the result
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,TRUE))
goto END;
}
else
goto END;
}
//Try to set/unset the property
//Initialization
if(!fSet)
if(!InitDBPropSet(cPrpt,&DBPropSet,FALSE))
goto END;
//for the same reason as above, setProperties may fail with BADVALUE.
m_hr = m_pICommandProperties->SetProperties(1,&DBPropSet);
if( (m_hr != S_OK) && (m_hr != DB_E_ERRORSOCCURRED) )
goto END;
//Verify the result
if( m_hr == S_OK )
{
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_OK,fSet))
goto END;
}
else
{
if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,fSet))
goto END;
// Set to False since the SetProperties Failed
fSet = FALSE;
}
//Verify that the property is set/unset by calling GetProperties
//Init DBPROPID
if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
goto END;
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet),S_OK))
goto END;
//Make sure GetProperties returns the same value as SetPropeties.
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,fSet))
goto END;
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Open a rowset
if(!OpenRowset())
goto END;
// Check the rowset pointer
if(m_pIRowsetInfo)
{
if(!CHECK(m_pIRowsetInfo->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet),S_OK))
goto END;
//Make sure the information returned is correct
if(!COMPARE(cDBPrpt,1))
goto END;
//Make sure GetProperties returns the same value as SetPropeties.
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,fSet))
goto END;
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
//Check for mandatory interfaces
if(!VerifyMandatoryInterfaces())
goto END;
}
//Call GetProperties to retrieve rowset property info
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPropIDSet,
&cDBPrpt,&pDBPropSet),S_OK))
goto END;
//Make sure the information returned is correct
if(!COMPARE(cDBPrpt,1))
goto END;
//Make sure GetProperties returns the same value as SetPropeties.
if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,fSet))
goto END;
//Check for the implied properties. If the property is set, the implied properties
//shoud be set.
if(cImpPrpt)
if(!VerifyImpliedProperties(cImpPrpt,rgIDXPrpt))
goto END;
//Make sure we can set the property on a particular column
if(g_rgDBProperties[cPrpt].fColumnOK)
if(!VerifyRowsetColumn(cPrpt))
goto END;
fPass=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cDBPrpt,&pDBPropSet);
ReleaseRowset();
return fPass;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Test Case Section
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_BulkProcess)
//--------------------------------------------------------------------
// @class Use array of GUIDs and DBProperties
//
class TCICMDPRPT_BulkProcess : public TCICMDPRPT {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_BulkProcess,TCICMDPRPT);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
//@cmember: Get a setttable rowset property
BOOL RowsetSettable(DBPROPID *dwPropertyID);
//@cmember: Get a not setttable rowset property
BOOL RowsetNotSettable(DBPROPID *dwPropertyID, ULONG *ulPropIdx);
//@cmember: Get a not supported rowset property
BOOL RowsetNotSupported(DBPROPID *dwPropertyID);
//@cmember: Get a not supported interface property
BOOL InterfaceNotSupported(DBPROPID *dwPropertyID);
//@cmember: Get a supported interface property
BOOL InterfaceSupported(DBPROPID *dwPropertyID);
//@cmember: Get a supported Kagera property
BOOL KageraSupported(DBPROPID *dwPropertyID);
// {{ TCW_TESTVARS()
// @cmember cProperties==0
int Variation_1();
// @cmember GetProperties returns correct info for array of properties in the same property set
int Variation_2();
// @cmember SetProperties set array of properties in the same property set
int Variation_3();
// @cmember Duplicated property IDs
int Variation_4();
// @cmember MAXROWS >= MAXOPENROWS verified with two GetProperties calls
int Variation_5();
// @cmember GetProperties returns correct info for array of properties in different property sets
int Variation_6();
// @cmember SetProperties sets array of properties in different property sets
int Variation_7();
// @cmember Set all Interface properties with DBPROPOPTIONS_OPTIONAL
int Variation_8();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_BulkProcess)
#define THE_CLASS TCICMDPRPT_BulkProcess
BEG_TEST_CASE(TCICMDPRPT_BulkProcess, TCICMDPRPT, L"Use array of GUIDs and DBProperties")
TEST_VARIATION(1, L"cProperties==0")
TEST_VARIATION(2, L"GetProperties returns correct info for array of properties in the same property set")
TEST_VARIATION(3, L"SetProperties set array of properties in the same property set")
TEST_VARIATION(4, L"Duplicated property IDs")
TEST_VARIATION(5, L"MAXROWS >= MAXOPENROWS verified with two GetProperties calls")
TEST_VARIATION(6, L"GetProperties returns correct info for array of properties in different property sets")
TEST_VARIATION(7, L"SetProperties sets array of properties in different property sets")
TEST_VARIATION(8, L"Set all Interface properties with DBPROPOPTIONS_OPTIONAL")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_SetProperties)
//--------------------------------------------------------------------
// @class set all interface and rowset properties
//
class TCICMDPRPT_SetProperties : public TCICMDPRPT_ChangeProperties {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_SetProperties,TCICMDPRPT_ChangeProperties);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
//@cmember Verify the impled properties are set correctly
virtual BOOL VerifyImpliedProperties(ULONG cImpPrpt,ULONG rgIDXPrpt[]);
// @mfunc: Verify the attrbute of the property
virtual BOOL VerifyProperty(ULONG cPrpt,BOOL fIReadData=FALSE,ULONG cImpPrpt=0,
ULONG rgIDXPrpt[]=NULL);
// {{ TCW_TESTVARS()
// @cmember set DBPROP_ACTIVESESSIONS
int Variation_1();
// @cmember set DBPROP_ASYNCTXNABORT
int Variation_2();
// @cmember set DBPROP_ASYNCTXNCOMMIT
int Variation_3();
// @cmember set DBPROP_BYREFACCESSORS
int Variation_4();
// @cmember set DBPROP_CATALOGLOCATION
int Variation_5();
// @cmember set DBPROP_CATALOGTERM
int Variation_6();
// @cmember set DBPROP_CATALOGUSAGE
int Variation_7();
// @cmember set DBPROP_COLUMNDEFINITION
int Variation_8();
// @cmember set DBPROP_CONCATNULLBEHAVIOR
int Variation_9();
// @cmember set DBPROP_DATASOURCENAME
int Variation_10();
// @cmember set DBPROP_DATASOURCEREADONLY
int Variation_11();
// @cmember set DBPROP_DBMSNAME
int Variation_12();
// @cmember set DBPROP_DBMSVER
int Variation_13();
// @cmember set DBPROP_DSOTHREADMODEL
int Variation_14();
// @cmember set DBPROP_GROUPBY
int Variation_15();
// @cmember set DBPROP_HETEROGENEOUSTABLES
int Variation_16();
// @cmember set DBPROP_IDENTIFIERCASE
int Variation_17();
// @cmember set DBPROP_MAXINDEXSIZE
int Variation_18();
// @cmember set DBPROP_MAXOPENCHAPTERS
int Variation_19();
// @cmember set DBPROP_MAXORSINFILTER
int Variation_20();
// @cmember set DBPROP_MAXROWSIZE
int Variation_21();
// @cmember set DBPROP_MAXROWSIZEINCLUDESBLOB
int Variation_22();
// @cmember setDBPROP_MAXSORTCOLUMNS
int Variation_23();
// @cmember set DBPROP_MAXTABLESINSELECT
int Variation_24();
// @cmember set DBPROP_MULTIPLEPARAMSETS
int Variation_25();
// @cmember set DBPROP_MULTIPLERESULTS
int Variation_26();
// @cmember set DBPROP_MULTIPLESTORAGEOBJECTS
int Variation_27();
// @cmember set DBPROP_MULTITABLEUPDATE
int Variation_28();
// @cmember set DBPROP_NULLCOLLATION
int Variation_29();
// @cmember set DBPROP_OLEOBJECTS
int Variation_30();
// @cmember set DBPROP_ORDERBYCOLUMNSINSELECT
int Variation_31();
// @cmember set DBPROP_OUTPUTPARAMETERAVAILABILITY
int Variation_32();
// @cmember set DBPROP_PERSISTENTIDTYPE
int Variation_33();
// @cmember set DBPROP_PREPAREABORTBEHAVIOR
int Variation_34();
// @cmember set DBPROP_PREPARECOMMITBEHAVIOR
int Variation_35();
// @cmember set DBPROP_PROCEDURETERM
int Variation_36();
// @cmember set DBPROP_PROVIDERNAME
int Variation_37();
// @cmember set DBPROP_PROVIDEROLEDBVER
int Variation_38();
// @cmember set DBPROP_PROVIDERVER
int Variation_39();
// @cmember set DBPROP_QUOTEDIDENTIFIERCASE
int Variation_40();
// @cmember set DBPROP_ROWSETCONVERSIONSONCOMMAND
int Variation_41();
// @cmember set DBPROP_SCHEMATERM
int Variation_42();
// @cmember set DBPROP_SCHEMAUSAGE
int Variation_43();
// @cmember set DBPROP_SORTONINDEX
int Variation_44();
// @cmember set DBPROP_SQLSUPPORT
int Variation_45();
// @cmember set DBPROP_STRUCTUREDSTORAGE
int Variation_46();
// @cmember set DBPROP_SUBQUERIES
int Variation_47();
// @cmember set DBPROP_SUPPORTEDTXNDDL
int Variation_48();
// @cmember set DBPROP_SUPPORTEDTXNISOLEVELS
int Variation_49();
// @cmember set DBPROP_SUPPORTEDTXNISORETAIN
int Variation_50();
// @cmember set DBPROP_TABLETERM
int Variation_51();
// @cmember set DBPROP_USERNAME
int Variation_52();
// @cmember set DBPROP_CURRENTCATALOG
int Variation_53();
// @cmember set DBPROP_AUTH_CACHE_AUTHINFO
int Variation_54();
// @cmember set DBPROP_AUTH_ENCRYPT_PASSWORD
int Variation_55();
// @cmember set DBPROP_AUTH_INTEGRATED
int Variation_56();
// @cmember set DBPROP_AUTH_MASK_PASSWORD
int Variation_57();
// @cmember set DBPROP_AUTH_PASSWORD
int Variation_58();
// @cmember set DBPROP_AUTH_PERSIST_ENCRYPTED
int Variation_59();
// @cmember set DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
int Variation_60();
// @cmember set DBPROP_AUTH_USERID
int Variation_61();
// @cmember set BPROP_INIT_ASYNCH
int Variation_62();
// @cmember set DBPROP_INIT_DATASOURCE
int Variation_63();
// @cmember set DBPROP_INIT_HWND
int Variation_64();
// @cmember set DBPROP_INIT_IMPERSONATION_LEVEL
int Variation_65();
// @cmember set DBPROP_INIT_LCID
int Variation_66();
// @cmember set DBPROP_INIT_LOCATION
int Variation_67();
// @cmember set DBPROP_INIT_MODE
int Variation_68();
// @cmember set DBPROP_INIT_PROMPT
int Variation_69();
// @cmember set DBPROP_INIT_PROTECTION_LEVEL
int Variation_70();
// @cmember set DBPROP_INIT_PROVIDERSTRING
int Variation_71();
// @cmember set DBPROP_INIT_TIMEOUT
int Variation_72();
// @cmember set DBPROP_COL_AUTOINCREMENT
int Variation_73();
// @cmember set DBPROP_COL_DEFAULT
int Variation_74();
// @cmember set DBPROP_COL_DESCRIPTION
int Variation_75();
// @cmember set DBPROP_COL_FIXEDLENGTH
int Variation_76();
// @cmember set DBPROP_COL_NULLABLE
int Variation_77();
// @cmember set DBPROP_COL_PRIMARYKEY
int Variation_78();
// @cmember set DBPROP_COL_UNIQUE
int Variation_79();
// @cmember set DBPROP_INDEX_AUTOUPDATE
int Variation_80();
// @cmember set DBPROP_INDEX_CLUSTERED
int Variation_81();
// @cmember set DBPROP_INDEX_FILLFACTOR
int Variation_82();
// @cmember set DBPROP_INDEX_INITIALSIZE
int Variation_83();
// @cmember set DBPROP_INDEX_NULLCOLLATION
int Variation_84();
// @cmember set DBPROP_INDEX_NULLS
int Variation_85();
// @cmember set DBPROP_INDEX_PRIMARYKEY
int Variation_86();
// @cmember set DBPROP_INDEX_SORTBOOKMARKS
int Variation_87();
// @cmember set DBPROP_INDEX_TEMPINDEX
int Variation_88();
// @cmember set DBPROP_INDEX_TYPE
int Variation_89();
// @cmember set DBPROP_INDEX_UNIQUE
int Variation_90();
// @cmember set DBPROP_SESS_AUTOCOMMITISOLEVELS
int Variation_91();
// @cmember set DBPROP_TBL_TEMPTABLE
int Variation_92();
// @cmember set DBPROP_ABORTPRESERVE
int Variation_93();
// @cmember set DBPROP_APPENDONLY
int Variation_94();
// @cmember set DBPROP_BLOCKINGSTORAGEOBJECTS
int Variation_95();
// @cmember set DBPROP_BOOKMARKS
int Variation_96();
// @cmember set DBPROP_BOOKMARKSKIPPED
int Variation_97();
// @cmember set DBPROP_BOOKMARKTYPE
int Variation_98();
// @cmember set DBPROP_CACHDEFERRED
int Variation_99();
// @cmember set DBPROP_CANFETCHBACKWARDS
int Variation_100();
// @cmember set DBPROP_CANHOLDROWS
int Variation_101();
// @cmember set DBPROP_CANSCROLLBACKWARDS
int Variation_102();
// @cmember set DBPROP_CHANGEINSERTEDROWS
int Variation_103();
// @cmember set DBPROP_COLUMNRESTRICT
int Variation_104();
// @cmember set DBPROP_COMMANDTIMEOUT
int Variation_105();
// @cmember set DBPROP_COMMITPRESERVE
int Variation_106();
// @cmember set DBPROP_DEFERRED
int Variation_107();
// @cmember set DBPROP_DELAYSTORAGEOBJECTS
int Variation_108();
// @cmember set DBPROP_FILTERCOMPAREOPS
int Variation_109();
// @cmember set DBPROP_FINDCOMPAREOPS
int Variation_110();
// @cmember set DBPROP_IMMOBILEROWS
int Variation_111();
// @cmember set DBPROP_LITERALBOOKMARKS
int Variation_112();
// @cmember set DBPROP_LITERALIDENTITY
int Variation_113();
// @cmember set DBPROP_MAXOPENROWS
int Variation_114();
// @cmember set DBPROP_MAXPENDINGROWS
int Variation_115();
// @cmember set DBPROP_MAXROWS
int Variation_116();
// @cmember set DBPROP_MAYWRITECOLUMN
int Variation_117();
// @cmember set DBPROP_MEMORYUSAGE
int Variation_118();
// @cmember set DBPROP_NOTIFICATIONPHASES
int Variation_119();
// @cmember set DBPROP_NOTIFYCOLUMNSET
int Variation_120();
// @cmember set DBPROP_NOTIFYROWDELETE
int Variation_121();
// @cmember set DBPROP_NOTIFYROWFIRSTCHANGE
int Variation_122();
// @cmember set DBPROP_NOTIFYROWINSERT
int Variation_123();
// @cmember set DBPROP_NOTIFYROWRESYNCH
int Variation_124();
// @cmember set DBPROP_NOTIFYROWSETRELEASE
int Variation_125();
// @cmember set DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
int Variation_126();
// @cmember set DBPROP_NOTIFYROWUNDOCHANGE
int Variation_127();
// @cmember set DBPROP_NOTIFYUNDODELETE
int Variation_128();
// @cmember set DBPROP_NOTIFYUNDOINSERT
int Variation_129();
// @cmember set DBPROP_NOTIFYROWUPDATE
int Variation_130();
// @cmember set DBPROP_ORDEREDBOOKMARKS
int Variation_131();
// @cmember set DBPROP_OTHERINSERT
int Variation_132();
// @cmember set DBPROP_OTHERUPDATEDELETE
int Variation_133();
// @cmember set DBPROP_OWNINSERT
int Variation_134();
// @cmember set DBPROP_OWNUPDATEDELETE
int Variation_135();
// @cmember set DBPROP_QUICKRESTART
int Variation_136();
// @cmember set DBPROP_REENTRANTEVENTS
int Variation_137();
// @cmember set DBPROP_REMOVEDELETED
int Variation_138();
// @cmember set DBPROP_REPORTMULTIPLECHANGES
int Variation_139();
// @cmember set DBPROP_RETURNPENDINGINSERTS
int Variation_140();
// @cmember set DBPROP_ROWRESTRICT
int Variation_141();
// @cmember set DBPROP_ROWSET_ASYNCH
int Variation_142();
// @cmember set DBPROP_ROWTHREADMODEL
int Variation_143();
// @cmember set DBPROP_SERVERCURSOR
int Variation_144();
// @cmember set DBPROP_TRANSACTEDOBJECT
int Variation_145();
// @cmember set DBPROP_UPDATABILITY
int Variation_146();
// @cmember set DBPROP_STRONGIDENTITY
int Variation_147();
// @cmember set IID_IAccessor
int Variation_148();
// @cmember set IID_IChapteredRowset
int Variation_149();
// @cmember set IID_IColumnsInfo
int Variation_150();
// @cmember set IID_IColumnsRowset
int Variation_151();
// @cmember set IID_IConnectionPointContainer
int Variation_152();
// @cmember set IID_IConvertType
int Variation_153();
// @cmember set IID_IDBAsynchStatus
int Variation_154();
// @cmember set IID_IRowset
int Variation_155();
// @cmember set IID_IRowsetChange
int Variation_156();
// @cmember set IID_IRowsetFind
int Variation_157();
// @cmember set IID_IRowsetIdentity
int Variation_158();
// @cmember set IID_IRowsetIndex
int Variation_159();
// @cmember set IID_IRowsetInfo
int Variation_160();
// @cmember set IID_IRowsetLocate
int Variation_161();
// @cmember set IID_IRowsetResynch
int Variation_162();
// @cmember set IID_IRowsetScroll
int Variation_163();
// @cmember set IID_IRowsetUpdate
int Variation_164();
// @cmember set IID_IRowsetView
int Variation_165();
// @cmember set IID_IViewChapter
int Variation_166();
// @cmember set IID_IViewFilter
int Variation_167();
// @cmember set IID_IViewRowset
int Variation_168();
// @cmember set IID_IViewSort
int Variation_169();
// @cmember set IID_ILockBytes
int Variation_170();
// @cmember set IID_ISequentialStream
int Variation_171();
// @cmember set IID_IStorage
int Variation_172();
// @cmember set IID_IStream
int Variation_173();
// @cmember set IID_ISupportErrorInfo
int Variation_174();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_SetProperties)
#define THE_CLASS TCICMDPRPT_SetProperties
BEG_TEST_CASE(TCICMDPRPT_SetProperties, TCICMDPRPT_ChangeProperties, L"Set all interface and rowset properties")
TEST_VARIATION(1, L"set DBPROP_ACTIVESESSIONS")
TEST_VARIATION(2, L"set DBPROP_ASYNCTXNABORT")
TEST_VARIATION(3, L"set DBPROP_ASYNCTXNCOMMIT")
TEST_VARIATION(4, L"set DBPROP_BYREFACCESSORS")
TEST_VARIATION(5, L"set DBPROP_CATALOGLOCATION")
TEST_VARIATION(6, L"set DBPROP_CATALOGTERM")
TEST_VARIATION(7, L"set DBPROP_CATALOGUSAGE")
TEST_VARIATION(8, L"set DBPROP_COLUMNDEFINITION")
TEST_VARIATION(9, L"set DBPROP_CONCATNULLBEHAVIOR")
TEST_VARIATION(10, L"set DBPROP_DATASOURCENAME")
TEST_VARIATION(11, L"set DBPROP_DATASOURCEREADONLY")
TEST_VARIATION(12, L"set DBPROP_DBMSNAME")
TEST_VARIATION(13, L"set DBPROP_DBMSVER")
TEST_VARIATION(14, L"set DBPROP_DSOTHREADMODEL")
TEST_VARIATION(15, L"set DBPROP_GROUPBY")
TEST_VARIATION(16, L"set DBPROP_HETEROGENEOUSTABLES")
TEST_VARIATION(17, L"set DBPROP_IDENTIFIERCASE")
TEST_VARIATION(18, L"set DBPROP_MAXINDEXSIZE")
TEST_VARIATION(19, L"set DBPROP_MAXOPENCHAPTERS")
TEST_VARIATION(20, L"set DBPROP_MAXORSINFILTER")
TEST_VARIATION(21, L"set DBPROP_MAXROWSIZE")
TEST_VARIATION(22, L"set DBPROP_MAXROWSIZEINCLUDESBLOB")
TEST_VARIATION(23, L"set DBPROP_MAXSORTCOLUMNS")
TEST_VARIATION(24, L"set DBPROP_MAXTABLESINSELECT")
TEST_VARIATION(25, L"set DBPROP_MULTIPLEPARAMSETS")
TEST_VARIATION(26, L"set DBPROP_MULTIPLERESULTS")
TEST_VARIATION(27, L"set DBPROP_MULTIPLESTORAGEOBJECTS")
TEST_VARIATION(28, L"set DBPROP_MULTITABLEUPDATE")
TEST_VARIATION(29, L"set DBPROP_NULLCOLLATION")
TEST_VARIATION(30, L"set DBPROP_OLEOBJECTS")
TEST_VARIATION(31, L"set DBPROP_ORDERBYCOLUMNSINSELECT")
TEST_VARIATION(32, L"set DBPROP_OUTPUTPARAMETERAVAILABILITY")
TEST_VARIATION(33, L"set DBPROP_PERSISTENTIDTYPE")
TEST_VARIATION(34, L"set DBPROP_PREPAREABORTBEHAVIOR")
TEST_VARIATION(35, L"set DBPROP_PREPARECOMMITBEHAVIOR")
TEST_VARIATION(36, L"set DBPROP_PROCEDURETERM")
TEST_VARIATION(37, L"set DBPROP_PROVIDERNAME")
TEST_VARIATION(38, L"set DBPROP_PROVIDEROLEDBVER")
TEST_VARIATION(39, L"set DBPROP_PROVIDERVER")
TEST_VARIATION(40, L"set DBPROP_QUOTEDIDENTIFIERCASE")
TEST_VARIATION(41, L"set DBPROP_ROWSETCONVERSIONSONCOMMAND")
TEST_VARIATION(42, L"set DBPROP_SCHEMATERM")
TEST_VARIATION(43, L"set DBPROP_SCHEMAUSAGE")
TEST_VARIATION(44, L"set DBPROP_SORTONINDEX")
TEST_VARIATION(45, L"set DBPROP_SQLSUPPORT")
TEST_VARIATION(46, L"set DBPROP_STRUCTUREDSTORAGE")
TEST_VARIATION(47, L"set DBPROP_SUBQUERIES")
TEST_VARIATION(48, L"set DBPROP_SUPPORTEDTXNDDL")
TEST_VARIATION(49, L"set DBPROP_SUPPORTEDTXNISOLEVELS")
TEST_VARIATION(50, L"set DBPROP_SUPPORTEDTXNISORETAIN")
TEST_VARIATION(51, L"set DBPROP_TABLETERM")
TEST_VARIATION(52, L"set DBPROP_USERNAME")
TEST_VARIATION(53, L"set DBPROP_CURRENTCATALOG")
TEST_VARIATION(54, L"set DBPROP_AUTH_CACHE_AUTHINFO")
TEST_VARIATION(55, L"set DBPROP_AUTH_ENCRYPT_PASSWORD")
TEST_VARIATION(56, L"set DBPROP_AUTH_INTEGRATED")
TEST_VARIATION(57, L"set DBPROP_AUTH_MASK_PASSWORD")
TEST_VARIATION(58, L"set DBPROP_AUTH_PASSWORD")
TEST_VARIATION(59, L"set DBPROP_AUTH_PERSIST_ENCRYPTED")
TEST_VARIATION(60, L"set DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO")
TEST_VARIATION(61, L"set DBPROP_AUTH_USERID")
TEST_VARIATION(62, L"set DBPROP_INIT_ASYNCH")
TEST_VARIATION(63, L"set DBPROP_INIT_DATASOURCE")
TEST_VARIATION(64, L"set DBPROP_INIT_HWND")
TEST_VARIATION(65, L"set DBPROP_INIT_IMPERSONATION_LEVEL")
TEST_VARIATION(66, L"set DBPROP_INIT_LCID")
TEST_VARIATION(67, L"set DBPROP_INIT_LOCATION")
TEST_VARIATION(68, L"set DBPROP_INIT_MODE")
TEST_VARIATION(69, L"set DBPROP_INIT_PROMPT")
TEST_VARIATION(70, L"set DBPROP_INIT_PROTECTION_LEVEL")
TEST_VARIATION(71, L"set DBPROP_INIT_PROVIDERSTRING")
TEST_VARIATION(72, L"set DBPROP_INIT_TIMEOUT")
TEST_VARIATION(73, L"set DBPROP_COL_AUTOINCREMENT")
TEST_VARIATION(74, L"set DBPROP_COL_DEFAULT")
TEST_VARIATION(75, L"set DBPROP_COL_DESCRIPTION")
TEST_VARIATION(76, L"set DBPROP_COL_FIXEDLENGTH")
TEST_VARIATION(77, L"set DBPROP_COL_NULLABLE")
TEST_VARIATION(78, L"set DBPROP_COL_PRIMARYKEY")
TEST_VARIATION(79, L"set DBPROP_COL_UNIQUE")
TEST_VARIATION(80, L"set DBPROP_INDEX_AUTOUPDATE")
TEST_VARIATION(81, L"set DBPROP_INDEX_CLUSTERED")
TEST_VARIATION(82, L"set DBPROP_INDEX_FILLFACTOR")
TEST_VARIATION(83, L"set DBPROP_INDEX_INITIALSIZE")
TEST_VARIATION(84, L"set DBPROP_INDEX_NULLCOLLATION")
TEST_VARIATION(85, L"set DBPROP_INDEX_NULLS")
TEST_VARIATION(86, L"set DBPROP_INDEX_PRIMARYKEY")
TEST_VARIATION(87, L"set DBPROP_INDEX_SORTBOOKMARKS")
TEST_VARIATION(88, L"set DBPROP_INDEX_TEMPINDEX")
TEST_VARIATION(89, L"set DBPROP_INDEX_TYPE")
TEST_VARIATION(90, L"set DBPROP_INDEX_UNIQUE")
TEST_VARIATION(91, L"set DBPROP_SESS_AUTOCOMMITISOLEVELS")
TEST_VARIATION(92, L"set DBPROP_TBL_TEMPTABLE")
TEST_VARIATION(93, L"set DBPROP_ABORTPRESERVE")
TEST_VARIATION(94, L"set DBPROP_APPENDONLY")
TEST_VARIATION(95, L"set DBPROP_BLOCKINGSTORAGEOBJECTS")
TEST_VARIATION(96, L"set DBPROP_BOOKMARKS")
TEST_VARIATION(97, L"set DBPROP_BOOKMARKSKIPPED")
TEST_VARIATION(98, L"set DBPROP_BOOKMARKTYPE")
TEST_VARIATION(99, L"set DBPROP_CACHDEFERRED")
TEST_VARIATION(100, L"set DBPROP_CANFETCHBACKWARDS")
TEST_VARIATION(101, L"set DBPROP_CANHOLDROWS")
TEST_VARIATION(102, L"set DBPROP_CANSCROLLBACKWARDS")
TEST_VARIATION(103, L"set DBPROP_CHANGEINSERTEDROWS")
TEST_VARIATION(104, L"set DBPROP_COLUMNRESTRICT")
TEST_VARIATION(105, L"set DBPROP_COMMANDTIMEOUT")
TEST_VARIATION(106, L"set DBPROP_COMMITPRESERVE")
TEST_VARIATION(107, L"set DBPROP_DEFERRED")
TEST_VARIATION(108, L"set DBPROP_DELAYSTORAGEOBJECTS")
TEST_VARIATION(109, L"set DBPROP_FILTERCOMPAREOPS")
TEST_VARIATION(110, L"set DBPROP_FINDCOMPAREOPS")
TEST_VARIATION(111, L"set DBPROP_IMMOBILEROWS")
TEST_VARIATION(112, L"set DBPROP_LITERALBOOKMARKS")
TEST_VARIATION(113, L"set DBPROP_LITERALIDENTITY")
TEST_VARIATION(114, L"set DBPROP_MAXOPENROWS")
TEST_VARIATION(115, L"set DBPROP_MAXPENDINGROWS")
TEST_VARIATION(116, L"set DBPROP_MAXROWS")
TEST_VARIATION(117, L"set DBPROP_MAYWRITECOLUMN")
TEST_VARIATION(118, L"set DBPROP_MEMORYUSAGE")
TEST_VARIATION(119, L"set DBPROP_NOTIFICATIONPHASES")
TEST_VARIATION(120, L"set DBPROP_NOTIFYCOLUMNSET")
TEST_VARIATION(121, L"set DBPROP_NOTIFYROWDELETE")
TEST_VARIATION(122, L"set DBPROP_NOTIFYROWFIRSTCHANGE")
TEST_VARIATION(123, L"set DBPROP_NOTIFYROWINSERT")
TEST_VARIATION(124, L"set DBPROP_NOTIFYROWRESYNCH")
TEST_VARIATION(125, L"set DBPROP_NOTIFYROWSETRELEASE")
TEST_VARIATION(126, L"set DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE")
TEST_VARIATION(127, L"set DBPROP_NOTIFYROWUNDOCHANGE")
TEST_VARIATION(128, L"set DBPROP_NOTIFYUNDODELETE")
TEST_VARIATION(129, L"set DBPROP_NOTIFYUNDOINSERT")
TEST_VARIATION(130, L"set DBPROP_NOTIFYROWUPDATE")
TEST_VARIATION(131, L"set DBPROP_ORDEREDBOOKMARKS")
TEST_VARIATION(132, L"set DBPROP_OTHERINSERT")
TEST_VARIATION(133, L"set DBPROP_OTHERUPDATEDELETE")
TEST_VARIATION(134, L"set DBPROP_OWNINSERT")
TEST_VARIATION(135, L"set DBPROP_OWNUPDATEDELETE")
TEST_VARIATION(136, L"set DBPROP_QUICKRESTART")
TEST_VARIATION(137, L"set DBPROP_REENTRANTEVENTS")
TEST_VARIATION(138, L"set DBPROP_REMOVEDELETED")
TEST_VARIATION(139, L"set DBPROP_REPORTMULTIPLECHANGES")
TEST_VARIATION(140, L"set DBPROP_RETURNPENDINGINSERTS")
TEST_VARIATION(141, L"set DBPROP_ROWRESTRICT")
TEST_VARIATION(142, L"set DBPROP_ROWSET_ASYNCH")
TEST_VARIATION(143, L"set DBPROP_ROWTHREADMODEL")
TEST_VARIATION(144, L"set DBPROP_SERVERCURSOR")
TEST_VARIATION(145, L"set DBPROP_TRANSACTEDOBJECT")
TEST_VARIATION(146, L"set DBPROP_UPDATABILITY")
TEST_VARIATION(147, L"set DBPROP_STRONGIDENTITY")
TEST_VARIATION(148, L"set IID_IAccessor")
TEST_VARIATION(149, L"set IID_IChapteredRowset")
TEST_VARIATION(150, L"set IID_IColumnsInfo")
TEST_VARIATION(151, L"set IID_IColumnsRowset")
TEST_VARIATION(152, L"set IID_IConnectionPointContainer")
TEST_VARIATION(153, L"set IID_IConvertType")
TEST_VARIATION(154, L"set IID_IDBAsynchStatus")
TEST_VARIATION(155, L"set IID_IRowset")
TEST_VARIATION(156, L"set IID_IRowsetChange")
TEST_VARIATION(157, L"set IID_IRowsetFind")
TEST_VARIATION(158, L"set IID_IRowsetIdentity")
TEST_VARIATION(159, L"set IID_IRowsetIndex")
TEST_VARIATION(160, L"set IID_IRowsetInfo")
TEST_VARIATION(161, L"set IID_IRowsetLocate")
TEST_VARIATION(162, L"set IID_IRowsetResynch")
TEST_VARIATION(163, L"set IID_IRowsetScroll")
TEST_VARIATION(164, L"set IID_IRowsetUpdate")
TEST_VARIATION(165, L"set IID_IRowsetView")
TEST_VARIATION(166, L"set IID_IViewChapter")
TEST_VARIATION(167, L"set IID_IViewFilter")
TEST_VARIATION(168, L"set IID_IViewRowset")
TEST_VARIATION(169, L"set IID_IViewSort")
TEST_VARIATION(170, L"set IID_ILockBytes")
TEST_VARIATION(171, L"set IID_ISequentialStream")
TEST_VARIATION(172, L"set IID_IStorage")
TEST_VARIATION(173, L"set IID_IStream")
TEST_VARIATION(174, L"set IID_ISupportErrorInfo")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_UnsetProperties)
//--------------------------------------------------------------------
// @class Unset all interface and rowset properties
//
class TCICMDPRPT_UnsetProperties : public TCICMDPRPT_ChangeProperties {
private:
//@cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
//{{ TCW_DECLARE_FUNCS
//@cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_UnsetProperties,TCICMDPRPT_ChangeProperties);
// }}
//@cmember Initialization Routine
virtual BOOL Init();
//@cmember Termination Routine
virtual BOOL Terminate();
//@cmember Verify the impled properties are unset correctly
virtual BOOL VerifyImpliedProperties(ULONG cImpPrpt,ULONG rgIDXPrpt[]);
//@mfunc: Verify the attrbute of the property
virtual BOOL VerifyProperty(ULONG cPrpt,BOOL fIReadData=FALSE,ULONG cImpPrpt=0,
ULONG rgIDXPrpt[]=NULL);
// {{ TCW_TESTVARS()
// @cmember unset DBPROP_ABORTPRESERVE
int Variation_1();
// @cmember unset DBPROP_APPENDONLY
int Variation_2();
// @cmember unset DBPROP_BLOCKINGSTORAGEOBJECTS
int Variation_3();
// @cmember unset DBPROP_BOOKMARKS
int Variation_4();
// @cmember unset DBPROP_BOOKMARKSKIPPED
int Variation_5();
// @cmember unset DBPROP_BOOKMARKTYPE
int Variation_6();
// @cmember unset DBPROP_CACHDEFERRED
int Variation_7();
// @cmember unset DBPROP_CANFETCHBACKWARDS
int Variation_8();
// @cmember unset DBPROP_CANHOLDROWS
int Variation_9();
// @cmember unset DBPROP_CANSCROLLBACKWARDS
int Variation_10();
// @cmember unset DBPROP_CHANGEINSERTEDROWS
int Variation_11();
// @cmember unset DBPROP_COLUMNRESTRICT
int Variation_12();
// @cmember unset DBPROP_COMMANDTIMEOUT
int Variation_13();
// @cmember unset DBPROP_COMMITPRESERVE
int Variation_14();
// @cmember unset DBPROP_DEFERRED
int Variation_15();
// @cmember unset DBPROP_DELAYSTORAGEOBJECTS
int Variation_16();
// @cmember unset DBPROP_FILTERCOMPAREOPS
int Variation_17();
// @cmember unset DBPROP_FINDCOMPAREOPS
int Variation_18();
// @cmember unset DBPROP_IMMOBILEROWS
int Variation_19();
// @cmember unset DBPROP_LITERALBOOKMARKS
int Variation_20();
// @cmember unset DBPROP_LITERALIDENTITY
int Variation_21();
// @cmember unset DBPROP_MAXOPENROWS
int Variation_22();
// @cmember unset DBPROP_MAXPENDINGROWS
int Variation_23();
// @cmember unset DBPROP_MAXROWS
int Variation_24();
// @cmember unset DBPROP_MAYWRITECOLUMN
int Variation_25();
// @cmember unset DBPROP_MEMORYUSAGE
int Variation_26();
// @cmember unset DBPROP_NOTIFICATIONPHASES
int Variation_27();
// @cmember unset DBPROP_NOTIFYCOLUMNSET
int Variation_28();
// @cmember unset DBPROP_NOTIFYROWDELETE
int Variation_29();
// @cmember unset DBPROP_NOTIFYROWFIRSTCHANGE
int Variation_30();
// @cmember unset DBPROP_NOTIFYROWINSERT
int Variation_31();
// @cmember unset DBPROP_NOTIFYROWRESYNCH
int Variation_32();
// @cmember unset DBPROP_NOTIFYROWSETRELEASE
int Variation_33();
// @cmember unset DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
int Variation_34();
// @cmember unset DBPROP_NOTIFYROWUNDOCHANGE
int Variation_35();
// @cmember unset DBPROP_NOTIFYUNDODELETE
int Variation_36();
// @cmember unset DBPROP_NOTIFYUNDOINSERT
int Variation_37();
// @cmember unset DBPROP_NOTIFYROWUPDATE
int Variation_38();
// @cmember unset DBPROP_ORDEREDBOOKMARKS
int Variation_39();
// @cmember unset DBPROP_OTHERINSERT
int Variation_40();
// @cmember unset DBPROP_OTHERUPDATEDELETE
int Variation_41();
// @cmember unset DBPROP_OWNINSERT
int Variation_42();
// @cmember unset DBPROP_OWNUPDATEDELETE
int Variation_43();
// @cmember unset DBPROP_QUICKRESTART
int Variation_44();
// @cmember unset DBPROP_REENTRANTEVENTS
int Variation_45();
// @cmember unset DBPROP_REMOVEDELETED
int Variation_46();
// @cmember unset DBPROP_REPORTMULTIPLECHANGES
int Variation_47();
// @cmember unset DBPROP_RETURNPENDINGINSERTS
int Variation_48();
// @cmember unset DBPROP_ROWRESTRICT
int Variation_49();
// @cmember unset DBPROP_ROWSET_ASYNCH
int Variation_50();
// @cmember unset DBPROP_ROWTHREADMODEL
int Variation_51();
// @cmember unset DBPROP_SERVERCURSOR
int Variation_52();
// @cmember unset DBPROP_TRANSACTEDOBJECT
int Variation_53();
// @cmember unset DBPROP_UPDATABILITY
int Variation_54();
// @cmember unset DBPROP_STRONGIDENTITY
int Variation_55();
// @cmember unset IID_IAccessor
int Variation_56();
// @cmember unset IID_IChapteredRowset
int Variation_57();
// @cmember unset IID_IColumnsInfo
int Variation_58();
// @cmember unset IID_IColumnsRowset
int Variation_59();
// @cmember unset IID_IConnectionPointContainer
int Variation_60();
// @cmember unset IID_IConvertType
int Variation_61();
// @cmember unset IID_IDBAsynchStatus
int Variation_62();
// @cmember unset IID_IRowset
int Variation_63();
// @cmember unset IID_IRowsetChange
int Variation_64();
// @cmember unset IID_IRowsetIdentity
int Variation_65();
// @cmember unset IID_IRowsetIndex
int Variation_66();
// @cmember unset IID_IRowsetInfo
int Variation_67();
// @cmember unset IID_IRowsetLocate
int Variation_68();
// @cmember unset IID_IRowsetResynch
int Variation_69();
// @cmember unset IID_IRowsetScroll
int Variation_70();
// @cmember unset IID_IRowsetUpdate
int Variation_71();
// @cmember unset IID_IRowsetView
int Variation_72();
// @cmember unset IID_IViewChapter
int Variation_73();
// @cmember unset IID_IViewFilter
int Variation_74();
// @cmember unset IID_IViewRowset
int Variation_75();
// @cmember unset IID_IViewSort
int Variation_76();
// @cmember unset IID_ILockBytes
int Variation_77();
// @cmember unset IID_ISequentialStream
int Variation_78();
// @cmember unset IID_IStorage
int Variation_79();
// @cmember unset IID_IStream
int Variation_80();
// @cmember unset IID_ISupportErrorInfo
int Variation_81();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_UnsetProperties)
#define THE_CLASS TCICMDPRPT_UnsetProperties
BEG_TEST_CASE(TCICMDPRPT_UnsetProperties, TCICMDPRPT_ChangeProperties, L"Unset all interface and rowset properties")
TEST_VARIATION(1, L"unset DBPROP_ABORTPRESERVE")
TEST_VARIATION(2, L"unset DBPROP_APPENDONLY")
TEST_VARIATION(3, L"unset DBPROP_BLOCKINGSTORAGEOBJECTS")
TEST_VARIATION(4, L"unset DBPROP_BOOKMARKS")
TEST_VARIATION(5, L"unset DBPROP_BOOKMARKSKIPPED")
TEST_VARIATION(6, L"unset DBPROP_BOOKMARKTYPE")
TEST_VARIATION(7, L"unset DBPROP_CACHDEFERRED")
TEST_VARIATION(8, L"unset DBPROP_CANFETCHBACKWARDS")
TEST_VARIATION(9, L"unset DBPROP_CANHOLDROWS")
TEST_VARIATION(10, L"unset DBPROP_CANSCROLLBACKWARDS")
TEST_VARIATION(11, L"unset DBPROP_CHANGEINSERTEDROWS")
TEST_VARIATION(12, L"unset DBPROP_COLUMNRESTRICT")
TEST_VARIATION(13, L"unset DBPROP_COMMANDTIMEOUT")
TEST_VARIATION(14, L"unset DBPROP_COMMITPRESERVE")
TEST_VARIATION(15, L"unset DBPROP_DEFERRED")
TEST_VARIATION(16, L"unset DBPROP_DELAYSTORAGEOBJECTS")
TEST_VARIATION(17, L"unset DBPROP_IMMOBILEROWS")
TEST_VARIATION(18, L"unset DBPROP_LITERALBOOKMARKS")
TEST_VARIATION(19, L"unset DBPROP_IMMOBILEROWS")
TEST_VARIATION(20, L"unset DBPROP_FILTERCOMPAREOPS")
TEST_VARIATION(21, L"unset DBPROP_FINDCOMPAREOPS")
TEST_VARIATION(22, L"unset DBPROP_MAXOPENROWS")
TEST_VARIATION(23, L"unset DBPROP_MAXPENDINGROWS")
TEST_VARIATION(24, L"unset DBPROP_MAXROWS")
TEST_VARIATION(25, L"unset DBPROP_MAYWRITECOLUMN")
TEST_VARIATION(26, L"unset DBPROP_MEMORYUSAGE")
TEST_VARIATION(27, L"unset DBPROP_NOTIFICATIONPHASES")
TEST_VARIATION(28, L"unset DBPROP_NOTIFYCOLUMNSET")
TEST_VARIATION(29, L"unset DBPROP_NOTIFYROWDELETE")
TEST_VARIATION(30, L"unset DBPROP_NOTIFYROWFIRSTCHANGE")
TEST_VARIATION(31, L"unset DBPROP_NOTIFYROWINSERT")
TEST_VARIATION(32, L"unset DBPROP_NOTIFYROWRESYNCH")
TEST_VARIATION(33, L"unset DBPROP_NOTIFYROWSETRELEASE")
TEST_VARIATION(34, L"unset DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE")
TEST_VARIATION(35, L"unset DBPROP_NOTIFYROWUNDOCHANGE")
TEST_VARIATION(36, L"unset DBPROP_NOTIFYUNDODELETE")
TEST_VARIATION(37, L"unset DBPROP_NOTIFYUNDOINSERT")
TEST_VARIATION(38, L"unset DBPROP_NOTIFYROWUPDATE")
TEST_VARIATION(39, L"unset DBPROP_ORDEREDBOOKMARKS")
TEST_VARIATION(40, L"unset DBPROP_OTHERINSERT")
TEST_VARIATION(41, L"unset DBPROP_OTHERUPDATEDELETE")
TEST_VARIATION(42, L"unset DBPROP_OWNINSERT")
TEST_VARIATION(43, L"unset DBPROP_OWNUPDATEDELETE")
TEST_VARIATION(44, L"unset DBPROP_QUICKRESTART")
TEST_VARIATION(45, L"unset DBPROP_REENTRANTEVENTS")
TEST_VARIATION(46, L"unset DBPROP_REMOVEDELETED")
TEST_VARIATION(47, L"unset DBPROP_REPORTMULTIPLECHANGES")
TEST_VARIATION(48, L"unset DBPROP_RETURNPENDINGINSERTS")
TEST_VARIATION(49, L"unset DBPROP_ROWRESTRICT")
TEST_VARIATION(50, L"unset DBPROP_ROWSET_ASYNCH")
TEST_VARIATION(51, L"unset DBPROP_ROWTHREADMODEL")
TEST_VARIATION(52, L"unset DBPROP_SERVERCURSOR")
TEST_VARIATION(53, L"unset DBPROP_TRANSACTEDOBJECT")
TEST_VARIATION(54, L"unset DBPROP_UPDATABILITY")
TEST_VARIATION(55, L"unset DBPROP_STRONGIDENTITY")
TEST_VARIATION(56, L"unset IID_IAccessor")
TEST_VARIATION(57, L"unset IID_IChapteredRowset")
TEST_VARIATION(58, L"unset IID_IColumnsInfo")
TEST_VARIATION(59, L"unset IID_IColumnsRowset")
TEST_VARIATION(60, L"unset IID_IConnectionPointContainer")
TEST_VARIATION(61, L"unset IID_IConvertType")
TEST_VARIATION(62, L"unset IID_IDBAsynchStatus")
TEST_VARIATION(63, L"unset IID_IRowset")
TEST_VARIATION(64, L"unset IID_IRowsetChange")
TEST_VARIATION(65, L"unset IID_IRowsetIdentity")
TEST_VARIATION(66, L"unset IID_IRowsetIndex")
TEST_VARIATION(67, L"unset IID_IRowsetInfo")
TEST_VARIATION(68, L"unset IID_IRowsetLocate")
TEST_VARIATION(69, L"unset IID_IRowsetResynch")
TEST_VARIATION(70, L"unset IID_IRowsetScroll")
TEST_VARIATION(71, L"unset IID_IRowsetUpdate")
TEST_VARIATION(72, L"unset IID_IRowsetView")
TEST_VARIATION(73, L"unset IID_IViewChapter")
TEST_VARIATION(74, L"unset IID_IViewFilter")
TEST_VARIATION(75, L"unset IID_IViewRowset")
TEST_VARIATION(76, L"unset IID_IViewSort")
TEST_VARIATION(77, L"unset IID_ILockBytes")
TEST_VARIATION(78, L"unset IID_ISequentialStream")
TEST_VARIATION(79, L"unset IID_IStorage")
TEST_VARIATION(80, L"unset IID_IStream")
TEST_VARIATION(81, L"unset IID_ISupportErrorInfo")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_Boundary_Set)
//--------------------------------------------------------------------
// @class Boundary conditions for SetProperties
//
class TCICMDPRPT_Boundary_Set : public TCICMDPRPT {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_Boundary_Set,TCICMDPRPT);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember cPropertySets=0, SetProperties does not do anything
int Variation_1();
// @cmember cPropertySets=0 and rgPropertySets=NULL, SetProperties does not do anything
int Variation_2();
// @cmember cPropertySets>0 and rgPropertySets=NULL, E_INVALIDARG returned
int Variation_3();
// @cmember cProperties=0, SetProperties does not do anything
int Variation_4();
// @cmember cProperties=0 and rgProperties=NULL, SetProperties does not do anything
int Variation_5();
// @cmember cProperties>0 and rgProperties=NULL, E_INVALIDARG returned
int Variation_6();
// @cmember cPropertySets=0 and rgPropertySets is invalid, return S_OK
int Variation_7();
// @cmember cProperties=0 and guidPropertySet=invalid GUID, SetProperties does not do anything
int Variation_8();
// @cmember guidPropertySet=invalid GUID, DB_E_ERRORSOCCURRED returned
int Variation_9();
// @cmember guidPropertySet=invalid GUID and rgProperties=NULL, E_INVALIDARG returned
int Variation_10();
// @cmember Open a rowset and try to set a property, DB_E_OBJECTOPEN returned
int Variation_11();
// @cmember Set a good Propset and 0, NULL Propsets
int Variation_12();
// @cmember Set a 0, NULL Propsets with a DBINIT Propset
int Variation_13();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_Boundary_Set)
#define THE_CLASS TCICMDPRPT_Boundary_Set
BEG_TEST_CASE(TCICMDPRPT_Boundary_Set, TCICMDPRPT, L"Boundary conditions for SetProperties")
TEST_VARIATION(1, L"cPropertySets=0, SetProperties does not do anything")
TEST_VARIATION(2, L"cPropertySets=0 and rgPropertySets=NULL, SetProperties does not do anything")
TEST_VARIATION(3, L"cPropertySets>0 and rgPropertySets=NULL, E_INVALIDARG returned")
TEST_VARIATION(4, L"cProperties=0, SetProperties does not do anything")
TEST_VARIATION(5, L"cProperties=0 and rgProperties=NULL, SetProperties does not do anything")
TEST_VARIATION(6, L"cProperties>0 and rgProperties=NULL, E_INVALIDARG returned")
TEST_VARIATION(7, L"cPropertySets=0 and rgPropertySets is invalid, return S_OK")
TEST_VARIATION(8, L"cProperties=0 and guidPropertySet=invalid GUID, SetProperties does not do anything")
TEST_VARIATION(9, L"guidPropertySet=invalid GUID, DB_E_ERRORSOCCURRED returned")
TEST_VARIATION(10, L"guidPropertySet=invalid GUID and rgProperties=NULL, E_INVALIDARG returned")
TEST_VARIATION(11, L"Open a rowset and try to set a property, DB_E_OBJECTOPEN returned")
TEST_VARIATION(12, L"Set a good Propset and 0, NULL Propsets")
TEST_VARIATION(13, L"Set a 0, NULL Propsets with a DBINIT Propset")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_Boundary_Get)
//--------------------------------------------------------------------
// @class Boundary conditions for GetProperties
//
class TCICMDPRPT_Boundary_Get : public TCICMDPRPT {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_Boundary_Get,TCICMDPRPT);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember cPropertyIDSets>0, rgPropertyIDSets=NULL, return E_INVALIDARG
int Variation_1();
// @cmember cPropertyIDs>0, rgPropertyIDs=NULL, return E_INVALIDARG
int Variation_2();
// @cmember pcPropertySets=NULL, return E_INVALIDARG
int Variation_3();
// @cmember prgPropertySets=NULL, return E_INVALIDARG
int Variation_4();
// @cmember cPropertyIDSets>0, rgPropertyIDSets=NULL, pcPropertySets=NULL, prgPropertySets=NULL, E_INVALIDARG
int Variation_5();
// @cmember guidPropertySet=invalid GUID, DB_E_ERRORSOCCURRED returned
int Variation_6();
// @cmember rgPropertyIDs=invalid DBPROPID, DB_E_ERRORSOCCURRED returned
int Variation_7();
// @cmember DBPROPSET_ROWSET with 0, NULL
int Variation_8();
// @cmember DBPROPSET_ROWSET with 0, NULL twice
int Variation_9();
// @cmember DBPROPSET_ROWSET with 0, NULL and a single property
int Variation_10();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_Boundary_Get)
#define THE_CLASS TCICMDPRPT_Boundary_Get
BEG_TEST_CASE(TCICMDPRPT_Boundary_Get, TCICMDPRPT, L"Boundary conditions for GetProperties")
TEST_VARIATION(1, L"cPropertyIDSets>0, rgPropertyIDSets=NULL, return E_INVALIDARG")
TEST_VARIATION(2, L"cPropertyIDs>0, rgPropertyIDs=NULL, return E_INVALIDARG")
TEST_VARIATION(3, L"pcPropertySets=NULL, return E_INVALIDARG")
TEST_VARIATION(4, L"prgPropertySets=NULL, return E_INVALIDARG")
TEST_VARIATION(5, L"cPropertyIDSets>0, rgPropertyIDSets=NULL, pcPropertySets=NULL, prgPropertySets=NULL, E_INVALIDARG")
TEST_VARIATION(6, L"guidPropertySet=invalid GUID, DB_E_ERRORSOCCURRED returned")
TEST_VARIATION(7, L"rgPropertyIDs=invalid DBPROPID, DB_E_ERRORSOCCURRED returned")
TEST_VARIATION(8, L"DBPROPSET_ROWSET with 0, NULL")
TEST_VARIATION(9, L"DBPROPSET_ROWSET with 0, NULL twice")
TEST_VARIATION(10, L"DBPROPSET_ROWSET with 0, NULL and a single property")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_Parameters)
//--------------------------------------------------------------------
// @class Test parameters
//
class TCICMDPRPT_Parameters : public TCICMDPRPT {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
// @cmember
ULONG m_cPrpt;
// @cmember
DBPROPSET m_DBPrpt;
// @cmember
DBPROP m_DBProp;
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_Parameters,TCICMDPRPT);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember Set MAXROWS to 0
int Variation_1();
// @cmember Set MAXROWS to -1
int Variation_2();
// @cmember Set MaxOpenRows to 0
int Variation_3();
// @cmember Set MaxOpenRows to -1
int Variation_4();
// @cmember Set MAXROWS to 55
int Variation_5();
// @cmember Set MAXROWS to 99999999
int Variation_6();
// @cmember Set DBPROPSET_PROPERTYIESINERROR
int Variation_7();
// @cmember Set by ICommand::Execute
int Variation_8();
// @cmember SetCheap
int Variation_9();
// @cmember Set dwOptions to an invalid value. Return DBPROPSTATUS_BADOPTION
int Variation_10();
// @cmember Set colid on a property that only supports all columns
int Variation_11();
// @cmember Set an invalid colid on a property that supports colid
int Variation_12();
// @cmember Set DBPROP_APPENDONLY and DBPROP_OTHERINSERT to VARIANT_TRUE
int Variation_13();
// @cmember Set the same property twice in one call to SetProperties
int Variation_14();
// @cmember Get DBPROPSET_PROPERTYIESINERROR with cPropertyIDs>0
int Variation_15();
// @cmember Get DBPROPSET_PROPERTYIESINERROR with cPropertyIDs>0, rgPropertyIDs=NULL
int Variation_16();
// @cmember Get DBPROPSET_PROPERTYIESINERROR with rgPropertyIDs!=NULL
int Variation_17();
// @cmember Get DBPROPSET_ROWSET and DBPROPSET_PROPERTYIESINERROR
int Variation_18();
// @cmember Get DBPROPSET_PROPERTYIESINERROR after successful ICommand::Execute
int Variation_19();
// @cmember Get DBPROPSET_PROPERTYIESINERROR after ICommand::Execute fails
int Variation_20();
// @cmember Get DBPROPSET_PROPERTYIESINERROR twice in a row
int Variation_21();
// @cmember GetProperties with DBPROPSET_PROPERTYIESINERROR
int Variation_22();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_Parameters)
#define THE_CLASS TCICMDPRPT_Parameters
BEG_TEST_CASE(TCICMDPRPT_Parameters, TCICMDPRPT, L"Test parameters")
TEST_VARIATION(1, L"Set MAXROWS to 0")
TEST_VARIATION(2, L"Set MAXROWS to -1")
TEST_VARIATION(3, L"Set MaxOpenRows to 0")
TEST_VARIATION(4, L"Set MaxOpenRows to -1")
TEST_VARIATION(5, L"Set MAXROWS to 55")
TEST_VARIATION(6, L"Set MAXROWS to 99999999")
TEST_VARIATION(7, L"Set DBPROPSET_PROPERTYIESINERROR")
TEST_VARIATION(8, L"Set by ICommand::Execute")
TEST_VARIATION(9, L"SetCheap")
TEST_VARIATION(10, L"Set dwOptions to an invalid value. Return DBPROPSTATUS_BADOPTION")
TEST_VARIATION(11, L"Set colid on a property that only supports all columns")
TEST_VARIATION(12, L"Set an invalid colid on a property that supports colid")
TEST_VARIATION(13, L"Set DBPROP_APPENDONLY and DBPROP_OTHERINSERT to VARIANT_TRUE")
TEST_VARIATION(14, L"Set the same property twice in one call to SetProperties")
TEST_VARIATION(15, L"Get DBPROPSET_PROPERTYIESINERROR with cPropertyIDs>0")
TEST_VARIATION(16, L"Get DBPROPSET_PROPERTYIESINERROR with cPropertyIDs>0, rgPropertyIDs=NULL")
TEST_VARIATION(17, L"Get DBPROPSET_PROPERTYIESINERROR with rgPropertyIDs!=NULL")
TEST_VARIATION(18, L"Get DBPROPSET_ROWSET and DBPROPSET_PROPERTYIESINERROR")
TEST_VARIATION(19, L"Get DBPROPSET_PROPERTYIESINERROR after successful ICommand::Execute")
TEST_VARIATION(20, L"Get DBPROPSET_PROPERTYIESINERROR after ICommand::Execute fails")
TEST_VARIATION(21, L"Get DBPROPSET_PROPERTYIESINERROR twice in a row")
TEST_VARIATION(22, L"GetProperties with DBPROPSET_PROPERTYIESINERROR")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_SequenceBeforeRowset)
//--------------------------------------------------------------------
// @class sequence test before a rowset is open
//
class TCICMDPRPT_SequenceBeforeRowset : public TCICMDPRPT_ChangeProperties {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
// @cmember
ULONG m_cDBPrptGet;
// @cmember
BOOL m_fGet;
// @cmember
BOOL m_fSet;
// @cmember
IUnknown *m_pICommandInterface;
// @cmember
DBPROPSET *m_pDBPrpt;
// @cmember
DBPROPIDSET m_pDBPrptIDSet;
// @cmember
DBPROPID m_pDBPrptID;
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_SequenceBeforeRowset,TCICMDPRPT_ChangeProperties);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// @cmember Return the requested interface pointer
BOOL GetInterface(REFIID riid, BOOL fRequried);
// {{ TCW_TESTVARS()
// @cmember After IAccessor
int Variation_1();
// @cmember After IColumnsInfo
int Variation_2();
// @cmember After IColumnsRowset
int Variation_3();
// @cmember After ICommand
int Variation_4();
// @cmember After ICommandCost
int Variation_5();
// @cmember After ICommandPrepare
int Variation_6();
// @cmember After ICommandQuery
int Variation_7();
// @cmember After ICommandTree
int Variation_8();
// @cmember After ICommandText
int Variation_9();
// @cmember After ICommandValidate
int Variation_10();
// @cmember After ICommandWithParameters
int Variation_11();
// @cmember After IQuery
int Variation_12();
// @cmember After IPersistStream
int Variation_13();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_SequenceBeforeRowset)
#define THE_CLASS TCICMDPRPT_SequenceBeforeRowset
BEG_TEST_CASE(TCICMDPRPT_SequenceBeforeRowset, TCICMDPRPT, L"sequence test before a rowset is open")
TEST_VARIATION(1, L"After IAccessor")
TEST_VARIATION(2, L"After IColumnsInfo")
TEST_VARIATION(3, L"After IColumnsRowset")
TEST_VARIATION(4, L"After ICommand")
TEST_VARIATION(5, L"After ICommandCost")
TEST_VARIATION(6, L"After ICommandPrepare")
TEST_VARIATION(7, L"After ICommandQuery")
TEST_VARIATION(8, L"After ICommandTree")
TEST_VARIATION(9, L"After ICommandText")
TEST_VARIATION(10, L"After ICommandValidate")
TEST_VARIATION(11, L"After ICommandWithParameters")
TEST_VARIATION(12, L"After IQuery")
TEST_VARIATION(13, L"After IPersistStream")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_SequenceAfterRowset)
//--------------------------------------------------------------------
// @class sequence test after a rowset is open
//
class TCICMDPRPT_SequenceAfterRowset : public TCICMDPRPT {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_SequenceAfterRowset,TCICMDPRPT);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember Call SetProperties after a rowset is open, DB_E_OPENOBJECT
int Variation_1();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_SequenceAfterRowset)
#define THE_CLASS TCICMDPRPT_SequenceAfterRowset
BEG_TEST_CASE(TCICMDPRPT_SequenceAfterRowset, TCICMDPRPT, L"sequence test after a rowset is open")
TEST_VARIATION(1, L"Call SetProperties after a rowset is open, DB_E_OPENOBJECT")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_Zombie)
//--------------------------------------------------------------------
// @class Test zombie state for command object
//
class TCICMDPRPT_Zombie : public CTransaction {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
protected:
//@cmember: Get a supported interface property
BOOL InterfaceSupported(DBPROPID *dwPropertyID);
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_Zombie,CTransaction);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember S_OK - Abort ICommandProperties::GetProperties with fRetaining=TRUE
int Variation_1();
// @cmember S_OK - Abort ICommandProperties::GetProperties with fRetaining=FALSE
int Variation_2();
// @cmember S_OK - Commit ICommandProperties::GetProperties with fRetaining=TRUE
int Variation_3();
// @cmember S_OK - Commit ICommandProperties::GetProperties with fRetaining=FALSE
int Variation_4();
// @cmember DB_E_OBJECTOPEN - Abort ICommandProperties::SetProperties with fRetaining=TRUE
int Variation_5();
// @cmember DB_E_OBJECTOPEN - Abort ICommandProperties::SetProperties with fRetaining=FALSE
int Variation_6();
// @cmember DB_E_OBJECTOPEN - Commit ICommandProperties::SetProperties with fRetaining=TRUE
int Variation_7();
// @cmember DB_E_OBJECTOPEN - Commit ICommandProperties::SetProperties with fRetaining=FALSE
int Variation_8();
// @cmember S_OK - Abort ICommandProperties::SetProperties with fRetaining=TRUE
int Variation_9();
// @cmember S_OK - Abort ICommandProperties::SetProperties with fRetaining=FALSE
int Variation_10();
// @cmember S_OK - Commit ICommandProperties::SetProperties with fRetaining=TRUE
int Variation_11();
// @cmember S_OK - Commit ICommandProperties::SetProperties with fRetaining=FALSE
int Variation_12();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_Zombie)
#define THE_CLASS TCICMDPRPT_Zombie
BEG_TEST_CASE(TCICMDPRPT_Zombie, CTransaction, L"Test zombie state for command object")
TEST_VARIATION(1, L"S_OK - Abort ICommandProperties::GetProperties with fRetaining=TRUE")
TEST_VARIATION(2, L"S_OK - Abort ICommandProperties::GetProperties with fRetaining=FALSE")
TEST_VARIATION(3, L"S_OK - Commit ICommandProperties::GetProperties with fRetaining=TRUE")
TEST_VARIATION(4, L"S_OK - Commit ICommandProperties::GetProperties with fRetaining=FALSE")
TEST_VARIATION(5, L"DB_E_OBJECTOPEN - Abort ICommandProperties::SetProperties with fRetaining=TRUE")
TEST_VARIATION(6, L"DB_E_OBJECTOPEN - Abort ICommandProperties::SetProperties with fRetaining=FALSE")
TEST_VARIATION(7, L"DB_E_OBJECTOPEN - Commit ICommandProperties::SetProperties with fRetaining=TRUE")
TEST_VARIATION(8, L"DB_E_OBJECTOPEN - Commit ICommandProperties::SetProperties with fRetaining=FALSE")
TEST_VARIATION(9, L"S_OK - Abort ICommandProperties::SetProperties with fRetaining=TRUE")
TEST_VARIATION(10, L"S_OK - Abort ICommandProperties::SetProperties with fRetaining=FALSE")
TEST_VARIATION(11, L"S_OK - Commit ICommandProperties::SetProperties with fRetaining=TRUE")
TEST_VARIATION(12, L"S_OK - Commit ICommandProperties::SetProperties with fRetaining=FALSE")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_Stress)
//--------------------------------------------------------------------
// @class Stress testing for memory leak
//
class TCICMDPRPT_Stress : public TCICMDPRPT {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_Stress,TCICMDPRPT);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember Free Memory for GetProperties, check for memory leak
int Variation_1();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_Stress)
#define THE_CLASS TCICMDPRPT_Stress
BEG_TEST_CASE(TCICMDPRPT_Stress, TCICMDPRPT, L"Stress testing for memory leak")
TEST_VARIATION(1, L"Free Memory for GetProperties, check for memory leak")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_Sequence)
//--------------------------------------------------------------------
// @class test calling sequence
//
class TCICMDPRPT_Sequence : public TCICMDPRPT {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_Sequence,TCICMDPRPT);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember Set, Unset, and Unset
int Variation_1();
// @cmember Unset, Set, Set
int Variation_2();
// @cmember Multiple rowset objects open on the same command object
int Variation_3();
// @cmember Set IReadData, unset IReadData, call Execute()
int Variation_4();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_Sequence)
#define THE_CLASS TCICMDPRPT_Sequence
BEG_TEST_CASE(TCICMDPRPT_Sequence, TCICMDPRPT, L"test calling sequence")
TEST_VARIATION(1, L"Set, Unset, and Unset")
TEST_VARIATION(2, L"Unset, Set, Set")
TEST_VARIATION(3, L"Multiple rowset objects open on the same command object")
TEST_VARIATION(4, L"Set IReadData, unset IReadData, call Execute()")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCICMDPRPT_KAGERA)
//--------------------------------------------------------------------
// @class Kagera specific test case
//
class TCICMDPRPT_KAGERA : public TCICMDPRPT {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCICMDPRPT_KAGERA,TCICMDPRPT);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember A table without index only has forward only behavior
int Variation_1();
// }}
};
// {{ TCW_TESTCASE(TCICMDPRPT_KAGERA)
#define THE_CLASS TCICMDPRPT_KAGERA
BEG_TEST_CASE(TCICMDPRPT_KAGERA, TCICMDPRPT, L"Kagera specific test case")
TEST_VARIATION(1, L"A table without index only has forward only behavior")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// {{ TCW_TEST_CASE_MAP(TCExtendedErrors)
//--------------------------------------------------------------------
// @class Extended Errors
//
class TCExtendedErrors : public TCICMDPRPT {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(TCExtendedErrors,TCICMDPRPT);
// }}
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember Valid ICommandProperties calls with previous error object existing.
int Variation_1();
// @cmember Invalid SetProperties call with previous error object existing
int Variation_2();
// @cmember Invalid SetProperties calls with no previous error object existing
int Variation_3();
// @cmember Invalid GetProperties calls with previous error object existing.
int Variation_4();
// @cmember Invalid GetProperties calls with no previous error object existing
int Variation_5();
// }}
};
// {{ TCW_TESTCASE(TCExtendedErrors)
#define THE_CLASS TCExtendedErrors
BEG_TEST_CASE(TCExtendedErrors, TCICMDPRPT, L"Extended Errors")
TEST_VARIATION(1, L"Valid ICommandProperties calls with previous error object existing.")
TEST_VARIATION(2, L"Invalid SetProperties calls with previous error object existing")
TEST_VARIATION(3, L"Invalid SetProperties calls with no previous error object existing")
TEST_VARIATION(4, L"Invalid GetProperties calls with previous error object existing")
TEST_VARIATION(5, L"Invalid GetProperties calls with no previous error object existing")
END_TEST_CASE()
#undef THE_CLASS
// }}
// }}
// }} END_DECLARE_TEST_CASES()
// {{ TCW_TESTMODULE(ThisModule)
TEST_MODULE(13, ThisModule, gwszModuleDescrip)
TEST_CASE(1, TCICMDPRPT_BulkProcess)
TEST_CASE(2, TCICMDPRPT_SetProperties)
TEST_CASE(3, TCICMDPRPT_UnsetProperties)
TEST_CASE(4, TCICMDPRPT_Boundary_Set)
TEST_CASE(5, TCICMDPRPT_Boundary_Get)
TEST_CASE(6, TCICMDPRPT_Parameters)
TEST_CASE(7, TCICMDPRPT_SequenceBeforeRowset)
TEST_CASE(8, TCICMDPRPT_SequenceAfterRowset)
TEST_CASE(9, TCICMDPRPT_Zombie)
TEST_CASE(10, TCICMDPRPT_Stress)
TEST_CASE(11, TCICMDPRPT_Sequence)
TEST_CASE(12, TCICMDPRPT_KAGERA)
TEST_CASE(13, TCExtendedErrors)
END_TEST_MODULE()
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_BulkProcess)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_BulkProcess - Use array of GUIDs and DBProperties
//| Created: 09/21/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_BulkProcess::Init()
{
if(TCICMDPRPT::Init())
return TRUE;
return FALSE;
}
//--------------------------------------------------------------------
//@cmember: Get a settable rowset property
//
BOOL TCICMDPRPT_BulkProcess::RowsetSettable(DBPROPID *dwPropertyID)
{
ULONG cPrpt;
for(cPrpt=IDX_ROWSET_START;cPrpt<(ULONG)IDX_ROWSET_END;cPrpt++)
{
if( g_rgDBProperties[cPrpt].fSettable &&
g_rgDBProperties[cPrpt].fSupported &&
g_rgDBProperties[cPrpt].vtType == VT_BOOL )
{
*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
return TRUE;
}
}
return FALSE;
}
//--------------------------------------------------------------------
//@cmember: Get a not settable rowset property
//
BOOL TCICMDPRPT_BulkProcess::RowsetNotSettable(DBPROPID *dwPropertyID, ULONG *ulPropIdx)
{
ULONG cPrpt;
for(cPrpt=IDX_ROWSET_START;cPrpt<(ULONG)IDX_ROWSET_END;cPrpt++)
{
if(!(g_rgDBProperties[cPrpt].fSettable) && (g_rgDBProperties[cPrpt].fSupported) )
{
*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
*ulPropIdx=cPrpt;
return TRUE;
}
}
return FALSE;
}
//--------------------------------------------------------------------
//@cmember: Get a not supported rowset property
//
BOOL TCICMDPRPT_BulkProcess::RowsetNotSupported(DBPROPID *dwPropertyID)
{
ULONG cPrpt;
for(cPrpt=IDX_ROWSET_START;cPrpt<(ULONG)IDX_ROWSET_END;cPrpt++)
{
if(!(g_rgDBProperties[cPrpt].fSupported) &&
(g_rgDBProperties[cPrpt].vtType==VT_BOOL)
)
{
*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
return TRUE;
}
}
return FALSE;
}
//--------------------------------------------------------------------
//@cmember: Get a not supported interface property
//
BOOL TCICMDPRPT_BulkProcess::InterfaceNotSupported(DBPROPID *dwPropertyID)
{
ULONG cPrpt;
for(cPrpt=IDX_INTERFACE_START;cPrpt<=(ULONG)IDX_INTERFACE_END;cPrpt++)
{
if(!(g_rgDBProperties[cPrpt].fSupported))
{
*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
return TRUE;
}
}
return FALSE;
}
//--------------------------------------------------------------------
//@cmember: Get a supported interface property
//
BOOL TCICMDPRPT_BulkProcess::InterfaceSupported(DBPROPID *dwPropertyID)
{
ULONG cPrpt;
for(cPrpt=IDX_INTERFACE_START;cPrpt<=(ULONG)IDX_INTERFACE_END;cPrpt++)
{
if((g_rgDBProperties[cPrpt].fSupported) && (g_rgDBProperties[cPrpt].fSettable))
{
*dwPropertyID = g_rgDBProperties[cPrpt].dwPropertyID;
return TRUE;
}
}
return FALSE;
}
//--------------------------------------------------------------------
//@cmember: Get a supported Kagera property
//
BOOL TCICMDPRPT_BulkProcess::KageraSupported(DBPROPID *dwPropertyID)
{
ULONG cPrpt;
for(cPrpt=IDX_KAGERA_START;cPrpt<=(ULONG)IDX_KAGERA_END;cPrpt++)
{
if((g_rgDBProperties[cPrpt].fSupported) && (g_rgDBProperties[cPrpt].fSettable))
{
*dwPropertyID = g_rgDBProperties[cPrpt].dwPropertyID;
return TRUE;
}
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc cProperties==0
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_BulkProcess::Variation_1()
{
BOOL fPass = FALSE;
HRESULT Exphr = S_OK;
ULONG cCount = 0;
ULONG cDefault = 0;
ULONG cPropertySets = 0;
DBPROPSET *pPropertySets = NULL;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
// Fixup HResult
if( !g_rgDBProperties[IDX_CANHOLDROWS].fSupported )
Exphr = DB_E_ERRORSOCCURRED;
// Set a rowset property DBPROP_CANHOLDROWS
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrptSet.guidPropertySet = *(g_rgDBProperties[IDX_CANHOLDROWS].pGuidPropertySet);
DBPrptSet.cProperties = 1;
DBPrpt.dwPropertyID = DBPROP_CANHOLDROWS;
DBPrpt.dwOptions = DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt = VT_EMPTY;
DBPrptSet.rgProperties = &DBPrpt;
TESTC_(m_pICommandProperties->SetProperties(1,&DBPrptSet),Exphr);
// Open a rowset
TESTC(OpenRowset());
// GetProperties with cPropertyIDSets==0
TESTC_(m_pICommandProperties->GetProperties(0,NULL,&cPropertySets,&pPropertySets),S_OK);
// Make sure two property sets are returned
COMPARE(cPropertySets, 1+g_ulExtraROWProp);
// Find the DBPROPSET_ROWSET group
for(cCount=0; cCount < cPropertySets; cCount++)
{
if(pPropertySets[cCount].guidPropertySet == DBPROPSET_ROWSET)
{
// In no restriction case, GetProperties returns the properties that have been set and
// values of properties that have not been set but have default values
for(ULONG cIDX=IDX_ROWSET_START; cIDX <= (ULONG)IDX_INTERFACE_END; cIDX++)
{
if(!COMPARE(CheckSet(cIDX,&(pPropertySets->guidPropertySet),
pPropertySets->cProperties,pPropertySets->rgProperties),TRUE))
continue;
if(!(g_rgDBProperties[cIDX].fSupported))
continue;
// If the property has a default value, it should be returned as well
if(g_rgDBProperties[cIDX].vDefault.vt!=VT_EMPTY)
cDefault++;
}
// The count of cDefault+1; should be equal to cProperties
TESTC(cDefault == pPropertySets->cProperties);
fPass=TRUE;
}
}
CLEANUP:
// Free memory from GetProperties
FreeProperties(&cPropertySets,&pPropertySets);
ReleaseRowset();
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc GetProperties returns correct info for array of properties in the same property set
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_BulkProcess::Variation_2()
{
BOOL fTest = FALSE;
DBPROPSET *pDBPrpts = NULL;
ULONG cPrpt = 0;
ULONG cDBPropertiesCount = 0;
ULONG cCount = 0;
ULONG ulPropIdx = 0;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs[6];
DBPROPSET pPropertySets;
DBPROP rgProperties;
// Go back to initial state
TESTC(ResetProperties());
// Make sure the rgProperties and rgguidPropertySet contain the same # of elements
cDBPropertiesCount = sizeof(rgPropertyIDs)/sizeof(rgPropertyIDs[0]);
// Set an interface property
memset(&rgProperties ,0,sizeof(DBPROP));
pPropertySets.guidPropertySet = DBPROPSET_ROWSET;
pPropertySets.cProperties = 1;
pPropertySets.rgProperties = &rgProperties;
rgProperties.dwPropertyID = DBPROP_IRowset;
rgProperties.dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties.vValue.vt = VT_BOOL;
V_BOOL(&rgProperties.vValue) = VARIANT_FALSE;
// We expect the following to fail because you can not set DBPROP_IRowset
TESTC_(m_pICommandProperties->SetProperties(1,&pPropertySets),DB_E_ERRORSOCCURRED);
// IID_IRowsetInfo should always be set
rgPropertyIDs[0] = DBPROP_IRowset;
rgPropertyIDs[1] = DBPROP_IRowsetInfo;
// Get a not supported interface
if(!InterfaceNotSupported(&(rgPropertyIDs[2])))
rgPropertyIDs[2] = 0;
// Get a settable interface property, set it
if(!InterfaceSupported(&rgPropertyIDs[3]))
rgPropertyIDs[3] = DBPROP_IRowset;
pPropertySets.rgProperties = &rgProperties;
rgProperties.dwPropertyID = rgPropertyIDs[3];
rgProperties.dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties.vValue.vt = VT_BOOL;
V_BOOL(&rgProperties.vValue) = VARIANT_TRUE;
// Set the interface property
TESTC_(m_pICommandProperties->SetProperties(1,&pPropertySets),S_OK);
// Get an unsettable rowset property
if(!RowsetNotSettable(&rgPropertyIDs[4],&ulPropIdx))
return TEST_SKIPPED;
// Get a not supported property
if(!RowsetNotSupported(&(rgPropertyIDs[5])))
rgPropertyIDs[5]=0;
// Set up for GetProperties.
pPropertyIDSets.cPropertyIDs = cDBPropertiesCount;
pPropertyIDSets.rgPropertyIDs = rgPropertyIDs;
pPropertyIDSets.guidPropertySet = DBPROPSET_ROWSET;
TESTC_(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),DB_S_ERRORSOCCURRED);
// Make sure GetProperties return correct infomation
TESTC(cPrpt == 1);
TESTC(pDBPrpts->cProperties == cDBPropertiesCount);
for(cCount=0; cCount < cDBPropertiesCount; cCount++) {
// If DBPROPSTATUS_NOTSUPPORTED dwOption is undefined
if(pDBPrpts->rgProperties[cCount].dwStatus != DBPROPSTATUS_NOTSUPPORTED)
{
if(pDBPrpts->rgProperties[cCount].dwPropertyID == rgPropertyIDs[3])
TESTC(pDBPrpts->rgProperties[cCount].dwOptions == DBPROPOPTIONS_REQUIRED);
}
TESTC(rgPropertyIDs[cCount] == pDBPrpts->rgProperties[cCount].dwPropertyID);
}
// The first inteface property should always be true
// IID_IRowsetInfo should always return TRUE and it is the default
TESTC(pDBPrpts->rgProperties[0].dwStatus == DBPROPSTATUS_OK);
TESTC(V_BOOL(&pDBPrpts->rgProperties[0].vValue) == VARIANT_TRUE);
TESTC(pDBPrpts->rgProperties[1].dwStatus == DBPROPSTATUS_OK);
TESTC(V_BOOL(&pDBPrpts->rgProperties[1].vValue) == VARIANT_TRUE);
// The third interface property is not supported
TESTC(pDBPrpts->rgProperties[2].dwStatus == DBPROPSTATUS_NOTSUPPORTED);
// The 4th property should be set to true
TESTC(V_BOOL(&pDBPrpts->rgProperties[3].vValue) == VARIANT_TRUE);
// The 5th property should return default value
TESTC(pDBPrpts->rgProperties[4].dwStatus == DBPROPSTATUS_OK);
// The 6th property should return not supported
TESTC(pDBPrpts->rgProperties[5].dwStatus == DBPROPSTATUS_NOTSUPPORTED);
fTest=TRUE;
CLEANUP:
// Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc SetProperties set array of properties in the same property set
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_BulkProcess::Variation_3()
{
BOOL fTest=FALSE;
DBPROPSET pPropertySets;
DBPROP rgProperties[6];
DBPROPSET *pDBPrpts=NULL;
ULONG cPrpt=0;
ULONG cDBPropertiesCount=0;
ULONG ulPropIdx=0;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs[3];
// Go back to initial state
TESTC(ResetProperties());
// Make sure the rgProperties and rgguidPropertySet contain the same # of elements
cDBPropertiesCount = sizeof(rgProperties)/sizeof(rgProperties[0]);
memset(&rgProperties ,0,(sizeof(DBPROP)*cDBPropertiesCount));
pPropertySets.cProperties = cDBPropertiesCount;
pPropertySets.rgProperties = rgProperties;
pPropertySets.guidPropertySet= DBPROPSET_ROWSET;
// Get an settable interface
if(!InterfaceSupported(&(rgPropertyIDs[0])))
{
rgPropertyIDs[0] = DBPROP_IRowset;
V_BOOL(&rgProperties[0].vValue) = VARIANT_TRUE;
}
else
V_BOOL(&rgProperties[0].vValue) = VARIANT_FALSE;
rgProperties[0].dwPropertyID = rgPropertyIDs[0];
rgProperties[0].dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties[0].vValue.vt = VT_BOOL;
// Get an unsettable interface
rgPropertyIDs[1] = DBPROP_IAccessor;
rgProperties[1].dwPropertyID = DBPROP_IAccessor;
rgProperties[1].dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties[1].vValue.vt = VT_BOOL;
V_BOOL(&rgProperties[1].vValue) = VARIANT_FALSE;
// Get a not supported interface
if(!InterfaceNotSupported(&(rgProperties[2].dwPropertyID)))
rgProperties[2].dwPropertyID = 0;
rgPropertyIDs[2] = rgProperties[2].dwPropertyID;
rgProperties[2].dwOptions = DBPROPOPTIONS_REQUIRED;
// Get an unsettable rowset property
if(!RowsetNotSettable(&rgProperties[3].dwPropertyID,&ulPropIdx))
return TEST_SKIPPED;
rgProperties[3].dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties[3].vValue.vt = g_rgDBProperties[ulPropIdx].vtType;
if( g_rgDBProperties[ulPropIdx].vtType == VT_BOOL )
{
if( g_rgDBProperties[ulPropIdx].vDefault.boolVal == VARIANT_TRUE )
V_BOOL(&rgProperties[3].vValue) = VARIANT_FALSE;
else
V_BOOL(&rgProperties[3].vValue) = VARIANT_TRUE;
}
else
V_I4(&rgProperties[3].vValue) = g_rgDBProperties[ulPropIdx].vDefault.lVal+1;
// Get a not supported property
if(!RowsetNotSupported(&(rgProperties[4].dwPropertyID)))
rgProperties[4].dwPropertyID = 0;
rgProperties[4].dwOptions = DBPROPOPTIONS_REQUIRED;
// Get a settable interface property
if(!InterfaceSupported(&(rgProperties[5].dwPropertyID)))
rgProperties[5].dwPropertyID = DBPROP_IRowset;
rgProperties[5].dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties[5].vValue.vt = VT_BOOL;
V_BOOL(&rgProperties[5].vValue) = VARIANT_TRUE;
// Set the array of properties
TESTC_(m_pICommandProperties->SetProperties(1,&pPropertySets),DB_S_ERRORSOCCURRED);
// Make sure dwStatus returns the correct error information
TESTC(rgProperties[0].dwStatus == DBPROPSTATUS_OK);
// 2nd interface is not settable
TESTC(rgProperties[1].dwStatus == DBPROPSTATUS_NOTSETTABLE);
// 3rd interface is not supported
TESTC(rgProperties[2].dwStatus == DBPROPSTATUS_NOTSUPPORTED);
// 4th rowset property is not settable
TESTC(rgProperties[3].dwStatus == DBPROPSTATUS_NOTSETTABLE);
// 5th rowset property is not supported
TESTC(rgProperties[4].dwStatus == DBPROPSTATUS_NOTSUPPORTED);
// 6th property should be set
TESTC(rgProperties[5].dwStatus == DBPROPSTATUS_OK);
// Set up for GetProperties.
pPropertyIDSets.cPropertyIDs = 2;
pPropertyIDSets.guidPropertySet = DBPROPSET_ROWSET;
pPropertyIDSets.rgPropertyIDs = rgPropertyIDs;
TESTC_(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),S_OK);
TESTC(V_BOOL(&pDBPrpts->rgProperties[0].vValue) == VARIANT_TRUE);
TESTC(V_BOOL(&pDBPrpts->rgProperties[1].vValue) == VARIANT_TRUE);
fTest=TRUE;
CLEANUP:
// Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Duplicated property IDs
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_BulkProcess::Variation_4()
{
BOOL fTest=FALSE;
DBPROPSET pPropertySets;
DBPROP rgProperties[2];
DBPROPSET *pDBPrpts=NULL;
ULONG cPrpt=0;
ULONG cCount=0;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs[2];
// Go back to initial state
TESTC(ResetProperties());
// Find a supported interface
if(VerifySupported(IDX_IROWSETLOCATE))
rgPropertyIDs[0] = DBPROP_IRowsetLocate;
else if(!InterfaceSupported(&(rgPropertyIDs[0])))
return TEST_SKIPPED;
memset(&rgProperties ,0,(sizeof(DBPROP)*2));
pPropertySets.cProperties = 2;
pPropertySets.rgProperties = rgProperties;
pPropertySets.guidPropertySet= DBPROPSET_ROWSET;
rgProperties[0].dwPropertyID = rgPropertyIDs[0];
rgProperties[0].dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties[0].vValue.vt = VT_BOOL;
V_BOOL(&rgProperties[0].vValue) = VARIANT_TRUE;
// Copy the same info
rgProperties[1] = rgProperties[0];
rgPropertyIDs[1]= rgPropertyIDs[0];
// Set duplicate properties
TESTC_(m_pICommandProperties->SetProperties(1,&pPropertySets),S_OK);
// Set up for GetProperties.
pPropertyIDSets.cPropertyIDs = 2;
pPropertyIDSets.guidPropertySet = DBPROPSET_ROWSET;
pPropertyIDSets.rgPropertyIDs = rgPropertyIDs;
// Get duplicate properties
TESTC_(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,&cPrpt,&pDBPrpts),S_OK);
// Count of property sets
TESTC(cPrpt == 1);
// Count of properties in the property set
TESTC(pDBPrpts->cProperties == 2);
// Verify we get the same property
for(cCount=0; cCount< pDBPrpts->cProperties; cCount++) {
TESTC(pDBPrpts->rgProperties[cCount].dwPropertyID == rgProperties[0].dwPropertyID);
TESTC(V_BOOL(&pDBPrpts->rgProperties[cCount].vValue) == V_BOOL(&rgProperties[0].vValue));
}
fTest=TRUE;
CLEANUP:
// Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc MAXROWS >= MAXOPENROWS verified with two GetProperties calls
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_BulkProcess::Variation_5()
{
BOOL fTest=FALSE;
HRESULT ExpHR=S_OK;
DBPROPSET *pDBPrpts=NULL;
DBPROPSET *pDBPrpts2=NULL;
ULONG cPrpt=0;
ULONG cPrpt2=0;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs;
DBPROPIDSET pPropertyIDSets2;
DBPROPID rgPropertyIDs2;
// Go back to initial state
TESTC(ResetProperties());
// The two properies have to be supported
if(!VerifySupported(IDX_MAXROWS))
ExpHR = DB_S_ERRORSOCCURRED;
if(!VerifySupported(IDX_MAXOPENROWS))
ExpHR = DB_E_ERRORSOCCURRED;
// Verify MAXROWS >= MAXOPENROWS
pPropertyIDSets.cPropertyIDs = 1;
pPropertyIDSets.rgPropertyIDs = &rgPropertyIDs;
pPropertyIDSets.guidPropertySet = DBPROPSET_ROWSET;
rgPropertyIDs = DBPROP_MAXROWS;
pPropertyIDSets2.cPropertyIDs = 1;
pPropertyIDSets2.rgPropertyIDs = &rgPropertyIDs2;
pPropertyIDSets2.guidPropertySet= DBPROPSET_ROWSET;
rgPropertyIDs2 = DBPROP_MAXOPENROWS;
TESTC_(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),ExpHR);
TESTC_(m_pICommandProperties->GetProperties(1,&pPropertyIDSets2,
&cPrpt2,&pDBPrpts2),ExpHR);
// Make sure that MAXROWS is greater than MAXOPENROWS
if(pDBPrpts->rgProperties->vValue.lVal)
{
TESTC((pDBPrpts->rgProperties->vValue.lVal >= pDBPrpts2->rgProperties->vValue.lVal) == TRUE);
}
else
{
TESTC((pDBPrpts2->rgProperties->vValue.lVal >= 0) == TRUE);
}
fTest=TRUE;
CLEANUP:
// Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
FreeProperties(&cPrpt2,&pDBPrpts2);
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc GetProperties returns correct info for array of properties in different property sets
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_BulkProcess::Variation_6()
{
BOOL fTest=FALSE;
HRESULT ExpHR=S_OK;
DBPROPSET *pDBPrpts=NULL;
ULONG cPrpt=0;
DBPROPIDSET pPropertyIDSets[2];
DBPROPID rgPropertyIDs[2];
DBPROPID rgPropertyIDs2;
// Go back to initial state
TESTC(ResetProperties());
// The properies have to be supported
// Get a setttable interface
if(!InterfaceSupported(&(rgPropertyIDs[0])))
rgPropertyIDs[0] = DBPROP_IRowset;
// Get a settable rowset property
if(!RowsetSettable(&(rgPropertyIDs[1])))
rgPropertyIDs[1] = DBPROP_IRowsetInfo;
// Get a settable rowset property
if(!KageraSupported(&rgPropertyIDs2)) {
ExpHR = DB_S_ERRORSOCCURRED;
rgPropertyIDs2 = 0;
}
// Set parameters needed for the GetProperties call
pPropertyIDSets[0].cPropertyIDs = 2;
pPropertyIDSets[0].rgPropertyIDs = rgPropertyIDs;
pPropertyIDSets[0].guidPropertySet= DBPROPSET_ROWSET;
pPropertyIDSets[1].cPropertyIDs = 1;
pPropertyIDSets[1].rgPropertyIDs = &rgPropertyIDs2;
pPropertyIDSets[1].guidPropertySet= DBPROPSET_PROVIDERROWSET;
TESTC_(m_pICommandProperties->GetProperties(2,pPropertyIDSets,
&cPrpt,&pDBPrpts),ExpHR);
// Count of property sets
TESTC(cPrpt == 2);
// Verify that the elements of each array (guidPropertySets and property IDs)
// are returned in the same order.
TESTC(pDBPrpts[0].rgProperties[0].dwPropertyID == rgPropertyIDs[0]);
TESTC(pDBPrpts[0].rgProperties[1].dwPropertyID == rgPropertyIDs[1]);
TESTC(pDBPrpts[1].rgProperties->dwPropertyID == rgPropertyIDs2);
fTest=TRUE;
CLEANUP:
// Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc SetProperties sets array of properties in different property sets
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_BulkProcess::Variation_7()
{
BOOL fTest=FALSE;
HRESULT ExpHR=S_OK;
DBPROPSET pPropertySets[2];
DBPROP rgProperties[2];
DBPROP rgProperties2;
DBPROPSET *pDBPrpts=NULL;
ULONG cPrpt=0;
DBPROPIDSET pPropertyIDSets[2];
DBPROPID rgPropertyIDs[2];
DBPROPID rgPropertyIDs2;
// Go back to initial state
TESTC(ResetProperties());
// Get a setttable interface
if(!InterfaceSupported(&(rgPropertyIDs[0])))
rgPropertyIDs[0]=DBPROP_IRowset;
// Get a settable rowset property
if(!RowsetSettable(&(rgPropertyIDs[1])))
rgPropertyIDs[1] = DBPROP_IRowsetInfo;
// Set parameters needed for the GetProperties call
memset(&rgProperties ,0,(sizeof(DBPROP)*2));
memset(&rgProperties2 ,0,sizeof(DBPROP));
pPropertySets[0].cProperties = 2;
pPropertySets[0].rgProperties = rgProperties;
pPropertySets[0].guidPropertySet = DBPROPSET_ROWSET;
rgProperties[0].dwPropertyID = rgPropertyIDs[0];
rgProperties[0].dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties[0].vValue.vt = VT_BOOL;
V_BOOL(&rgProperties[0].vValue) = VARIANT_TRUE;
rgProperties[1].dwPropertyID = rgPropertyIDs[1];
rgProperties[1].dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties[1].vValue.vt = VT_BOOL;
V_BOOL(&rgProperties[1].vValue) = VARIANT_FALSE;
// Get a settable PROVIDERROWSET property
if(!KageraSupported(&rgPropertyIDs2)) {
ExpHR = DB_S_ERRORSOCCURRED;
rgPropertyIDs2 = 0;
}
pPropertySets[1].cProperties = 1;
pPropertySets[1].rgProperties = &rgProperties2;
pPropertySets[1].guidPropertySet = DBPROPSET_PROVIDERROWSET;
rgProperties2.dwPropertyID = rgPropertyIDs2;
rgProperties2.dwOptions = DBPROPOPTIONS_REQUIRED;
rgProperties2.vValue.vt = VT_BOOL;
V_BOOL(&rgProperties2.vValue) = VARIANT_TRUE;
// Set the array of properties
TESTC_(m_pICommandProperties->SetProperties(2,pPropertySets),ExpHR);
// Set parameters needed for the GetProperties call
pPropertyIDSets[0].cPropertyIDs = 2;
pPropertyIDSets[0].rgPropertyIDs = rgPropertyIDs;
pPropertyIDSets[0].guidPropertySet = DBPROPSET_ROWSET;
pPropertyIDSets[1].cPropertyIDs = 1;
pPropertyIDSets[1].rgPropertyIDs = &rgPropertyIDs2;
pPropertyIDSets[1].guidPropertySet = DBPROPSET_PROVIDERROWSET;
TESTC_(m_pICommandProperties->GetProperties(2,pPropertyIDSets,
&cPrpt,&pDBPrpts),ExpHR);
// Count of property sets
TESTC(cPrpt == 2);
// Verify that the elements of each array (guidPropertySets and property IDs)
// are returned in the same order.
TESTC(pDBPrpts[0].rgProperties[0].dwPropertyID == rgPropertyIDs[0]);
TESTC(pDBPrpts[0].rgProperties[1].dwPropertyID == rgPropertyIDs[1]);
TESTC(pDBPrpts[1].rgProperties->dwPropertyID == rgPropertyIDs2);
fTest=TRUE;
CLEANUP:
// Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc Set all Interface properties with DBPROPOPTIONS_OPTIONAL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_BulkProcess::Variation_8()
{
BOOL fTest=FALSE;
DBPROPSET pPropertySets;
DBPROP *prgProperties=NULL;
DBPROPSET *pDBPrpts=NULL;
ULONG cCount=0;
ULONG i=0;
ULONG cProperties=(IDX_INTERFACE_END-IDX_INTERFACE_START);
// Go back to initial state
TESTC(ResetProperties());
// Allocate memory for the PropIDs
prgProperties = (DBPROP *) PROVIDER_ALLOC(cProperties * sizeof(DBPROP));
ZeroMemory(prgProperties,(sizeof(DBPROP) * cProperties));
// Set the properties
for(i=0; i<cProperties; i++)
{
prgProperties[i].dwPropertyID = g_rgDBProperties[IDX_INTERFACE_START+i].dwPropertyID;
prgProperties[i].dwOptions = DBPROPOPTIONS_OPTIONAL;
prgProperties[i].vValue.vt = VT_BOOL;
V_BOOL(&prgProperties[i].vValue) = VARIANT_TRUE;
}
pPropertySets.cProperties = cProperties;
pPropertySets.rgProperties = prgProperties;
pPropertySets.guidPropertySet= DBPROPSET_ROWSET;
// Set duplicate properties
TESTC_(m_pICommandProperties->SetProperties(1,&pPropertySets),DB_S_ERRORSOCCURRED);
fTest=TRUE;
CLEANUP:
// Free memory from Properties
PROVIDER_FREE(prgProperties);
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_BulkProcess::Terminate()
{
return (TCICMDPRPT::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_SetProperties)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_SetProperties - set all interface and rowset properties
//| Created: 09/21/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_SetProperties::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(TCICMDPRPT_ChangeProperties::Init())
// }}
{
return TRUE;
}
return FALSE;
}
//
// @cmember Verify the attribute of the property
//
BOOL TCICMDPRPT_SetProperties::VerifyProperty
(ULONG cPrpt, //@[in] The index to g_rgDBProperties array
BOOL fIReadData, //@[in] IReadData
ULONG cImpPrpt, //@[in] The count of implied properties
ULONG rgIDXPrpt[]) //@[in] The implied properties array
{
switch (GetPrptAttr(cPrpt))
{
case INTERFACE_MANDATORY:
return(VerifyInterfaceMandatory(cPrpt,fIReadData));
case INTERFACE_NOT_SUPPORTED:
return(VerifyNotSupported(cPrpt,INTERFACE_NOT_SUPPORTED));
case INTERFACE_SUPPORTED:
return(VerifyInterfaceSupported(cPrpt,fIReadData,cImpPrpt,rgIDXPrpt,TRUE));
case ROWSET_NOT_SUPPORTED:
return(VerifyNotSupported(cPrpt,ROWSET_NOT_SUPPORTED));
case ROWSET_NOT_SETTABLE:
return(VerifyRowsetNotSettable(cPrpt,fIReadData,cImpPrpt,rgIDXPrpt,TRUE));
case ROWSET_SETTABLE:
return(VerifyRowsetSettable(cPrpt,fIReadData,cImpPrpt,rgIDXPrpt,TRUE));
case PROPERTY_INVALID:
odtLog<<wszIndexNotValid;
default:
return FALSE;
}
}
//-------------------------------------------------------------------------------------
// @cmember: Verify the implied properties are supported after the rowset is open
//
BOOL TCICMDPRPT_SetProperties::VerifyImpliedProperties
(
ULONG cImpPrpt, //@[in]: The count of implied properties
ULONG rgIDXPrpt[] //@[in]: The array of index to the implied properties
)
{
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs;
ULONG cPrpt;
DBPROPSET *pDBPrpts=NULL;
ULONG cLoop;
const GUID *pGuidProperty;
IUnknown *pIUnknown;
BOOL fTest=FALSE;
for(cLoop=0;cLoop<cImpPrpt;cLoop++)
{
assert(rgIDXPrpt[cLoop]<=(ULONG)IDX_INTERFACE_END);
pPropertyIDSets.guidPropertySet=*(g_rgDBProperties[rgIDXPrpt[cLoop]].pGuidPropertySet);
pPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=g_rgDBProperties[rgIDXPrpt[cLoop]].dwPropertyID;
pPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
//Call GetProperties to verify the property is set
if(!CHECK(m_pIRowsetInfo->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),S_OK))
goto END;
if(!COMPARE(V_BOOL(&pDBPrpts->rgProperties->vValue), VARIANT_TRUE))
goto END;
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
//Call QueryInterface to verify that the property is set
if(rgIDXPrpt[cLoop]>=(ULONG)IDX_INTERFACE_START)
{
//Get the guid for the interface
pGuidProperty=GetGuidPointer(cPrpt);
//If the property is an interface property call
//QueryInterface to verify that the property is set.
if(!CHECK(m_pIRowsetInfo->QueryInterface(*pGuidProperty,
(LPVOID *)&pIUnknown),S_OK))
goto END;
fTest=TRUE;
SAFE_RELEASE(pIUnknown);
}
}
//Mark that success
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest && (cLoop==cImpPrpt))
return TRUE;
else
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ACTIVESESSIONS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_1()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ACTIVESESSIONS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ASYNCTXNABORT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_2()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ASYNCTXNABORT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ASYNCTXNCOMMIT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_3()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ASYNCTXNCOMMIT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_BYREFACCESSORS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_4()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_BYREFACCESSORS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CATALOGLOCATION
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_5()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CATALOGLOCATION,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CATALOGTERM
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_6()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CATALOGTERM,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CATALOGUSAGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_7()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CATALOGUSAGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COLUMNDEFINITION
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_8()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COLUMNDEFINITION,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CONCATNULLBEHAVIOR
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_9()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CONCATNULLBEHAVIOR,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_DATASOURCENAME
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_10()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_DATASOURCENAME,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_DATASOURCEREADONLY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_11()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_DATASOURCEREADONLY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_DBMSNAME
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_12()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_DBMSNAME,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_DBMSVER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_13()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_DBMSVER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_DSOTHREADMODEL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_14()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_DSOTHREADMODEL,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_GROUPBY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_15()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_GROUPBY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_HETEROGENEOUSTABLES
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_16()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_HETEROGENEOUSTABLES,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_IDENTIFIERCASE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_17()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IDENTIFIERCASE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXINDEXSIZE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_18()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXINDEXSIZE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXOPENCHAPTERS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_19()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXOPENCHAPTERS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXORSINFILTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_20()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXORSINFILTER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXROWSIZE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_21()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXROWSIZE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXROWSIZEINCLUDESBLOB
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_22()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXROWSIZEINCLUDESBLOB,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXSORTCOLUMNS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_23()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXSORTCOLUMNS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXTABLESINSELECT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_24()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXTABLESINSELECT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MULTIPLEPARAMSETS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_25()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MULTIPLEPARAMSETS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MULTIPLERESULTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_26()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MULTIPLERESULTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MULTIPLESTORAGEOBJECTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_27()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (!VerifyProperty(IDX_MULTIPLESTORAGEOBJECTS,FALSE,0,NULL))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MULTITABLEUPDATE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_28()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MULTITABLEUPDATE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NULLCOLLATION
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_29()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NULLCOLLATION,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_OLEOBJECTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_30()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OLEOBJECTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ORDERBYCOLUMNSINSELECT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_31()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ORDERBYCOLUMNSINSELECT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_OUTPUTPARAMETERAVAILABILITY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_32()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OUTPUTPARAMETERAVAILABILITY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_PERSISTENTIDTYPE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_33()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_PERSISTENTIDTYPE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_PREPAREABORTBEHAVIOR
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_34()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_PREPAREABORTBEHAVIOR,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_PREPARECOMMITBEHAVIOR
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_35()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_PREPARECOMMITBEHAVIOR,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_PROCEDURETERM
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_36()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_PROCEDURETERM,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_PROVIDERNAME
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_37()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_PROVIDERFILENAME,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_PROVIDEROLEDBVER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_38()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_PROVIDEROLEDBVER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_PROVIDERVER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_39()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_PROVIDERVER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_QUOTEDIDENTIFIERCASE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_40()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_QUOTEDIDENTIFIERCASE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ROWSETCONVERSIONSONCOMMAND
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_41()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ROWSETCONVERSIONSONCOMMAND,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SCHEMATERM
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_42()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_SCHEMATERM,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SCHEMAUSAGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_43()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_SCHEMAUSAGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SORTONINDEX
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_44()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_SORTONINDEX,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SQLSUPPORT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_45()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_SQLSUPPORT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_STRUCTUREDSTORAGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_46()
{
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_STRUCTUREDSTORAGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SUBQUERIES
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_47()
{
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_SUBQUERIES,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SUPPORTEDTXNDDL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_48()
{
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_SUPPORTEDTXNDDL,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SUPPORTEDTXNISOLEVELS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_49()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_SUPPORTEDTXNISOLEVELS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SUPPORTEDTXNISORETAIN
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_50()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_SUPPORTEDTXNISORETAIN,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_TABLETERM
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_51()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_TABLETERM,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_USERNAME
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_52()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_USERNAME,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CURRENTCATALOG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_53()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CURRENTCATALOG,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_AUTH_CACHE_AUTHINFO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_54()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_AUTH_CACHE_AUTHINFO,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_AUTH_ENCRYPT_PASSWORD
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_55()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_AUTH_ENCRYPT_PASSWORD,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_AUTH_INTEGRATED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_56()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_AUTH_INTEGRATED,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_AUTH_MASK_PASSWORD
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_57()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_AUTH_MASK_PASSWORD,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_AUTH_PASSWORD
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_58()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_AUTH_PASSWORD,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_AUTH_PERSIST_ENCRYPTED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_59()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_AUTH_PERSIST_ENCRYPTED,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_60()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_AUTH_USERID
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_61()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_AUTH_USERID,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(62)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_ASYNCH
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_62()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_ASYNCH,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(63)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_DATASOURCE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_63()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_DATASOURCE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(64)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_HWND
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_64()
{
//For this property, request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_HWND,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(65)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_IMPERSONATION_LEVEL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_65()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_IMPERSONATION_LEVEL,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(66)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_LCID
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_66()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_LCID,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(67)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_LOCATION
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_67()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_LOCATION,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(68)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_MODE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_68()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_MODE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(69)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_PROMPT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_69()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_PROMPT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(70)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_PROTECTION_LEVEL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_70()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_PROTECTION_LEVEL,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(71)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_PROVIDERSTRING
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_71()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_PROVIDERSTRING,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(72)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INIT_TIMEOUT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_72()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INIT_TIMEOUT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(73)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COL_AUTOINCREMENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_73()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COL_AUTOINCREMENT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(74)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COL_DEFAULT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_74()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COL_DEFAULT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(75)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COL_DESCRIPTION
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_75()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COL_DESCRIPTION,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(76)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COL_FIXEDLENGTH
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_76()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COL_FIXEDLENGTH,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(77)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COL_NULLABLE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_77()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COL_NULLABLE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(78)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COL_PRIMARYKEY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_78()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COL_PRIMARYKEY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(79)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COL_UNIQUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_79()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COL_UNIQUE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(80)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_AUTOUPDATE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_80()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_AUTOUPDATE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(81)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_CLUSTERED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_81()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_CLUSTERED,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(82)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_FILLFACTOR
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_82()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_FILLFACTOR,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(83)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_INITIALSIZE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_83()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_INITIALSIZE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(84)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_NULLCOLLATION
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_84()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_NULLCOLLATION,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(85)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_NULLS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_85()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_NULLS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(86)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_PRIMARYKEY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_86()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_PRIMARYKEY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(87)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_SORTBOOKMARKS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_87()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_SORTBOOKMARKS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(88)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_TEMPINDEX
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_88()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_TEMPINDEX,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(89)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_TYPE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_89()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_TYPE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(90)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_INDEX_UNIQUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_90()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_INDEX_UNIQUE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(91)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SESS_AUTOCOMMITISOLEVELS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_91()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_SESS_AUTOCOMMITISOLEVELS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(92)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_TBL_TEMPTABLE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_92()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_TBL_TEMPTABLE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(93)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ABORTPRESERVE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_93()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ABORTPRESERVE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(94)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_APPENDONLY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_94()
{
// DBPROP_APPENDONLY set to VARIANT_TRUE implies:
// DBPROP_IRowsetChange is VARIANT_TRUE
// DBPROP_OWNINSERT is VARIANT_TRUE
ULONG rgImpPrpt[2]={IDX_IROWSETCHANGE,IDX_OWNINSERT};
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_APPENDONLY,FALSE,2,rgImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(95)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_BLOCKINGSTORAGEOBJECTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_95()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_BLOCKINGSTORAGEOBJECTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(96)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_BOOKMARKS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_96()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_BOOKMARKS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(97)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_BOOKMARKSKIPPED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_97()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_BOOKMARKSKIPPED,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(98)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_BOOKMARKTYPE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_98()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_BOOKMARKTYPE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(99)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CACHEDEFERRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_99()
{
//Setting the value of the DBPROP_CACHEDEFERRED property to VARIANT_TRUE
//implicitly sets the value of DBPROP_DEFERRED property to VARIANT_TRUE.
ULONG uImpPrpt=IDX_DEFERRED;
//For this property, do not request IReadData on the rowset
if (VerifyProperty(IDX_CACHEDEFERRED,FALSE,1,&uImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(100)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CANFETCHBACKWARDS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_100()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CANFETCHBACKWARDS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(101)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CANHOLDROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_101()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CANHOLDROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(102)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CANSCROLLBACKWARDS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_102()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CANSCROLLBACKWARDS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(103)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_CHANGEINSERTEDROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_103()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CHANGEINSERTEDROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(104)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COLUMNRESTRICT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_104()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COLUMNRESTRICT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(105)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COMMANDTIMEOUT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_105()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COMMANDTIMEOUT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(106)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_COMMITPRESERVE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_106()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COMMITPRESERVE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(107)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_DEFERRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_107()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if(!VerifyProperty(IDX_DEFERRED,FALSE,0,NULL))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(108)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_DELAYSTORAGEOBJECTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_108()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_DELAYSTORAGEOBJECTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(109)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_FILTERCOMPAREOPS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_109()
{
//This property can be VARIANT_TRUE only if DBPROP_OWNINSERT is VARIANT_TRUE.
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_FILTERCOMPAREOPS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(110)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_FINDCOMPAREOPS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_110()
{
//This property can be VARIANT_TRUE only if DBPROP_OWNINSERT is VARIANT_TRUE.
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_FINDCOMPAREOPS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(111)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_IMMOBILEROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_111()
{
//This property can be VARIANT_TRUE only if DBPROP_OWNINSERT is VARIANT_TRUE.
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IMMOBILEROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(112)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_LITERALBOOKMARKS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_112()
{
//DBPROP_LITERALBOOKMARKS implies DBPROP_BOOKMARKS.
ULONG uImpPrpt=IDX_BOOKMARKS;
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_LITERALBOOKMARKS,FALSE,1,&uImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(113)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_LITERALIDENTITY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_113()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_LITERALIDENTITY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(114)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXOPENROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_114()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXOPENROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(115)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXPENDINGROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_115()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXPENDINGROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(116)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAXROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_116()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(117)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MAYWRITECOLUMN
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_117()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (!VerifyProperty(IDX_MAYWRITECOLUMN,FALSE,0,NULL))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(118)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_MEMORYUSAGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_118()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MEMORYUSAGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(119)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFICATIONPHASES
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_119()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFICATIONPHASES,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(120)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYCOLUMNSET
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_120()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYCOLUMNSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(121)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWDELETE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_121()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWDELETE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(122)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWFIRSTCHANGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_122()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWFIRSTCHANGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(123)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWINSERT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_123()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWINSERT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(124)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWRESYNCH
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_124()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWRESYNCH,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(125)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWSETRELEASE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_125()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWSETRELEASE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(126)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_126()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWSETFETCHPOSITIONCHANGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(127)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWUNDOCHANGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_127()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWUNDOCHANGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(128)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWUNDODELETE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_128()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWUNDODELETE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(129)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWUNDOINSERT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_129()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWUNDOINSERT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(130)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_NOTIFYROWUPDATE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_130()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWUPDATE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(131)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ORDEREDBOOKMARKS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_131()
{
//DBPROP_ORDEREDBOOKMARKS implys DBPROP_BOOKMARKS.
ULONG uImpPrpt=IDX_BOOKMARKS;
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_ORDEREDBOOKMARKS,FALSE,1,&uImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(132)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_OTHERINSERT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_132()
{
ULONG rgImpPrpt[3]={IDX_OTHERUPDATEDELETE,IDX_OWNINSERT,IDX_OWNUPDATEDELETE};
//If running with provider Kagera
if (*g_pwszProviderName &&
!(wcscmp(g_pwszProviderName,L"Microsoft OLE DB Provider for ODBC Drivers")))
{
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_OTHERINSERT,FALSE,3,rgImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
else
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OTHERINSERT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
}
// }}
// {{ TCW_VAR_PROTOTYPE(133)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_OTHERUPDATEDELETE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_133()
{
ULONG rgImpPrpt[1]={IDX_OWNUPDATEDELETE};
//If running with provider Kagera
if (*g_pwszProviderName &&
!(wcscmp(g_pwszProviderName,L"Microsoft OLE DB Provider for ODBC Drivers")))
{
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_OTHERUPDATEDELETE,FALSE,1,rgImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
else
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OTHERUPDATEDELETE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
}
// }}
// {{ TCW_VAR_PROTOTYPE(134)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_OWNINSERT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_134()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OWNINSERT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(135)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_OWNUPDATEDELETE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_135()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OWNUPDATEDELETE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(136)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_QUICKRESTART
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_136()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_QUICKRESTART,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(137)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_REENTRANTEVENTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_137()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_REENTRANTEVENTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(138)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_REMOVEDELETED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_138()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_REMOVEDELETED,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(139)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_REPORTMULTIPLECHANGES
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_139()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_REPORTMULTIPLECHANGES,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(140)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_RETURNPENDINGINSERTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_140()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_RETURNPENDINGINSERTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(141)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ROWRESTRICT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_141()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ROWRESTRICT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(142)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ROWSET_ASYNCH
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_142()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ROWSET_ASYNCH,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(143)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_ROWTHREADMODEL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_143()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ROWTHREADMODEL,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(144)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_SERVERCURSOR
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_144()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_SERVERCURSOR,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(145)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_TRANSACTEDOBJECT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_145()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_TRANSACTEDOBJECT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(146)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_UPDATABILITY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_146()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_UPDATABILITY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(147)
//*-----------------------------------------------------------------------
// @mfunc set DBPROP_STRONGIDENTITY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_147()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_STRONGIDENTITY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(148)
//*-----------------------------------------------------------------------
// @mfunc set IID_IAccessor
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_148()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IACCESSOR,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(149)
//*-----------------------------------------------------------------------
// @mfunc set IID_IChapteredRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_149()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICHAPTEREDROWSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(150)
//*-----------------------------------------------------------------------
// @mfunc set IID_IColumnsInfo
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_150()
{
//For this property, request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICOLUMNSINFO,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(151)
//*-----------------------------------------------------------------------
// @mfunc set IID_IColumnsRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_151()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICOLUMNSROWSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(152)
//*-----------------------------------------------------------------------
// @mfunc set IID_IConnectionPointContainer
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_152()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICONNECTIONPOINTCONTAINER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(153)
//*-----------------------------------------------------------------------
// @mfunc set IID_IConvertType
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_153()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICONVERTTYPE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(154)
//*-----------------------------------------------------------------------
// @mfunc set IID_IDBAsynchStatus
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_154()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IDBASYNCHSTATUS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(155)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_155()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(156)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetChange
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_156()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETCHANGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(157)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetFind
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_157()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETFIND,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(158)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetIdentity
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_158()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETIDENTITY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(159)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetIndex
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_159()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETINDEX,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(160)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetInfo
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_160()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETINFO,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(161)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetLocate
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_161()
{
//If a rowset supports IRowsetLocate then the value of the DBPROP_BOOKMARKS
//and DBPROP_CANSCROLLBACKWARDS property is VARIANT_TRUE.
ULONG rgImpPrpt[2]={IDX_BOOKMARKS,IDX_CANSCROLLBACKWARDS};
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_IROWSETLOCATE,FALSE,2,rgImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(162)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetResynch
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_162()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETRESYNCH,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(163)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetScroll
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_163()
{
//IRowsetScroll implies IRowsetLocate
ULONG uImpPrpt=IDX_IROWSETLOCATE;
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_IROWSETSCROLL,FALSE,1,&uImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(164)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetUpdate
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_164()
{
//If DBPROP_IROWSETUPDATE is VARIANT_TRUE, then DBPROP_IROWSETCHANGE is
//also set to VARIANT_TRUE.
ULONG rgImpPrpt[1]={IDX_IROWSETCHANGE};
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_IROWSETUPDATE,FALSE,1,rgImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(165)
//*-----------------------------------------------------------------------
// @mfunc set IID_IRowsetView
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_165()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETVIEW,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(166)
//*-----------------------------------------------------------------------
// @mfunc set IID_IViewChapter
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_166()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IVIEWCHAPTER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(167)
//*-----------------------------------------------------------------------
// @mfunc set IID_IViewFilter
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_167()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IVIEWFILTER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(168)
//*-----------------------------------------------------------------------
// @mfunc set IID_IViewRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_168()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IVIEWROWSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(169)
//*-----------------------------------------------------------------------
// @mfunc set IID_IViewSort
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_169()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IVIEWSORT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(170)
//*-----------------------------------------------------------------------
// @mfunc set IID_ILockBytes
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_170()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ILOCKBYTES,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(171)
//*-----------------------------------------------------------------------
// @mfunc set IID_ISequentialStream
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_171()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ISEQUENTIALSTREAM,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(172)
//*-----------------------------------------------------------------------
// @mfunc set IID_IStorage
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_172()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ISTORAGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(173)
//*-----------------------------------------------------------------------
// @mfunc set IID_IStream
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_173()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ISTREAM,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(174)
//*-----------------------------------------------------------------------
// @mfunc set IID_ISupportErrorInfo
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SetProperties::Variation_174()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ISUPPORTERRORINFO,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_SetProperties::Terminate()
{
return (TCICMDPRPT_ChangeProperties::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_UnsetProperties)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_UnsetProperties - Unset all interface and rowset properties
//| Created: 09/21/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_UnsetProperties::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(TCICMDPRPT_ChangeProperties::Init())
// }}
{
return TRUE;
}
return FALSE;
}
//-------------------------------------------------------------------------------------
// @cmember Verify the attribute of the property
//
BOOL TCICMDPRPT_UnsetProperties::VerifyProperty
(ULONG cPrpt, //@[in] The index to g_DBProperties array
BOOL fIReadData, //@[in] Whether IReadData is requested
ULONG cImpPrpt, //@[in] The count of implied properties
ULONG rgIDXPrpt[]) //@[in] The implied properties array
{
switch (GetPrptAttr(cPrpt))
{
//No need to verify mandatory interface as it is verified in SetProperties
case INTERFACE_MANDATORY:
return TRUE;
case INTERFACE_NOT_SUPPORTED:
return(VerifyNotSupported(cPrpt,INTERFACE_NOT_SUPPORTED));
case INTERFACE_SUPPORTED:
return(VerifyInterfaceSupported(cPrpt,fIReadData,cImpPrpt,rgIDXPrpt,FALSE));
case ROWSET_NOT_SUPPORTED:
return(VerifyNotSupported(cPrpt,ROWSET_NOT_SUPPORTED));
case ROWSET_NOT_SETTABLE:
return(VerifyRowsetNotSettable(cPrpt,fIReadData,cImpPrpt,rgIDXPrpt,FALSE));
case ROWSET_SETTABLE:
return(VerifyRowsetSettable(cPrpt,fIReadData,cImpPrpt,rgIDXPrpt,FALSE));
case PROPERTY_INVALID:
odtLog<<wszIndexNotValid;
default:
return FALSE;
}
}
//-------------------------------------------------------------------------------------
// @cmember: Verify the properties are not set
//
BOOL TCICMDPRPT_UnsetProperties::VerifyImpliedProperties
(
ULONG cImpPrpt, //@[in]: The count of implied properties
ULONG rgIDXPrpt[] //@[in]: The array of index to the implied properties
)
{
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs;
ULONG cPrpt = 0;
DBPROPSET *pDBPrpts=NULL;
ULONG cLoop;
BOOL fTest=FALSE;
for(cLoop=0;cLoop<cImpPrpt;cLoop++)
{
assert(rgIDXPrpt[cLoop]<=(ULONG)IDX_INTERFACE_END);
//No need to check interface properties
if(rgIDXPrpt[cLoop]>=(ULONG)IDX_INTERFACE_START)
continue;
pPropertyIDSets.guidPropertySet=*(g_rgDBProperties[rgIDXPrpt[cLoop]].pGuidPropertySet);
pPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=g_rgDBProperties[rgIDXPrpt[cLoop]].dwPropertyID;
pPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
//Call GetProperties to verify the property is set
if(!CHECK(m_pIRowsetInfo->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),S_OK))
goto END;
if(!COMPARE(V_BOOL(&pDBPrpts->rgProperties->vValue), VARIANT_FALSE))
goto END;
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
//Call GetProperties to verify the implied property is not visible
if(!CHECK(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),S_OK))
goto END;
if(!COMPARE(V_BOOL(&pDBPrpts->rgProperties->vValue), VARIANT_FALSE))
goto END;
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
}
//Mark that success
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest && (cLoop==cImpPrpt))
return TRUE;
else
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_ABORTPRESERVE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_1()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ABORTPRESERVE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_APPENDONLY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_2()
{
//For this property, do not request IReadData on the rowset
if (VerifyProperty(IDX_APPENDONLY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_BLOCKINGSTORAGEOBJECTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_3()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_BLOCKINGSTORAGEOBJECTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_BOOKMARKS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_4()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_BOOKMARKS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_BOOKMARKSKIPPED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_5()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_BOOKMARKSKIPPED,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_BOOKMARKTYPE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_6()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_BOOKMARKTYPE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_CACHEDEFERRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_7()
{
//Setting the value of the DBPROP_CACHEDEFERRED property to VARIANT_TRUE
//implicitly sets the value of DBPROP_DEFERRED property to VARIANT_TRUE.
ULONG uImpPrpt=IDX_DEFERRED;
//For this property, do not request IReadData on the rowset
if (VerifyProperty(IDX_CACHEDEFERRED,FALSE,1,&uImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_CANFETCHBACKWARDS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_8()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CANFETCHBACKWARDS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_CANHOLDROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_9()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CANHOLDROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_CANSCROLLBACKWARDS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_10()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CANSCROLLBACKWARDS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_CHANGEINSERTEDROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_11()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_CHANGEINSERTEDROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_COLUMNRESTRICT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_12()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COLUMNRESTRICT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_COMMANDTIMEOUT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_13()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COMMANDTIMEOUT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_COMMITPRESERVE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_14()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_COMMITPRESERVE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_DEFERRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_15()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if(!VerifyProperty(IDX_DEFERRED,FALSE,0,NULL))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_DELAYSTORAGEOBJECTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_16()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_DELAYSTORAGEOBJECTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_IMMOBILEROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_17()
{
//This property can be VARIANT_TRUE only if DBPROP_OWNINSERT is VARIANT_TRUE.
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IMMOBILEROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_LITERALBOOKMARKS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_18()
{
//DBPROP_LITERALBOOKMARKS implies DBPROP_BOOKMARKS.
ULONG uImpPrpt=IDX_BOOKMARKS;
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_LITERALBOOKMARKS,FALSE,1,&uImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_LITERALIDENTITY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_19()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_LITERALIDENTITY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_FILTERCOMPAREOPS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_20()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_FILTERCOMPAREOPS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_FINDCOMPAREOPS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_21()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_FINDCOMPAREOPS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_MAXOPENROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_22()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXOPENROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_MAXPENDINGROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_23()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXPENDINGROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_MAXROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_24()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MAXROWS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_MAYWRITECOLUMN
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_25()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (!VerifyProperty(IDX_MAYWRITECOLUMN,FALSE,0,NULL))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_MEMORYUSAGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_26()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_MEMORYUSAGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFICATIONPHASES
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_27()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFICATIONPHASES,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYCOLUMNSET
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_28()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYCOLUMNSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWDELETE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_29()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWDELETE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWFIRSTCHANGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_30()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWFIRSTCHANGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWINSERT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_31()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWINSERT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWRESYNCH
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_32()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWRESYNCH,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWSETRELEASE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_33()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWSETRELEASE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_34()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWSETFETCHPOSITIONCHANGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWUNDOCHANGE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_35()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWUNDOCHANGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWUNDODELETE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_36()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWUNDODELETE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWUNDOINSERT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_37()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWUNDOINSERT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_NOTIFYROWUPDATE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_38()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_NOTIFYROWUPDATE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_ORDEREDBOOKMARKS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_39()
{
//DBPROP_ORDEREDBOOKMARKS implys DBPROP_BOOKMARKS.
ULONG uImpPrpt=IDX_BOOKMARKS;
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_ORDEREDBOOKMARKS,FALSE,1,&uImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_OTHERINSERT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_40()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OTHERINSERT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_OTHERUPDATEDELETE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_41()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OTHERUPDATEDELETE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_OWNINSERT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_42()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OWNINSERT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_OWNUPDATEDELETE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_43()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_OWNUPDATEDELETE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_QUICKRESTART
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_44()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_QUICKRESTART,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_REENTRANTEVENTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_45()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_REENTRANTEVENTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_REMOVEDELETED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_46()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_REMOVEDELETED,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_REPORTMULTIPLECHANGES
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_47()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_REPORTMULTIPLECHANGES,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_RETURNPENDINGINSERTS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_48()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_RETURNPENDINGINSERTS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_ROWRESTRICT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_49()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ROWRESTRICT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_ROWSET_ASYNCH
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_50()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ROWSET_ASYNCH,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_ROWTHREADMODEL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_51()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ROWTHREADMODEL,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_SERVERCURSOR
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_52()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_SERVERCURSOR,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_TRANSACTEDOBJECT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_53()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_TRANSACTEDOBJECT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_UPDATABILITY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_54()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_UPDATABILITY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc unset DBPROP_STRONGIDENTITY
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_55()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_STRONGIDENTITY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IAccessor
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_56()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IACCESSOR,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IChapteredRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_57()
{
//For this property, request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICHAPTEREDROWSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IColumnsInfo
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_58()
{
//For this property, request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICOLUMNSINFO,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IColumnsRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_59()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICOLUMNSROWSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IConnectionPointContainer
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_60()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICONNECTIONPOINTCONTAINER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc set IID_IConvertType
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_61()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ICONVERTTYPE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(62)
//*-----------------------------------------------------------------------
// @mfunc set IID_IDBAsynchStatus
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_62()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IDBASYNCHSTATUS,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(63)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_63()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(64)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowsetChange
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_64()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETCHANGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(65)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowsetIdentity
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_65()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETIDENTITY,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(66)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowsetIndex
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_66()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETINDEX,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(67)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowsetInfo
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_67()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETINFO,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(68)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowsetLocate
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_68()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETLOCATE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(69)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowsetResynch
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_69()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETRESYNCH,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(70)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowsetScroll
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_70()
{
//IRowsetScroll implies IRowsetLocate
ULONG uImpPrpt=IDX_IROWSETLOCATE;
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_IROWSETSCROLL,FALSE,1,&uImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(71)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowsetUpdate
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_71()
{
//If DBPROP_IROWSETUPDATE is VARIANT_TRUE, then DBPROP_IROWSETCHANGE is
//also set to VARIANT_TRUE.
ULONG rgImpPrpt[1]={IDX_IROWSETCHANGE};
//For this property, do not request IReadData on the rowset.
if (VerifyProperty(IDX_IROWSETUPDATE,FALSE,1,rgImpPrpt))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(72)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IRowsetView
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_72()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IROWSETVIEW,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(73)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IViewChapter
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_73()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IVIEWCHAPTER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(74)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IViewFilter
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_74()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IVIEWFILTER,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(75)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IViewRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_75()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IVIEWROWSET,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(76)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IViewSort
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_76()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_IVIEWSORT,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(77)
//*-----------------------------------------------------------------------
// @mfunc unset IID_ILockBytes
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_77()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ILOCKBYTES,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(78)
//*-----------------------------------------------------------------------
// @mfunc unset IID_ISequentialStream
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_78()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ISEQUENTIALSTREAM,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(79)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IStorage
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_79()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ISTORAGE,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(80)
//*-----------------------------------------------------------------------
// @mfunc unset IID_IStream
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_80()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ISTREAM,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(81)
//*-----------------------------------------------------------------------
// @mfunc unset IID_ISupportErrorInfo
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_UnsetProperties::Variation_81()
{
//For this property, do not request IReadData on the rowset, there is no
//implied properties after execution.
if (VerifyProperty(IDX_ISUPPORTERRORINFO,FALSE,0,NULL))
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_UnsetProperties::Terminate()
{
return (TCICMDPRPT_ChangeProperties::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_Boundary_Set)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_Boundary_Set - Boundary conditions for SetProperties
//| Created: 09/21/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Boundary_Set::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(TCICMDPRPT::Init())
// }}
{
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc cPropertySets=0, SetProperties does not do anything
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_1()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs;
ULONG cPrpt=0;
DBPROPSET *pDBPrpts=NULL;
BOOL fTest=FALSE;
//Verify the property is supported
if(!VerifySupported(IDX_MAXROWS) ||
!(g_rgDBProperties[IDX_MAXROWS].fSettable))
return TEST_SKIPPED;
//Set a rowset property DBPROP_MAXROWS
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_MAXROWS;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet.rgProperties=&DBPrpt;
//Set property value to 0
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
return TEST_FAIL;
//Set value=1
DBPrpt.vValue.lVal=1;
//Call SetProperties with cPropertySets=0, verify SetProperties does not
//do anything. Therefore, lVal should stay at 0.
if(!CHECK(m_pICommandProperties->SetProperties(0,&DBPrptSet),S_OK))
return TEST_FAIL;
pPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
pPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_MAXROWS;
pPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
//Call GetProperties to verify the property is set
if(!CHECK(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),S_OK))
goto END;
if(!COMPARE(pDBPrpts->rgProperties->vValue.lVal, 0))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc cPropertySets=0 and rgPropertySets=NULL, SetProperties does not do anything
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_2()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs;
ULONG cPrpt=0;
DBPROPSET *pDBPrpts=NULL;
BOOL fTest=FALSE;
//Verify the property is supported
if(!VerifySupported(IDX_MAXOPENROWS) ||
!(g_rgDBProperties[IDX_MAXOPENROWS].fSettable))
return TEST_SKIPPED;
//Set a rowset property DBPROP_MAXOPENROWS
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_MAXOPENROWS;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet.rgProperties=&DBPrpt;
//Set property value to 0
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
return TEST_FAIL;
//Call SetProperties with cPropertySets=0 and rgPropertySets=NULL, verify
//SetProperties does not do anything. Therefore, lVal should stay at 0.
if(!CHECK(m_pICommandProperties->SetProperties(0,NULL),S_OK))
return TEST_FAIL;
pPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
pPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_MAXOPENROWS;
pPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
//Call GetProperties to verify the property is set
if(!CHECK(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),S_OK))
goto END;
if(!COMPARE(pDBPrpts->rgProperties->vValue.lVal, 0))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc cPropertySets>0 and rgPropertySets=NULL, E_INVALIDARG returned
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_3()
{
if(!CHECK(m_pICommandProperties->SetProperties(1,NULL),E_INVALIDARG))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc cProperties=0, SetProperties does not do anything
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_4()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs;
ULONG cPrpt=0;
DBPROPSET *pDBPrpts=NULL;
BOOL fTest=FALSE;
//Verify the property is supported
if(!VerifySupported(IDX_MAXPENDINGROWS) ||
!(g_rgDBProperties[IDX_MAXPENDINGROWS].fSettable))
return TEST_SKIPPED;
//Set a rowset property DBPROP_MAXPENDINGROWS
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_MAXPENDINGROWS;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet.rgProperties=&DBPrpt;
//Set property value to 0
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
return TEST_FAIL;
//Set value=1 and cProperties=0
DBPrpt.vValue.lVal=1;
DBPrptSet.cProperties=0;
//Call SetProperties with cProperties=0, verify SetProperties does not
//do anything. Therefore, lVal should stay at 0.
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
return TEST_FAIL;
pPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
pPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_MAXPENDINGROWS;
pPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
//Call GetProperties to verify the property is set
if(!CHECK(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),S_OK))
goto END;
if(!COMPARE(pDBPrpts->rgProperties->vValue.lVal, 0))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc cProperties=0 and rgProperties=NULL, SetProperties does not do anything
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_5()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs;
ULONG cPrpt=0;
DBPROPSET *pDBPrpts=NULL;
BOOL fTest=FALSE;
//Verify the property is supported
if( !(g_rgDBProperties[IDX_MAXROWS].fSupported) ||
(!(g_rgDBProperties[IDX_MAXROWS].fSettable) &&
(V_I4(&g_rgDBProperties[IDX_MAXROWS].vDefault))) )
return TEST_SKIPPED;
//Set a rowset property DBPROP_MAXROWS
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_MAXROWS;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet.rgProperties=&DBPrpt;
//Set property value to 0
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
return TEST_FAIL;
//Set cProperties=0 and rgProperties=NULL
DBPrptSet.cProperties=0;
DBPrptSet.rgProperties=NULL;
//Call SetProperties with cProperties=0 and rgProperties=NULL, verify
//SetProperties does not do anything. Therefore, lVal should stay at 0.
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
return TEST_FAIL;
pPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
pPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_MAXROWS;
pPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
//Call GetProperties to verify the property is set
if(!CHECK(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),S_OK))
goto END;
if(!COMPARE(pDBPrpts->rgProperties->vValue.lVal, 0))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc cProperties>0 and rgProperties=NULL, E_INVALIDARG returned
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_6()
{
DBPROPSET DBPrptSet;
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrptSet.rgProperties=NULL;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),E_INVALIDARG))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc cPropertySets=0 and rgPropertySets is invalid, return S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_7()
{
if(CHECK(m_pICommandProperties->SetProperties(0,(DBPROPSET *)1), S_OK))
return TEST_PASS;
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc cProperties=0 and guidPropertySet=invalid GUID, SetProperties does not do anything
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_8()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs;
ULONG cPrpt=0;
DBPROPSET *pDBPrpts=NULL;
BOOL fTest=FALSE;
//Verify the property is supported
if(!VerifySupported(IDX_MAXROWS) ||
!(g_rgDBProperties[IDX_MAXROWS].fSettable))
return TEST_SKIPPED;
//Set a rowset property DBPROP_MAXROWS
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_MAXROWS;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet.rgProperties=&DBPrpt;
//Set property value to 0
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
return TEST_FAIL;
//Set cProperties=0 and guidPropertySet=DBPROPSET_DATASOURCEINFO
DBPrptSet.guidPropertySet=DBPROPSET_DATASOURCEINFO;
DBPrptSet.cProperties=0;
//Call SetProperties with cProperties=0 and guidPropertySet=
//DBPROPSET_DATASOURCEINFO, verify SetProperties does not do anything.
//Therefore, lVal should stay at 0.
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
return TEST_FAIL;
pPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
pPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_MAXROWS;
pPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
//Call GetProperties to verify the property is set
if(!CHECK(m_pICommandProperties->GetProperties(1,&pPropertyIDSets,
&cPrpt,&pDBPrpts),S_OK))
goto END;
if(!COMPARE(pDBPrpts->rgProperties->vValue.lVal, 0))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc guidPropertySet=invalid GUID, DB_E_ERRORSOCCURRED returned
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_9()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_DATASOURCE;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_COMMANDTIMEOUT;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet.rgProperties=&DBPrpt;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),DB_E_ERRORSOCCURRED))
return TEST_FAIL;
//Property is not supported
if(!COMPARE(DBPrptSet.rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc guidPropertySet=invalid GUID and rgProperties=NULL, E_INVALIDARG returned
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_10()
{
DBPROPSET DBPrptSet;
DBPrptSet.guidPropertySet=DBPROPSET_DATASOURCE;
DBPrptSet.cProperties=1;
DBPrptSet.rgProperties=NULL;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),E_INVALIDARG))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc Open a rowset and try to set a property, DB_E_OBJECTOPEN returned
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_11()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
BOOL fTest=FALSE;
//Open a rowset
if(!OpenRowset())
goto END;
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_COMMANDTIMEOUT;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet.rgProperties=&DBPrpt;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),DB_E_OBJECTOPEN))
goto END;
fTest=TRUE;
END:
ReleaseRowset();
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc Set a good Propset and 0, NULL Propsets
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_12()
{
DBPROPSET DBPrptSet[3];
DBPROP DBPrpt;
BOOL fTest=FALSE;
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrpt.dwPropertyID=DBPROP_IRowsetResynch;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet[0].guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet[0].cProperties=1;
DBPrptSet[0].rgProperties=&DBPrpt;
DBPrptSet[1].guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet[1].cProperties=0;
DBPrptSet[1].rgProperties=NULL;
DBPrptSet[2].guidPropertySet=DBPROPSET_DBINIT;
DBPrptSet[2].cProperties=0;
DBPrptSet[2].rgProperties=NULL;
if(!CHECK(m_pICommandProperties->SetProperties(2,DBPrptSet),DB_E_ERRORSOCCURRED))
goto END;
if(!CHECK(m_pICommandProperties->SetProperties(2,DBPrptSet),DB_E_ERRORSOCCURRED))
goto END;
fTest=TRUE;
END:
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Set a 0, NULL Propsets with a DBINIT Propset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Set::Variation_13()
{
DBPROPSET DBPrptSet[3];
DBPROP DBPrpt;
BOOL fTest=FALSE;
memset(&DBPrpt ,0,sizeof(DBPROP));
DBPrpt.dwPropertyID=DBPROP_IRowsetResynch;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet[0].guidPropertySet=DBPROPSET_SESSION;
DBPrptSet[0].cProperties=0;
DBPrptSet[0].rgProperties=NULL;
DBPrptSet[1].guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet[1].cProperties=0;
DBPrptSet[1].rgProperties=NULL;
DBPrptSet[2].guidPropertySet=DBPROPSET_DBINIT;
DBPrptSet[0].cProperties=1;
DBPrptSet[0].rgProperties=&DBPrpt;
if(!CHECK(m_pICommandProperties->SetProperties(2,DBPrptSet),DB_E_ERRORSOCCURRED))
goto END;
if(!CHECK(m_pICommandProperties->SetProperties(2,DBPrptSet),DB_E_ERRORSOCCURRED))
goto END;
fTest=TRUE;
END:
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Boundary_Set::Terminate()
{
return (TCICMDPRPT::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_Boundary_Get)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_Boundary_Get - Boundary conditions for GetProperties
//| Created: 09/21/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Boundary_Get::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(TCICMDPRPT::Init())
// }}
{
// TO DO: Add your own code here
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc cPropertyIDSets>0, rgPropertyIDSets=NULL, return E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_1()
{
ULONG cPropertySets = 0;
DBPROPSET *pPropertySets = NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,NULL,
&cPropertySets,&pPropertySets), E_INVALIDARG))
return TEST_FAIL;
//When an error occurs *pcPropertySets is set to 0
if(!COMPARE(cPropertySets, 0))
return TEST_FAIL;
//When an error occurs *prgPropertySets is a null pointer
if(!COMPARE(pPropertySets, NULL))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc cPropertyIDs>0, rgPropertyIDs=NULL, return E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_2()
{
DBPROPIDSET rgPropertyIDSets;
ULONG cPropertySets=0;
DBPROPSET *prgPropertySets=NULL;
rgPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets.cPropertyIDs=1;
rgPropertyIDSets.rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), E_INVALIDARG))
return TEST_FAIL;
//When an error occurs *pcPropertySets is set to 0
if(!COMPARE(cPropertySets, 0))
return TEST_FAIL;
//When an error occurs *prgPropertySets is a null pointer
if(!COMPARE(prgPropertySets, NULL))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc pcPropertySets=NULL, return E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_3()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPID rgPropertyIDs;
DBPROPSET *prgPropertySets=NULL;
rgPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_IRowset;
rgPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
NULL,&prgPropertySets), E_INVALIDARG))
return TEST_FAIL;
//When an error occurs *prgPropertySets is a null pointer
if(!COMPARE(prgPropertySets, NULL))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc prgPropertySets=NULL, return E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_4()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPID rgPropertyIDs;
ULONG cPropertySets=0;
rgPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_IRowset;
rgPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,NULL), E_INVALIDARG))
return TEST_FAIL;
//When an error occurs *pcPropertySets is set to 0
if(!COMPARE(cPropertySets, 0))
return TEST_FAIL;
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc cPropertyIDSets>0, rgPropertyIDSets=NULL, pcPropertySets=NULL, prgPropertySets=NULL, E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_5()
{
if(CHECK(m_pICommandProperties->GetProperties(1,NULL,
NULL,NULL), E_INVALIDARG) )
return TEST_PASS;
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc guidPropertySet=invalid GUID, DB_E_ERRORSOCCURRED returned
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_6()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPID rgPropertyIDs;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
rgPropertyIDSets.guidPropertySet=DBPROPSET_COLUMN;
rgPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_ABORTPRESERVE;
rgPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), DB_E_ERRORSOCCURRED))
return TEST_FAIL;
//Property is not supported
if(!COMPARE(prgPropertySets->rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc rgPropertyIDs=invalid DBPROPID, DB_E_ERRORSOCCURRED returned
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_7()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPID rgPropertyIDs;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
rgPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_AUTH_USERID;
rgPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), DB_E_ERRORSOCCURRED))
return TEST_FAIL;
//Property is not supported
if(!COMPARE(prgPropertySets->rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc DBPROPSET_ROWSET with 0, NULL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_8()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
rgPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets.cPropertyIDs=0;
rgPropertyIDSets.rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), S_OK))
return TEST_FAIL;
//Count should be 1
if(!COMPARE(cPropertySets,1))
goto END;
//Compare the property count
if(!COMPARE(g_ulPropertyCount,prgPropertySets[0].cProperties))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc DBPROPSET_ROWSET with 0, NULL twice
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_9()
{
DBPROPIDSET rgPropertyIDSets[2];
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
rgPropertyIDSets[0].guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets[0].cPropertyIDs=0;
rgPropertyIDSets[0].rgPropertyIDs=NULL;
rgPropertyIDSets[1].guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets[1].cPropertyIDs=0;
rgPropertyIDSets[1].rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(2,rgPropertyIDSets,
&cPropertySets,&prgPropertySets), S_OK))
return TEST_FAIL;
//Count should be 2
if(!COMPARE(cPropertySets,2))
goto END;
//Compare the property count
if(!COMPARE(g_ulPropertyCount,prgPropertySets[0].cProperties))
goto END;
//Compare the property count
if(!COMPARE(g_ulPropertyCount,prgPropertySets[1].cProperties))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc DBPROPSET_ROWSET with 0, NULL and a single property
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Boundary_Get::Variation_10()
{
DBPROPIDSET rgPropertyIDSets[2];
DBPROPID rgPropertyIDs;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
DBPROPSTATUS dbPropStatus = DBPROPSTATUS_OK;
m_hr = S_OK;
rgPropertyIDs=DBPROP_LITERALIDENTITY;
rgPropertyIDSets[0].guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets[0].cPropertyIDs=0;
rgPropertyIDSets[0].rgPropertyIDs=NULL;
rgPropertyIDSets[1].guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets[1].cPropertyIDs=1;
rgPropertyIDSets[1].rgPropertyIDs=&rgPropertyIDs;
// Figure out RETURNCODE
if(!g_rgDBProperties[IDX_LITERALIDENTITY].fSupported)
{
m_hr = DB_S_ERRORSOCCURRED;
dbPropStatus = DBPROPSTATUS_NOTSUPPORTED;
}
if(!CHECK(m_pICommandProperties->GetProperties(2,rgPropertyIDSets,
&cPropertySets,&prgPropertySets), m_hr))
return TEST_FAIL;
//Count should be 2
if(!COMPARE(cPropertySets, 2))
goto END;
//Compare the property count
if(!COMPARE(g_ulPropertyCount, prgPropertySets[0].cProperties))
goto END;
//Compare the property count
if(!COMPARE(1, prgPropertySets[1].cProperties))
goto END;
//Compare the property count
if(!COMPARE(dbPropStatus, prgPropertySets[1].rgProperties->dwStatus))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Boundary_Get::Terminate()
{
return (TCICMDPRPT::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_Parameters)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_Parameters - test parameters
//| Created: 09/21/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Parameters::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(TCICMDPRPT::Init())
// }}
{
m_DBPrpt.rgProperties=&m_DBProp;
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc Set MAXROWS to 0
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_1()
{
//Verify the property is supported
if(!VerifySupported(IDX_MAXROWS) ||
!(g_rgDBProperties[IDX_MAXROWS].fSettable))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwPropertyID=DBPROP_MAXROWS;
m_DBProp.vValue.vt=VT_I4;
m_DBProp.vValue.lVal=0;
m_DBProp.dwOptions=DBPROPOPTIONS_REQUIRED;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),S_OK))
return TEST_FAIL;
return(COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_OK));
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Set MAXROWS to -1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_2()
{
//Verify the property is supported
if(!VerifySupported(IDX_MAXROWS) ||
!(g_rgDBProperties[IDX_MAXROWS].fSettable))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwPropertyID=DBPROP_MAXROWS;
m_DBProp.vValue.vt=VT_I4;
m_DBProp.vValue.lVal=-1;
m_DBProp.dwOptions=DBPROPOPTIONS_REQUIRED;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),DB_E_ERRORSOCCURRED))
return TEST_FAIL;
if(!COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_BADVALUE))
return TEST_FAIL;
m_DBProp.vValue.vt=VT_I8;
m_DBProp.vValue.lVal=0;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),DB_E_ERRORSOCCURRED))
return TEST_FAIL;
if(!COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_BADVALUE))
return TEST_FAIL;
else
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Set MaxOpenRows to 0
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_3()
{
//Verify the property is supported
if(!VerifySupported(IDX_MAXOPENROWS) ||
!(g_rgDBProperties[IDX_MAXOPENROWS].fSettable))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwPropertyID=DBPROP_MAXOPENROWS;
m_DBProp.vValue.vt=VT_I4;
m_DBProp.vValue.lVal=0;
m_DBProp.dwOptions=DBPROPOPTIONS_REQUIRED;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),S_OK))
return TEST_FAIL;
return(COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_OK));
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Set MaxOpenRows to -1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_4()
{
//Verify the property is supported
if(!VerifySupported(IDX_MAXOPENROWS) ||
!(g_rgDBProperties[IDX_MAXOPENROWS].fSettable))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwPropertyID=DBPROP_MAXOPENROWS;
m_DBProp.vValue.vt=VT_I4;
m_DBProp.vValue.lVal=-1;
m_DBProp.dwOptions=DBPROPOPTIONS_REQUIRED;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),DB_E_ERRORSOCCURRED))
return TEST_FAIL;
if(!COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_BADVALUE))
return TEST_FAIL;
m_DBProp.vValue.vt=VT_BOOL;
m_DBProp.vValue.lVal=0;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),DB_E_ERRORSOCCURRED))
return TEST_FAIL;
if(!COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_BADVALUE))
return TEST_FAIL;
else
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc Set MAXROWS to 55
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_5()
{
//Verify the property is supported
if(!VerifySupported(IDX_MAXROWS) ||
!(g_rgDBProperties[IDX_MAXROWS].fSettable))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwPropertyID=DBPROP_MAXROWS;
m_DBProp.vValue.vt=VT_I4;
m_DBProp.vValue.lVal=55;
m_DBProp.dwOptions=DBPROPOPTIONS_REQUIRED;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),S_OK))
return TEST_FAIL;
return(COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_OK));
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Set MAXROWS to 99999999
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_6()
{
ULONG cRowsets=0;
IUnknown *pIUnknown=NULL;
BOOL fTest=FALSE;
//Verify the property is supported
if(!VerifySupported(IDX_MAXROWS) ||
!(g_rgDBProperties[IDX_MAXROWS].fSettable))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwPropertyID=DBPROP_MAXROWS;
m_DBProp.vValue.vt=VT_I4;
m_DBProp.vValue.lVal=99999999;
m_DBProp.dwOptions=DBPROPOPTIONS_REQUIRED;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),S_OK))
return TEST_FAIL;
if(!COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_OK))
return TEST_FAIL;
if(!ReadyToExecute())
return TEST_FAIL;
if(CHECK(m_hr=m_pICommand->Execute(NULL,IID_IAccessor,NULL,NULL,
(IUnknown **)&pIUnknown),S_OK))
fTest=TRUE;
if(SUCCEEDED(m_hr))
SAFE_RELEASE(pIUnknown);
CleanUpFromExecute();
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Set DBPROPSET_PROPERTYIESINERROR
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_7()
{
DBPROPSET DBPrpt;
DBPROP rgDBProp;
BOOL fTest=FALSE;
memset(&rgDBProp ,0,sizeof(DBPROP));
DBPrpt.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
DBPrpt.cProperties=1;
DBPrpt.rgProperties=&rgDBProp;
rgDBProp.dwPropertyID=DBPROP_IRowset;
rgDBProp.vValue.vt=VT_EMPTY;
rgDBProp.dwOptions=DBPROPOPTIONS_REQUIRED;
//Try to set the property
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrpt),DB_E_ERRORSOCCURRED))
goto END;
//See what information is returned
COMPARE(rgDBProp.dwStatus,DBPROPSTATUS_NOTSUPPORTED);
fTest=TRUE;
END:
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc Set by ICommand::Execute
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_8()
{
IUnknown *pIUnknown=NULL;
IRowsetInfo *pIRowsetInfo=NULL;
DBPROPIDSET rgPropertyIDSets;
DBPROPID rgPropertyIDs;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fPass=FALSE;
//Get a new command object, start from scratch
if(!ResetProperties())
return TEST_FAIL;
if(!ReadyToExecute())
return TEST_FAIL;
//Ask for second property upon Execute
if(!CHECK(m_hr=m_pICommand->Execute(NULL,IID_IRowsetIdentity,NULL,NULL,
&pIUnknown),S_OK))
goto END;
//Make sure IRowsetInfo returns
if(!CHECK(pIUnknown->QueryInterface(IID_IRowsetInfo,(LPVOID *)&pIRowsetInfo),S_OK))
goto END;
//Check the value of IRowsetIdentity
rgPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_IRowsetIdentity;
rgPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
if(!CHECK(pIRowsetInfo->GetProperties(1,&rgPropertyIDSets,&cPropertySets,
&prgPropertySets),S_OK))
goto END;
if(COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue),VARIANT_TRUE))
fPass=TRUE;
END:
//Release the objects
SAFE_RELEASE(pIRowsetInfo);
SAFE_RELEASE(pIUnknown);
CleanUpFromExecute();
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc SetCheap
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_9()
{
//Find a property that is supported
if(!VerifySupported(IDX_MAXROWS))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwPropertyID=DBPROP_MAXROWS;
m_DBProp.vValue.vt=VT_I4;
m_DBProp.vValue.lVal=0;
m_DBProp.dwOptions=DBPROPOPTIONS_SETIFCHEAP;
m_hr = m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt);
if( m_hr == S_OK )
{
if(COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_OK))
return TEST_PASS;
}
if( m_hr == DB_S_ERRORSOCCURRED )
{
if(COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_NOTSET))
return TEST_PASS;
}
return(TEST_FAIL);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc Set dwOptions to an invalid value. Return DBPROPSTATUS_BADOPTION
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_10()
{
//Find a property that is supported
if(!VerifySupported(IDX_MAXROWS))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwPropertyID=DBPROP_MAXROWS;
m_DBProp.vValue.vt=VT_I4;
m_DBProp.vValue.lVal=0;
m_DBProp.dwOptions=99; //Invalid option
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),DB_E_ERRORSOCCURRED))
return TEST_FAIL;
return(COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_BADOPTION));
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc Set colid on a property that only supports all columns
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_11()
{
DBID colDBID;
//Find a property that is supported
if(!VerifySupported(IDX_MAXROWS))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwPropertyID=DBPROP_MAXROWS;
m_DBProp.vValue.vt=VT_I4;
m_DBProp.vValue.lVal=0;
m_DBProp.dwOptions=DBPROPOPTIONS_REQUIRED;
colDBID.eKind=DBKIND_NAME;
colDBID.uName.pwszName=L"Bogus";
m_DBProp.colid=colDBID;
//Colid is ignored on properties that do not return
//Column? designation from GetPropertyInfo for individual columns.
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,&m_DBPrpt),S_OK))
return TEST_FAIL;
return(COMPARE(m_DBProp.dwStatus,DBPROPSTATUS_OK));
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc Set an invalid colid on a property that supports colid
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_12()
{
DBID colDBID;
DBPROPSTATUS dbPropStatus = DBPROPSTATUS_OK;
HRESULT ExpHR = S_OK;
//Check to see if the property is supported
if(!SupportedProperty(DBPROP_TRANSACTEDOBJECT, DBPROPSET_ROWSET, m_pThisTestModule->m_pIUnknown))
return TEST_SKIPPED;
// Get the Column Flag
if(GetPropInfoFlags(DBPROP_TRANSACTEDOBJECT, DBPROPSET_ROWSET,
m_pThisTestModule->m_pIUnknown, DATASOURCE_INTERFACE) & DBPROPFLAGS_COLUMNOK)
{
dbPropStatus = DBPROPSTATUS_BADCOLUMN;
ExpHR = DB_E_ERRORSOCCURRED;
}
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=1;
m_DBProp.dwOptions=DBPROPOPTIONS_REQUIRED;
m_DBProp.dwPropertyID=DBPROP_TRANSACTEDOBJECT;
m_DBProp.vValue.vt=VT_EMPTY;
colDBID.eKind=99; //Invalid DBKINDENUM
m_DBProp.colid=colDBID;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,&m_DBPrpt), ExpHR))
return TEST_FAIL;
return(COMPARE(m_DBProp.dwStatus,dbPropStatus));
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Set DBPROP_APPENDONLY and DBPROP_OTHERINSERT to VARIANT_TRUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_13()
{
DBPROP rgDBProp[2];
//Verify property is supported
if( (!VerifySupported(IDX_APPENDONLY)) ||
((!g_rgDBProperties[IDX_APPENDONLY].fSettable) &&
(V_BOOL(&g_rgDBProperties[IDX_APPENDONLY].vDefault) == VARIANT_FALSE)) )
return TEST_SKIPPED;
//Verify property is supported
if(!VerifySupported(IDX_OTHERINSERT))
return TEST_SKIPPED;
m_cPrpt=1;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
m_DBPrpt.cProperties=2;
m_DBPrpt.rgProperties=rgDBProp;
rgDBProp[0].dwPropertyID=DBPROP_APPENDONLY;
rgDBProp[0].vValue.vt=VT_BOOL;
V_BOOL(&rgDBProp[0].vValue)=VARIANT_TRUE;
rgDBProp[0].dwOptions=DBPROPOPTIONS_REQUIRED;
rgDBProp[1].dwPropertyID=DBPROP_OTHERINSERT;
rgDBProp[1].vValue.vt=VT_BOOL;
V_BOOL(&rgDBProp[1].vValue)=VARIANT_TRUE;
rgDBProp[1].dwOptions=DBPROPOPTIONS_REQUIRED;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,
&m_DBPrpt),DB_S_ERRORSOCCURRED))
return TEST_FAIL;
if(!COMPARE(rgDBProp[0].dwStatus,DBPROPSTATUS_OK))
return TEST_FAIL;
//Verify property is supported
if( (!g_rgDBProperties[IDX_OTHERINSERT].fSettable) &&
(!GetProperty(DBPROP_OTHERINSERT, DBPROPSET_ROWSET, m_pICommandProperties)) )
COMPARE(rgDBProp[1].dwStatus,DBPROPSTATUS_NOTSETTABLE);
else
COMPARE(rgDBProp[1].dwStatus,DBPROPSTATUS_CONFLICTING);
// Check to see if DBPROP_IRowsetChange is VARIANT_TRUE
// Check to see if DBPROP_OWNINSERT is VARIANT_TRUE
// Check to see if DBPROP_UPDATABILITY is DBPROPVAL_UP_INSERT
// Check to see if DBPROP_OTHERINSERT is VARIANT_FALSE
DBPROPIDSET rgPropertyIDSets;
DBPROPID rgPropertyIDs[5];
ULONG cPropertySets=0;
DBPROPSET *prgPropertySets=NULL;
rgPropertyIDs[0]=DBPROP_APPENDONLY;
rgPropertyIDs[1]=DBPROP_IRowsetChange;
rgPropertyIDs[2]=DBPROP_OWNINSERT;
rgPropertyIDs[3]=DBPROP_UPDATABILITY;
rgPropertyIDs[4]=DBPROP_OTHERINSERT;
rgPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets.rgPropertyIDs=&rgPropertyIDs[0];
rgPropertyIDSets.cPropertyIDs=5;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), S_OK))
return TEST_FAIL;
// Check the values
COMPARE(cPropertySets, 1);
COMPARE(prgPropertySets->cProperties, 5);
// Compare the Property values
COMPARE(prgPropertySets->rgProperties[0].dwPropertyID, DBPROP_APPENDONLY);
COMPARE(prgPropertySets->rgProperties[0].dwStatus, DBPROPSTATUS_OK);
COMPARE(V_BOOL(&prgPropertySets->rgProperties[0].vValue), VARIANT_TRUE);
COMPARE(prgPropertySets->rgProperties[1].dwPropertyID, DBPROP_IRowsetChange);
COMPARE(prgPropertySets->rgProperties[1].dwStatus, DBPROPSTATUS_OK);
COMPARE(V_BOOL(&prgPropertySets->rgProperties[1].vValue), VARIANT_TRUE);
COMPARE(prgPropertySets->rgProperties[2].dwPropertyID, DBPROP_OWNINSERT);
COMPARE(prgPropertySets->rgProperties[2].dwStatus, DBPROPSTATUS_OK);
COMPARE(V_BOOL(&prgPropertySets->rgProperties[2].vValue), VARIANT_TRUE);
COMPARE(prgPropertySets->rgProperties[3].dwPropertyID, DBPROP_UPDATABILITY);
COMPARE(prgPropertySets->rgProperties[3].dwStatus, DBPROPSTATUS_OK);
COMPARE(V_I4(&prgPropertySets->rgProperties[3].vValue) & DBPROPVAL_UP_INSERT, DBPROPVAL_UP_INSERT);
COMPARE(prgPropertySets->rgProperties[4].dwPropertyID, DBPROP_OTHERINSERT);
COMPARE(prgPropertySets->rgProperties[4].dwStatus, DBPROPSTATUS_OK);
COMPARE(V_BOOL(&prgPropertySets->rgProperties[4].vValue), VARIANT_FALSE);
FreeProperties(&cPropertySets,&prgPropertySets);
return TEST_PASS;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Set the same property twice in one call to SetProperties
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_14()
{
HRESULT ExpHR=S_OK;
DBPROPSTATUS ExpStatus1=DBPROPSTATUS_OK;
DBPROPSTATUS ExpStatus2=DBPROPSTATUS_OK;
DBPROP rgDBProp[2];
// Verify property is supported
if(!VerifySupported(IDX_MAXROWS)){
ExpHR=DB_E_ERRORSOCCURRED;
ExpStatus1=DBPROPSTATUS_NOTSUPPORTED;
ExpStatus2=DBPROPSTATUS_NOTSUPPORTED;
}
else if(!g_rgDBProperties[IDX_MAXROWS].fSettable)
{
ExpHR=DB_E_ERRORSOCCURRED;
ExpStatus1=DBPROPSTATUS_NOTSETTABLE;
ExpStatus2=DBPROPSTATUS_NOTSETTABLE;
//If the default is 0 or 5 than DB_S_ERRORSOCCURRED
if(V_I4(&g_rgDBProperties[IDX_MAXROWS].vDefault)==0)
{
ExpHR=DB_S_ERRORSOCCURRED;
ExpStatus1=DBPROPSTATUS_OK;
}
if(V_I4(&g_rgDBProperties[IDX_MAXROWS].vDefault)==5)
{
ExpHR=DB_S_ERRORSOCCURRED;
ExpStatus2=DBPROPSTATUS_OK;
}
}
m_cPrpt=1;
m_DBPrpt.cProperties=2;
memset(&rgDBProp ,0, (sizeof(DBPROP)*2));
m_DBPrpt.rgProperties=rgDBProp;
m_DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
rgDBProp[0].dwPropertyID=DBPROP_MAXROWS;
rgDBProp[0].vValue.vt=VT_I4;
rgDBProp[0].vValue.lVal=0;
rgDBProp[0].dwOptions=DBPROPOPTIONS_REQUIRED;
rgDBProp[1].dwPropertyID=DBPROP_MAXROWS;
rgDBProp[1].vValue.vt=VT_I4;
rgDBProp[1].vValue.lVal=5;
rgDBProp[1].dwOptions=DBPROPOPTIONS_REQUIRED;
if(!CHECK(m_pICommandProperties->SetProperties(m_cPrpt,&m_DBPrpt),ExpHR))
return TEST_FAIL;
if(!COMPARE(rgDBProp[0].dwStatus,ExpStatus1))
return TEST_FAIL;
return(COMPARE(rgDBProp[1].dwStatus,ExpStatus2));
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc Get DBPROPSET_PROPERTYIESINERROR with cPropertyIDs>0
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_15()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPID rgPropertyIDs;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
rgPropertyIDSets.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_IRowset;
rgPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), E_INVALIDARG))
goto END;
if(cPropertySets || prgPropertySets)
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc Get DBPROPSET_PROPERTYIESINERROR with cPropertyIDs>0, rgPropertyIDs=NULL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_16()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
rgPropertyIDSets.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets.cPropertyIDs=1;
rgPropertyIDSets.rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), E_INVALIDARG))
goto END;
if(cPropertySets || prgPropertySets)
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc Get DBPROPSET_PROPERTYIESINERROR with rgPropertyIDs!=NULL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_17()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPID rgPropertyIDs;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
rgPropertyIDSets.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets.cPropertyIDs=0;
rgPropertyIDs=DBPROP_IRowset;
rgPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), E_INVALIDARG))
goto END;
if(cPropertySets || prgPropertySets)
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc Get DBPROPSET_ROWSET and DBPROPSET_PROPERTYIESINERROR
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_18()
{
DBPROPIDSET rgPropertyIDSets[2];
DBPROPID rgPropertyIDs;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
rgPropertyIDSets[0].guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets[0].cPropertyIDs=1;
rgPropertyIDs=DBPROP_MAXOPENROWS;
rgPropertyIDSets[0].rgPropertyIDs=&rgPropertyIDs;
rgPropertyIDSets[1].guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets[1].cPropertyIDs=0;
rgPropertyIDSets[1].rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(2,rgPropertyIDSets,
&cPropertySets,&prgPropertySets), E_INVALIDARG))
goto END;
if(cPropertySets || prgPropertySets)
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc Get DBPROPSET_PROPERTYIESINERROR after successful ICommand::Execute
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_19()
{
DBPROPSET DBPrpt;
DBPROP rgDBProp[2];
DBPROPIDSET rgPropertyIDSets;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
//Go back to initial state
if(!ResetProperties())
return TEST_FAIL;
//The two properies have to be supported
if(!VerifySupported(IDX_IROWSETLOCATE) ||
!VerifySupported(IDX_MAXROWS))
return TEST_SKIPPED;
memset(&rgDBProp ,0, (sizeof(DBPROP)*2));
DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
DBPrpt.cProperties=2;
DBPrpt.rgProperties=rgDBProp;
rgDBProp[0].dwPropertyID=DBPROP_MAXROWS;
rgDBProp[0].vValue.vt=VT_I4;
rgDBProp[0].vValue.lVal=0;
rgDBProp[0].dwOptions=DBPROPOPTIONS_REQUIRED;
rgDBProp[1].dwPropertyID=DBPROP_IRowsetLocate;
rgDBProp[1].vValue.vt=VT_BOOL;
V_BOOL(&rgDBProp[1].vValue)=VARIANT_TRUE;
rgDBProp[1].dwOptions=DBPROPOPTIONS_REQUIRED;
//Try to set these properties
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrpt),S_OK))
return TEST_FAIL;
//Make sure the correct information is returned
COMPARE(rgDBProp[0].dwStatus,DBPROPSTATUS_OK);
COMPARE(rgDBProp[1].dwStatus,DBPROPSTATUS_OK);
//Open a rowset
if(!OpenRowset())
goto END;
rgPropertyIDSets.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets.cPropertyIDs=0;
rgPropertyIDSets.rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), S_OK))
goto END;
//Can not check anything from GetProperties because the it is not a
//valid call since Execute succeeded.
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
ReleaseRowset();
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc Get DBPROPSET_PROPERTYIESINERROR after ICommand::Execute fails
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_20()
{
DBPROPSET DBPrpt;
DBPROP rgDBProp[2];
DBPROPIDSET rgPropertyIDSets;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
EQUERY eSQLStmt=SELECT_COLLISTFROMTBL;
//Go back to initial state
if(!ResetProperties())
return TEST_FAIL;
//The two properies have to be supported
if( (!VerifySupported(IDX_IROWSETLOCATE)) ||
(!g_rgDBProperties[IDX_IROWSETLOCATE].fSettable) ||
(!VerifySupported(IDX_BOOKMARKS)) ||
(!g_rgDBProperties[IDX_BOOKMARKS].fSettable) )
return TEST_SKIPPED;
memset(&rgDBProp ,0, (sizeof(DBPROP)*2));
DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
DBPrpt.cProperties=2;
DBPrpt.rgProperties=rgDBProp;
rgDBProp[0].dwPropertyID=DBPROP_BOOKMARKS;
rgDBProp[0].vValue.vt=VT_BOOL;
V_BOOL(&rgDBProp[0].vValue)=VARIANT_TRUE;
rgDBProp[0].dwOptions=DBPROPOPTIONS_REQUIRED;
rgDBProp[1].dwPropertyID=DBPROP_IRowsetLocate;
rgDBProp[1].vValue.vt=VT_BOOL;
V_BOOL(&rgDBProp[1].vValue)=VARIANT_FALSE;
rgDBProp[1].dwOptions=DBPROPOPTIONS_REQUIRED;
//Try to set these properties
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrpt),S_OK))
return TEST_FAIL;
//Make sure the correct information is returned
COMPARE(rgDBProp[0].dwStatus,DBPROPSTATUS_OK);
COMPARE(rgDBProp[1].dwStatus,DBPROPSTATUS_OK);
//Expect Execute to fail
//Make sure a select statement has been set up
if(!m_pICommandText)
if(!ReadyToExecute(eSQLStmt))
goto END;
m_hr=m_pICommand->Execute(NULL,IID_IRowsetInfo,NULL,NULL,
(IUnknown **)&m_pIRowsetInfo);
if( m_hr != DB_S_ERRORSOCCURRED && m_hr != DB_E_ERRORSOCCURRED )
{
fTest=TRUE;
goto END;
}
rgPropertyIDSets.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets.cPropertyIDs=0;
rgPropertyIDSets.rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), S_OK))
goto END;
//Guid should be DBPROPSET_ROWSET
if(!COMPARE(prgPropertySets->guidPropertySet,DBPROPSET_ROWSET))
goto END;
//Only two properties were set
if(prgPropertySets->cProperties > 2)
goto END;
//PropertyID should be one of the two properties set
if((prgPropertySets->rgProperties[0].dwPropertyID != DBPROP_BOOKMARKS) &&
(prgPropertySets->rgProperties[0].dwPropertyID != DBPROP_OWNUPDATEDELETE))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
ReleaseRowset();
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Get DBPROPSET_PROPERTYIESINERROR twice in a row
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_21()
{
DBPROPSET DBPrpt;
DBPROP rgDBProp[2];
DBPROPIDSET rgPropertyIDSets;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
EQUERY eSQLStmt=SELECT_COLLISTFROMTBL;
//Go back to initial state
if(!ResetProperties())
return TEST_FAIL;
//The two properies have to be supported
if( !VerifySupported(IDX_IROWSETLOCATE) ||
!VerifySupported(IDX_MAXROWS))
return TEST_SKIPPED;
memset(&rgDBProp ,0, (sizeof(DBPROP)*2));
DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
DBPrpt.cProperties=2;
DBPrpt.rgProperties=rgDBProp;
rgDBProp[0].dwPropertyID=DBPROP_MAXROWS;
rgDBProp[0].vValue.vt=VT_I4;
rgDBProp[0].vValue.lVal=0;
rgDBProp[0].dwOptions=DBPROPOPTIONS_REQUIRED;
rgDBProp[1].dwPropertyID=DBPROP_IRowsetLocate;
rgDBProp[1].vValue.vt=VT_BOOL;
V_BOOL(&rgDBProp[1].vValue)=VARIANT_TRUE;
rgDBProp[1].dwOptions=DBPROPOPTIONS_REQUIRED;
//Try to set these properties
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrpt),S_OK))
return TEST_FAIL;
//Make sure the correct information is returned
COMPARE(rgDBProp[0].dwStatus,DBPROPSTATUS_OK);
COMPARE(rgDBProp[1].dwStatus,DBPROPSTATUS_OK);
//Open a rowset
if(!OpenRowset())
goto END;
rgPropertyIDSets.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets.cPropertyIDs=0;
rgPropertyIDSets.rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), S_OK))
goto END;
ReleaseRowset();
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
//The two properies have to be supported
if( !VerifySupported(IDX_BOOKMARKS) ||
!VerifySupported(IDX_OWNUPDATEDELETE))
return TEST_SKIPPED;
DBPrpt.guidPropertySet=DBPROPSET_ROWSET;
DBPrpt.cProperties=2;
DBPrpt.rgProperties=rgDBProp;
rgDBProp[0].dwPropertyID=DBPROP_BOOKMARKS;
rgDBProp[0].vValue.vt=VT_BOOL;
V_BOOL(&rgDBProp[0].vValue)=VARIANT_TRUE;
rgDBProp[0].dwOptions=DBPROPOPTIONS_REQUIRED;
rgDBProp[1].dwPropertyID=DBPROP_OWNUPDATEDELETE;
rgDBProp[1].vValue.vt=VT_BOOL;
V_BOOL(&rgDBProp[1].vValue)=VARIANT_FALSE;
rgDBProp[1].dwOptions=DBPROPOPTIONS_REQUIRED;
//Try to set these properties
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrpt),S_OK))
return TEST_FAIL;
//Make sure the correct information is returned
COMPARE(rgDBProp[0].dwStatus,DBPROPSTATUS_OK);
COMPARE(rgDBProp[1].dwStatus,DBPROPSTATUS_OK);
//Expect Execute to fail
//Make sure a select statement has been set up
if(!m_pICommandText)
if(!ReadyToExecute(eSQLStmt))
goto END;
m_hr=m_pICommand->Execute(NULL,IID_IRowsetInfo,NULL,NULL,
(IUnknown **)&m_pIRowsetInfo);
if( m_hr != DB_S_ERRORSOCCURRED && m_hr != DB_E_ERRORSOCCURRED )
{
fTest=TRUE;
goto END;
}
rgPropertyIDSets.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets.cPropertyIDs=0;
rgPropertyIDSets.rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), S_OK))
goto END;
//Guid should be DBPROPSET_ROWSET
if(!COMPARE(prgPropertySets->guidPropertySet,DBPROPSET_ROWSET))
goto END;
//Only two properties were set
if(prgPropertySets->cProperties > 2)
goto END;
//Check for 0, NULL
if( (!prgPropertySets->cProperties) && (!prgPropertySets->rgProperties) )
{
fTest=TRUE;
goto END;
}
//PropertyID should be one of the two properties set
if((prgPropertySets->rgProperties[0].dwPropertyID != DBPROP_BOOKMARKS) &&
(prgPropertySets->rgProperties[0].dwPropertyID != DBPROP_OWNUPDATEDELETE))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
ReleaseRowset();
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_PROPERTYIESINERROR
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Parameters::Variation_22()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPSET * prgPropertySets=NULL;
ULONG cPropertySets=0;
BOOL fTest=FALSE;
rgPropertyIDSets.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets.cPropertyIDs=0;
rgPropertyIDSets.rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), S_OK))
goto END;
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
rgPropertyIDSets.guidPropertySet=DBPROPSET_PROPERTIESINERROR;
rgPropertyIDSets.cPropertyIDs=0;
rgPropertyIDSets.rgPropertyIDs=NULL;
if(!CHECK(m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), S_OK))
goto END;
fTest=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Parameters::Terminate()
{
return (TCICMDPRPT::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_SequenceBeforeRowset)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_SequenceBeforeRowset - sequence test before a rowset is open
//| Created: 09/21/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_SequenceBeforeRowset::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(TCICMDPRPT_ChangeProperties::Init())
// }}
{
m_fGet=TRUE;
m_fSet=TRUE;
m_pDBPrpt=NULL;
m_pDBPrptIDSet.cPropertyIDs=1;
m_pDBPrptIDSet.guidPropertySet=DBPROPSET_ROWSET;
m_pDBPrptIDSet.rgPropertyIDs=&m_pDBPrptID;
return TRUE;
}
return FALSE;
}
//--------------------------------------------------------------------
// @mfunc: GetInterface
// QueryInterface on the command object for interface riid. Return
// TRUE if QueryInterface returns S_OK, otherwise return FALSE.
BOOL TCICMDPRPT_SequenceBeforeRowset::GetInterface(REFIID riid, BOOL fMandatory)
{
m_hr=m_pICommandProperties->QueryInterface(riid, (LPVOID*)&m_pICommandInterface);
if( m_hr == S_OK )
return TRUE;
if( m_hr == E_NOINTERFACE && fMandatory == FALSE )
return TRUE;
odtLog<<wszInterfaceUnexpectedErr;
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc After IAccessor
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_1()
{
BOOL fPass=FALSE;
//Initialization
m_fSet=TRUE;
m_fGet=TRUE;
//Get the interface pointer
if(!GetInterface(IID_IAccessor, FALSE))
goto END;
//Open a rowset
if(!OpenRowset())
goto END;
//The interface should always be supported
if(!m_pIRowsetInfo || VerifyMandatoryInterfaces())
fPass=TRUE;
ReleaseRowset();
END:
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc After IColumnsInfo
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_2()
{
WCHAR *pwchar;
BOOL fPass=FALSE;
//Initialization
m_fSet=TRUE;
m_fGet=TRUE;
//Get the interface pointer
if(!GetInterface(IID_IColumnsInfo, TRUE))
goto END;
//Call a method on the interface
m_hr=((IColumnsInfo *)m_pICommandInterface)->GetColumnInfo(NULL,NULL,&pwchar);
if((m_hr != E_INVALIDARG) && (m_hr != DB_E_NOTPREPARED))
CHECK(m_hr, E_INVALIDARG);
//Open a rowset
if(!OpenRowset())
goto END;
//The interface should always be supported
if(!m_pIRowsetInfo || VerifyMandatoryInterfaces())
fPass=TRUE;
ReleaseRowset();
END:
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc After IColumnsRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_3()
{
BOOL fPass=FALSE;
//Initialization
m_fSet=TRUE;
m_fGet=TRUE;
//Get the interface pointer
if(!GetInterface(IID_IColumnsRowset, FALSE))
goto END;
//IColumnsRowset is not supported
if(!m_pICommandInterface)
return TEST_SKIPPED;
//Call a method on the interface
m_hr=((IColumnsRowset *)m_pICommandInterface)->GetAvailableColumns(NULL,NULL);
if((m_hr != E_INVALIDARG) && (m_hr != DB_E_NOTPREPARED))
CHECK(m_hr, E_INVALIDARG);
//Open a rowset
if(!OpenRowset())
goto END;
//The interface should always be supported
if(!m_pIRowsetInfo || VerifyMandatoryInterfaces())
fPass=TRUE;
ReleaseRowset();
END:
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc After ICommand
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_4()
{
BOOL fPass=FALSE;
//Initialization
m_fSet=TRUE;
m_fGet=TRUE;
//Get the interface pointer
if(!GetInterface(IID_ICommand, FALSE))
goto END;
//ICommand is not supported
if(!m_pICommandInterface)
return TEST_SKIPPED;
//Call a method on the interface
CHECK(((ICommand *)m_pICommandInterface)->Cancel(),S_OK);
//Open a rowset
if(!OpenRowset())
goto END;
//The interface should always be supported
if(!m_pIRowsetInfo || VerifyMandatoryInterfaces())
fPass=TRUE;
ReleaseRowset();
END:
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc After ICommandCost
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_5()
{
#if( OLEDBVER >= 0x0300 )
//initialization
m_fSet=TRUE;
m_fGet=TRUE;
//get the interface pointer
if(!GetInterface(IID_ICommandCost, &m_fGet, FALSE))
goto END;
//call a mothod on the interface
CHECK(((ICommandCost *)m_pICommandInterface)->GetCostEstimate(NULL,NULL,NULL),E_INVALIDARG);
m_guidProperty=IID_IRowset;
//Call GetPorperties and SetProperties
m_fGet=CHECK(m_pICommandProperties->GetProperties(NULL,1,
&m_guidProperty, &m_cDBPrptGet, &m_pDBPrpt),S_OK);
m_fSet=CHECK(m_pICommandProperties->SetProperties(NULL,m_cDBPrptGet,m_pDBPrpt,NULL),S_OK);
PROVIDER_FREE(m_pDBPrpt);
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
END:
if(m_fGet && m_fSet)
return TEST_PASS;
else
return TEST_FAIL;
#else
return TEST_PASS;
#endif
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc After ICommandPrepare
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_6()
{
BOOL fPass=FALSE;
//Initialization
m_fSet=TRUE;
m_fGet=TRUE;
//Get the interface pointer
if(!GetInterface(IID_ICommandPrepare, FALSE))
goto END;
//ICommandPrepare is not supported
if(!m_pICommandInterface)
return TEST_SKIPPED;
//Call a method on the interface
CHECK(((ICommandPrepare *)m_pICommandInterface)->Unprepare(),S_OK);
//Open a rowset
if(!OpenRowset())
goto END;
//The interface should always be supported
if(!m_pIRowsetInfo || VerifyMandatoryInterfaces())
fPass=TRUE;
ReleaseRowset();
END:
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc After ICommandQuery
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_7()
{
#if( OLEDBVER >= 0x0300 )
//initialization
m_fSet=TRUE;
m_fGet=TRUE;
//get the interface pointer
if(!GetInterface(IID_IQuery, &m_fGet, FALSE))
goto END;
//call a mothod on the interface
CHECK(((IQuery *)m_pICommandInterface)->GetCardinalityEstimate(NULL),E_INVALIDARG);
m_guidProperty=IID_IRowset;
//Call GetPorperties and SetProperties
m_fGet=CHECK(m_pICommandProperties->GetProperties(NULL,1,
&m_guidProperty, &m_cDBPrptGet, &m_pDBPrpt),S_OK);
m_fSet=CHECK(m_pICommandProperties->SetProperties(NULL,m_cDBPrptGet,m_pDBPrpt,NULL),S_OK);
PROVIDER_FREE(m_pDBPrpt);
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
END:
if(m_fGet && m_fSet)
return TEST_PASS;
else
return TEST_FAIL;
#else
return TEST_PASS;
#endif
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc After ICommandTree
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_8()
{
#if( OLEDBVER >= 0x0300 )
//initialization
m_fSet=TRUE;
m_fGet=TRUE;
//get the interface pointer
if(!GetInterface(IID_ICommandTree, TRUE))
goto END;
//call a mothod on the interface
CHECK(((ICommandTree *)m_pICommandInterface)->GetCommandTree(NULL),E_INVALIDARG);
m_guidProperty=IID_IRowset;
//Call GetPorperties and SetProperties
m_fGet=CHECK(m_pICommandProperties->GetProperties(NULL,1,
&m_guidProperty, &m_cDBPrptGet, &m_pDBPrpt),S_OK);
m_fSet=CHECK(m_pICommandProperties->SetProperties(NULL,m_cDBPrptGet,m_pDBPrpt,NULL),S_OK);
PROVIDER_FREE(m_pDBPrpt);
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
END:
if(m_fGet && m_fSet)
return TEST_PASS;
else
return TEST_FAIL;
#else
return TEST_PASS;
#endif
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc After ICommandText
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_9()
{
BOOL fPass=FALSE;
//Initialization
m_fSet=TRUE;
m_fGet=TRUE;
//Get the interface pointer
if(!GetInterface(IID_ICommandText, FALSE))
goto END;
//ICommandText is not supported
if(!m_pICommandInterface)
return TEST_SKIPPED;
//Call a method on the interface
CHECK(((ICommandText *)m_pICommandInterface)->GetCommandText(NULL,NULL),E_INVALIDARG);
//Open a rowset
if(!OpenRowset())
goto END;
//The interface should always be supported
if(!m_pIRowsetInfo || VerifyMandatoryInterfaces())
fPass=TRUE;
ReleaseRowset();
END:
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc After ICommandValidate
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_10()
{
#if( OLEDBVER >= 0x0300 )
//Initialization
m_fSet=TRUE;
m_fGet=TRUE;
//get the interface pointer
if(!GetInterface(IID_ICommandValidate, FALSE))
goto END;
//Call a method on the interface
CHECK(((ICommandValidate *)m_pICommandInterface)->ValidateSyntax(),E_FAIL);
m_guidProperty=IID_IRowset;
//Call GetPorperties and SetProperties
m_fGet=CHECK(m_pICommandProperties->GetProperties(NULL,1,
&m_guidProperty, &m_cDBPrptGet, &m_pDBPrpt),S_OK);
m_fSet=CHECK(m_pICommandProperties->SetProperties(NULL,m_cDBPrptGet,m_pDBPrpt,NULL),S_OK);
PROVIDER_FREE(m_pDBPrpt);
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
END:
if(m_fGet && m_fSet)
return TEST_PASS;
else
return TEST_FAIL;
#else
return TEST_PASS;
#endif
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc After ICommandWithParameters
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_11()
{
BOOL fPass=FALSE;
//Initialization
m_fSet=TRUE;
m_fGet=TRUE;
//Get the interface pointer
if(!GetInterface(IID_ICommandWithParameters, FALSE))
goto END;
//ICommandWithParameters is not supported
if(!m_pICommandInterface)
return TEST_SKIPPED;
//Call a method on the interface
CHECK(((ICommandWithParameters *)m_pICommandInterface)->SetParameterInfo(0,NULL,NULL),S_OK);
//Open a rowset
if(!OpenRowset())
goto END;
//The interface should always be supported
if(!m_pIRowsetInfo || VerifyMandatoryInterfaces())
fPass=TRUE;
ReleaseRowset();
END:
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc After IQuery
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_12()
{
#if( OLEDBVER >= 0x0300 )
//initialization
m_fSet=TRUE;
m_fGet=TRUE;
//get the interface pointer
if(!GetInterface(IID_IQuery, FALSE))
goto END;
//call tha method on the interface
CHECK(((IQuery *)m_pICommandInterface)->AddPostProcessing(NULL,FALSE),E_INVALIDARG);
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
END:
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
#else
return TEST_PASS;
#endif
}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc After IPersistStream
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceBeforeRowset::Variation_13()
{
#if( OLEDBVER >= 0x0300 )
BOOL fPass=FALSE;
//Initialization
m_fSet=TRUE;
m_fGet=TRUE;
//Get the interface pointer
if(!GetInterface(IID_IPersistStream, FALSE))
goto END;
//Open a rowset
if(!OpenRowset())
goto END;
//The interface should always be supported
if(!m_pIRowsetInfo || VerifyMandatoryInterfaces())
fPass=TRUE;
ReleaseRowset();
//There should be only 2 interfaces on the command object, m_pICommand and
//m_pICommandProperties
SAFE_RELEASE(m_pICommandInterface);
END:
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
#else
return TEST_PASS;
#endif
}
// }}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_SequenceBeforeRowset::Terminate()
{
return (TCICMDPRPT_ChangeProperties::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_SequenceAfterRowset)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_SequenceAfterRowset - sequence test after a rowset is open
//| Created: 09/21/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_SequenceAfterRowset::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(TCICMDPRPT::Init())
// }}
{
return (OpenRowset());
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc Call SetProperties after a rowset is open, DB_E_OPENOBJECT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_SequenceAfterRowset::Variation_1()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_IRowsetInfo;
DBPrpt.vValue.vt=VT_BOOL;
V_BOOL(&DBPrpt.vValue)=VARIANT_TRUE;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrptSet.rgProperties=&DBPrpt;
return(CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),DB_E_OBJECTOPEN));
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_SequenceAfterRowset::Terminate()
{
ReleaseRowset();
return (TCICMDPRPT::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_Zombie)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_Zombie - Test zombie state for command object
//| Created: 09/21/95
//-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Zombie::Init()
{
// Check to see if Transactions are usable
if(!IsUsableInterface(SESSION_INTERFACE, IID_ITransactionLocal))
return TEST_SKIPPED;
// Initialize to a invalid pointer
m_pITransactionLocal = INVALID(ITransactionLocal*);
if(CTransaction::Init())
{
if( RegisterInterface(COMMAND_INTERFACE, IID_ICommandProperties) )
return TRUE;
}
// Check to see if ITransaction is supported
if(!m_pITransactionLocal)
return TEST_SKIPPED;
// Clear the bad pointer value
if(m_pITransactionLocal == INVALID(ITransactionLocal*))
m_pITransactionLocal = NULL;
return FALSE;
}
//--------------------------------------------------------------------
//@cmember: Get a supported interface property
//
BOOL TCICMDPRPT_Zombie::InterfaceSupported(DBPROPID *dwPropertyID)
{
ULONG cPrpt;
for(cPrpt=IDX_INTERFACE_START;cPrpt<=(ULONG)IDX_INTERFACE_END;cPrpt++)
{
if((g_rgDBProperties[cPrpt].fSupported) && (g_rgDBProperties[cPrpt].fSettable))
{
*dwPropertyID = g_rgDBProperties[cPrpt].dwPropertyID;
return TRUE;
}
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Abort ICommandProperties::GetProperties with fRetaining=TRUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_1()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
ULONG pcPropertySets = 0;
DBPROPSET * prgPropertySets = NULL;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if(!StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Abort the transaction with fRetaining==TRUE
if(!GetAbort(TRUE))
goto END;
//Test zombie
if(!m_fAbortPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
//Set a valid property
if(CHECK(pICommandProperties->GetProperties(0,NULL,&pcPropertySets,&prgPropertySets), S_OK))
fSuccess = TRUE;
END:
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Cleanup Transactions
CleanUpTransaction(S_OK);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
//Free memory from GetProperties
FreeProperties(&pcPropertySets,&prgPropertySets);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Abort ICommandProperties::GetProperties with fRetaining=FALSE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_2()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
ULONG pcPropertySets = 0;
DBPROPSET * prgPropertySets = NULL;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if(!StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Abort the transaction with fRetaining==FALSE
if(!GetAbort(FALSE))
goto END;
//Test zombie
if(!m_fAbortPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
//Set a valid property
if(CHECK(pICommandProperties->GetProperties(0,NULL,&pcPropertySets,&prgPropertySets), S_OK))
fSuccess = TRUE;
END:
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Cleanup Transactions
CleanUpTransaction(XACT_E_NOTRANSACTION);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
//Free memory from GetProperties
FreeProperties(&pcPropertySets,&prgPropertySets);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Commit ICommandProperties::GetProperties with fRetaining=TRUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_3()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
ULONG pcPropertySets = 0;
DBPROPSET * prgPropertySets = NULL;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if(!StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Commit the transaction with fRetaining==TRUE
if(!GetCommit(TRUE))
goto END;
//Test zombie
if(!m_fCommitPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
//Set a valid property
if(CHECK(pICommandProperties->GetProperties(0,NULL,&pcPropertySets,&prgPropertySets), S_OK))
fSuccess = TRUE;
END:
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Cleanup Transactions
CleanUpTransaction(S_OK);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
//Free memory from GetProperties
FreeProperties(&pcPropertySets,&prgPropertySets);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Commit ICommandProperties::GetProperties with fRetaining=FALSE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_4()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
ULONG pcPropertySets = 0;
DBPROPSET * prgPropertySets = NULL;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if(!StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Commit the transaction with fRetaining==FALSE
if(!GetCommit(FALSE))
goto END;
//Test zombie
if(!m_fCommitPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
//Set a valid property
if(CHECK(pICommandProperties->GetProperties(0,NULL,&pcPropertySets,&prgPropertySets), S_OK))
fSuccess = TRUE;
END:
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
// Cleanup Transactions
CleanUpTransaction(XACT_E_NOTRANSACTION);
// Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
//Free memory from GetProperties
FreeProperties(&pcPropertySets,&prgPropertySets);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc DB_E_OBJECTOPEN - Abort ICommandProperties::SetProperties with fRetaining=TRUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_5()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet = DBPROPSET_ROWSET;
DBPrptSet.cProperties = 1;
DBPrptSet.rgProperties = &DBPrpt;
DBPrpt.dwPropertyID = DBPROP_IRowsetInfo;
DBPrpt.vValue.vt = VT_BOOL;
V_BOOL(&DBPrpt.vValue) = VARIANT_TRUE;
DBPrpt.dwOptions = DBPROPOPTIONS_REQUIRED;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if( !StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Abort the transaction with fRetaining==TRUE
if(!GetAbort(TRUE))
goto END;
//Test zombie
if(!m_fAbortPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
//Get a valid property
if(CHECK(pICommandProperties->SetProperties(1, &DBPrptSet), DB_E_OBJECTOPEN))
fSuccess = TRUE;
END:
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Cleanup Transactions
CleanUpTransaction(S_OK);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc DB_E_OBJECTOPEN - Abort ICommandProperties::SetProperties with fRetaining=FALSE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_6()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet = DBPROPSET_ROWSET;
DBPrptSet.cProperties = 1;
DBPrptSet.rgProperties = &DBPrpt;
DBPrpt.dwPropertyID = DBPROP_IRowsetInfo;
DBPrpt.vValue.vt = VT_BOOL;
V_BOOL(&DBPrpt.vValue) = VARIANT_TRUE;
DBPrpt.dwOptions = DBPROPOPTIONS_REQUIRED;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if( !StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Abort the transaction with fRetaining==FALSE
if(!GetAbort(FALSE))
goto END;
//Test zombie
if(!m_fAbortPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
//Get a valid property
if(CHECK(pICommandProperties->SetProperties(1,&DBPrptSet), DB_E_OBJECTOPEN))
fSuccess = TRUE;
END:
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Cleanup Transactions
CleanUpTransaction(XACT_E_NOTRANSACTION);
// Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc DB_E_OBJECTOPEN - Commit ICommandProperties::SetProperties with fRetaining=TRUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_7()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet = DBPROPSET_ROWSET;
DBPrptSet.cProperties = 1;
DBPrptSet.rgProperties = &DBPrpt;
DBPrpt.dwPropertyID = DBPROP_IRowsetInfo;
DBPrpt.vValue.vt = VT_BOOL;
V_BOOL(&DBPrpt.vValue) = VARIANT_TRUE;
DBPrpt.dwOptions = DBPROPOPTIONS_REQUIRED;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if(!StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Commit the transaction with fRetaining==TRUE
if(!GetCommit(TRUE))
goto END;
//Test zombie
if(!m_fCommitPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
//Set a valid property
if(CHECK(pICommandProperties->SetProperties(1,&DBPrptSet), DB_E_OBJECTOPEN))
fSuccess = TRUE;
END:
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Cleanup Transactions
CleanUpTransaction(S_OK);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc DB_E_OBJECTOPEN - Commit ICommandProperties::SetProperties with fRetaining=FALSE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_8()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet = DBPROPSET_ROWSET;
DBPrptSet.cProperties = 1;
DBPrptSet.rgProperties = &DBPrpt;
DBPrpt.dwPropertyID = DBPROP_IRowsetInfo;
DBPrpt.vValue.vt = VT_BOOL;
V_BOOL(&DBPrpt.vValue) = VARIANT_TRUE;
DBPrpt.dwOptions = DBPROPOPTIONS_REQUIRED;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if(!StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Commit the transaction with fRetaining==FALSE
if(!GetCommit(FALSE))
goto END;
//Test zombie
if(!m_fCommitPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
//Set a valid property
if(CHECK(pICommandProperties->SetProperties(1,&DBPrptSet), DB_E_OBJECTOPEN))
fSuccess = TRUE;
END:
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Cleanup Transactions
CleanUpTransaction(XACT_E_NOTRANSACTION);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Abort ICommandProperties::SetProperties with fRetaining=TRUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_9()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet = DBPROPSET_ROWSET;
DBPrptSet.cProperties = 1;
DBPrptSet.rgProperties = &DBPrpt;
DBPrpt.dwPropertyID = DBPROP_IRowset;
DBPrpt.vValue.vt = VT_BOOL;
V_BOOL(&DBPrpt.vValue) = VARIANT_TRUE;
DBPrpt.dwOptions = DBPROPOPTIONS_REQUIRED;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if( !StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Abort the transaction with fRetaining==TRUE
if(!GetAbort(TRUE))
goto END;
//Test zombie
if(!m_fAbortPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Release the Rowset Objects
SAFE_RELEASE(m_pIRowset);
SAFE_RELEASE(m_pIRowsetInfo);
SAFE_RELEASE(m_pIAccessor);
SAFE_RELEASE(m_pIColumnsInfo);
//Set a valid property
if(CHECK(pICommandProperties->SetProperties(1,&DBPrptSet), S_OK))
fSuccess = TRUE;
END:
//Cleanup Transactions
CleanUpTransaction(S_OK);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Abort ICommandProperties::SetProperties with fRetaining=FALSE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_10()
{
BOOL fSuccess = FALSE; // Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet = DBPROPSET_ROWSET;
DBPrptSet.cProperties = 1;
DBPrptSet.rgProperties = &DBPrpt;
DBPrpt.dwPropertyID = DBPROP_IRowset;
DBPrpt.vValue.vt = VT_BOOL;
V_BOOL(&DBPrpt.vValue) = VARIANT_TRUE;
DBPrpt.dwOptions = DBPROPOPTIONS_REQUIRED;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if( !StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Abort the transaction with fRetaining==FALSE
if(!GetAbort(FALSE))
goto END;
//Test zombie
if(!m_fAbortPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Release the Rowset Objects
SAFE_RELEASE(m_pIRowset);
SAFE_RELEASE(m_pIRowsetInfo);
SAFE_RELEASE(m_pIAccessor);
SAFE_RELEASE(m_pIColumnsInfo);
//Get a valid property
if(CHECK(pICommandProperties->SetProperties(1,&DBPrptSet), S_OK))
fSuccess = TRUE;
END:
//Cleanup Transactions
CleanUpTransaction(XACT_E_NOTRANSACTION);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Commit ICommandProperties::SetProperties with fRetaining=TRUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_11()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet = DBPROPSET_ROWSET;
DBPrptSet.cProperties = 1;
DBPrptSet.rgProperties = &DBPrpt;
DBPrpt.dwPropertyID = DBPROP_IRowset;
DBPrpt.vValue.vt = VT_BOOL;
V_BOOL(&DBPrpt.vValue) = VARIANT_TRUE;
DBPrpt.dwOptions = DBPROPOPTIONS_REQUIRED;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if( !StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Commit the transaction with fRetaining==TRUE
if(!GetCommit(TRUE))
goto END;
//Test zombie
if(!m_fCommitPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Release the Rowset Objects
SAFE_RELEASE(m_pIRowset);
SAFE_RELEASE(m_pIRowsetInfo);
SAFE_RELEASE(m_pIAccessor);
SAFE_RELEASE(m_pIColumnsInfo);
// Set a valid property
if(CHECK(pICommandProperties->SetProperties(1,&DBPrptSet), S_OK))
fSuccess = TRUE;
END:
//Cleanup Transactions
CleanUpTransaction(S_OK);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Commit ICommandProperties::SetProperties with fRetaining=FALSE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Zombie::Variation_12()
{
BOOL fSuccess = FALSE; //Variation passed or failed
DBCOUNTITEM cRowsObtained = 0;
HROW * rghRows = NULL;
ICommandProperties* pICommandProperties = NULL;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet = DBPROPSET_ROWSET;
DBPrptSet.cProperties = 1;
DBPrptSet.rgProperties = &DBPrpt;
DBPrpt.dwPropertyID = DBPROP_IRowset;
DBPrpt.vValue.vt = VT_BOOL;
V_BOOL(&DBPrpt.vValue) = VARIANT_TRUE;
DBPrpt.dwOptions = DBPROPOPTIONS_REQUIRED;
//Retrieve an Interface pointer to ICommandPrepare within a Transaction
if( !StartTransaction(SELECT_ALLFROMTBL,
(IUnknown**)&pICommandProperties,0,NULL))
goto END;
//Commit the transaction with fRetaining==FALSE
if(!GetCommit(FALSE))
goto END;
//Test zombie
if(!m_fCommitPreserve)
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), E_UNEXPECTED);
else
CHECK(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), S_OK);
// Release the row handle on the 1st rowset
if (rghRows)
CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL),S_OK);
PROVIDER_FREE(rghRows);
//Release the Rowset Objects
SAFE_RELEASE(m_pIRowset);
SAFE_RELEASE(m_pIRowsetInfo);
SAFE_RELEASE(m_pIAccessor);
SAFE_RELEASE(m_pIColumnsInfo);
//Set a valid property
if(CHECK(pICommandProperties->SetProperties(1,&DBPrptSet), S_OK))
fSuccess = TRUE;
END:
//Cleanup Transactions
CleanUpTransaction(XACT_E_NOTRANSACTION);
//Release ICommandProperties
SAFE_RELEASE(pICommandProperties);
if(fSuccess)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_TERMINATE_METHOD
// }}
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Zombie::Terminate()
{
return (CTransaction::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_Stress)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_Stress - Stress testing for memory leak
//| Created: 09/21/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Stress::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(TCICMDPRPT::Init())
// }}
{
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc Free Memory for GetProperties, check for memory leak
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Stress::Variation_1()
{
ULONG cCall;
ULONG cPrpt=0;
DBPROPSET *pDBPrptSet=NULL;
for(cCall=0; cCall < STRESS_MAX_CALL; cCall++)
{
m_hr = m_pICommandProperties->GetProperties(0,0,&cPrpt,&pDBPrptSet);
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrptSet);
if( m_hr != S_OK )
return TEST_FAIL;
}
return TEST_PASS;
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Stress::Terminate()
{
return (TCICMDPRPT::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_Sequence)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_Sequence - test calling sequence
//| Created: 09/28/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Sequence::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(TCICMDPRPT::Init())
// }}
{
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc Set, Unset, and Unset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Sequence::Variation_1()
{
HRESULT ExphrFalse = S_OK;
HRESULT ExphrTrue = S_OK;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
DBPROPIDSET DBPrptIDSet;
DBPROPID DBPrptID;
DBPROPSET *prgPropertySets=NULL;
ULONG cPrpt=0;
BOOL fPass=FALSE;
if(!VerifySupported(IDX_ICOLUMNSROWSET))
return TEST_SKIPPED;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_IColumnsRowset;
DBPrpt.vValue.vt=VT_BOOL;
V_BOOL(&DBPrpt.vValue)=VARIANT_TRUE;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrptSet.rgProperties=&DBPrpt;
//Get the Property value
if( (!g_rgDBProperties[IDX_ICOLUMNSROWSET].fSettable) &&
(GetProperty(DBPROP_IColumnsRowset, DBPROPSET_ROWSET, m_pICommandProperties)) )
ExphrFalse = DB_E_ERRORSOCCURRED;
if( (!g_rgDBProperties[IDX_ICOLUMNSROWSET].fSettable) &&
(!GetProperty(DBPROP_IColumnsRowset, DBPROPSET_ROWSET, m_pICommandProperties)) )
ExphrTrue = DB_E_ERRORSOCCURRED;
//Set
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),ExphrTrue))
return TEST_FAIL;
//Make sure DBPrpt is not altered by SetProperties
if(!COMPARE(DBPrpt.dwPropertyID, DBPROP_IColumnsRowset))
return TEST_FAIL;
if(!COMPARE(DBPrpt.dwOptions,DBPROPOPTIONS_REQUIRED))
return TEST_FAIL;
if(!COMPARE(V_BOOL(&DBPrpt.vValue),VARIANT_TRUE))
return TEST_FAIL;
//Unset
V_BOOL(&DBPrpt.vValue)=VARIANT_FALSE;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),ExphrFalse))
return TEST_FAIL;
//Make sure DBPrpt is not altered SetProperties
if(!COMPARE(DBPrpt.dwPropertyID, DBPROP_IColumnsRowset))
return TEST_FAIL;
if(!COMPARE(V_BOOL(&DBPrpt.vValue),VARIANT_FALSE))
return TEST_FAIL;
//Check the value of IRowsetInfo
DBPrptIDSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptIDSet.cPropertyIDs=1;
DBPrptID=DBPROP_IColumnsRowset;
DBPrptIDSet.rgPropertyIDs=&DBPrptID;
//Get the property
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPrptIDSet,
&cPrpt,&prgPropertySets),S_OK))
return TEST_FAIL;
//Make sure the property is not set
if(ExphrFalse == S_OK)
{
if(!COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue),VARIANT_FALSE))
goto END;
}
else
{
if(!COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue),VARIANT_TRUE))
goto END;
}
//Free memory from GetProperties
FreeProperties(&cPrpt,&prgPropertySets);
//Unset
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),ExphrFalse))
return TEST_FAIL;
//Get the property
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPrptIDSet,
&cPrpt,&prgPropertySets),S_OK))
return TEST_FAIL;
//Make sure the property is not set
if(ExphrFalse == S_OK)
{
if(!COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue),VARIANT_FALSE))
goto END;
}
else
{
if(!COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue),VARIANT_TRUE))
goto END;
}
fPass=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&prgPropertySets);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Unset, Set, Set
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Sequence::Variation_2()
{
HRESULT ExphrFalse = S_OK;
HRESULT ExphrTrue = S_OK;
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
DBPROPIDSET DBPrptIDSet;
DBPROPID DBPrptID;
DBPROPSET *prgPropertySets=NULL;
ULONG cPrpt=0;
BOOL fPass=FALSE;
if(!VerifySupported(IDX_ICOLUMNSROWSET))
return TEST_SKIPPED;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_IColumnsRowset;
DBPrpt.vValue.vt=VT_BOOL;
V_BOOL(&DBPrpt.vValue)=VARIANT_FALSE;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrptSet.rgProperties=&DBPrpt;
//Get the Property value
if( (!g_rgDBProperties[IDX_ICOLUMNSROWSET].fSettable) &&
(GetProperty(DBPROP_IColumnsRowset, DBPROPSET_ROWSET, m_pICommandProperties)) )
ExphrFalse = DB_E_ERRORSOCCURRED;
if( (!g_rgDBProperties[IDX_ICOLUMNSROWSET].fSettable) &&
(!GetProperty(DBPROP_IColumnsRowset, DBPROPSET_ROWSET, m_pICommandProperties)) )
ExphrTrue = DB_E_ERRORSOCCURRED;
//Unset
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),ExphrFalse))
return TEST_FAIL;
//Check the value of IRowsetInfo
DBPrptIDSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptIDSet.cPropertyIDs=1;
DBPrptID=DBPROP_IColumnsRowset;
DBPrptIDSet.rgPropertyIDs=&DBPrptID;
//Check the value of the property
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPrptIDSet,
&cPrpt,&prgPropertySets),S_OK))
return TEST_FAIL;
//The property should not be set
//Make sure the property is not set
if(ExphrFalse == S_OK)
{
if(!COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue),VARIANT_FALSE))
goto END;
}
else
{
if(!COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue),VARIANT_TRUE))
goto END;
}
//Free memory from GetProperties
FreeProperties(&cPrpt,&prgPropertySets);
//Set
V_BOOL(&DBPrpt.vValue)=VARIANT_TRUE;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),ExphrTrue))
return TEST_FAIL;
//Set
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),ExphrTrue))
return TEST_FAIL;
//Get the property
if(!CHECK(m_pICommandProperties->GetProperties(1,&DBPrptIDSet,
&cPrpt,&prgPropertySets),S_OK))
return TEST_FAIL;
//Make sure the property is set
if(ExphrTrue == S_OK)
{
if(!COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue),VARIANT_TRUE))
goto END;
}
else
{
if(!COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue),VARIANT_FALSE))
goto END;
}
fPass=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&prgPropertySets);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Multiple rowset objects open on the same command object
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Sequence::Variation_3()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
DBPROPIDSET DBPrptIDSet;
DBPROPID DBPrptID;
DBPROPSET *prgPropertySets=NULL;
ULONG cPrpt=0;
BOOL fPass=FALSE;
if(!VerifySupported(IDX_IROWSETIDENTITY))
return TEST_SKIPPED;
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_IRowsetIdentity;
DBPrpt.vValue.vt=VT_BOOL;
V_BOOL(&DBPrpt.vValue)=VARIANT_TRUE;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrptSet.rgProperties=&DBPrpt;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
return TEST_FAIL;
//Open a rowset
if(!OpenRowset())
goto END;
//Release the rowset
SAFE_RELEASE(m_pIRowsetInfo);
//Open a second rowset
if(!OpenRowset())
goto END;
//Release the rowset
SAFE_RELEASE(m_pIRowsetInfo);
//Open a third rowset
if(!OpenRowset())
goto END;
//Check the value of IRowsetIdentity
DBPrptIDSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptIDSet.cPropertyIDs=1;
DBPrptID=DBPROP_IRowsetIdentity;
DBPrptIDSet.rgPropertyIDs=&DBPrptID;
//Check the rowset
if(!CHECK(m_pIRowsetInfo->GetProperties(1,&DBPrptIDSet,&cPrpt,
&prgPropertySets),S_OK))
goto END;
if(!COMPARE(V_BOOL(&prgPropertySets->rgProperties->vValue), VARIANT_TRUE))
goto END;
fPass=TRUE;
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&prgPropertySets);
ReleaseRowset();
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Set IReadData, unset IReadData, call Execute(
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_Sequence::Variation_4()
{
#if( OLEDBVER >= 0x0300 )
IRowset **ppIRowset;
ULONG cRowset=0;
DBPROPERTYSUPPORT DBPrpt;
//make sure the properties are all supported
if(!VerifySupported(IDX_IREADDATA) || !VerifySupported(IDX_IROWSET))
return TEST_SKIPPED;
//set IReadData
DBPrpt.guidProperty=IID_IReadData;
DBPrpt.vValue.vt=VT_BOOL;
DBPrpt.vValue.bool=VARIANT_TRUE;
DBPrpt.dwOptions=0;
if(!CHECK(m_pICommandProperties->SetProperties(NULL,1,&DBPrpt,NULL),S_OK))
return TEST_FAIL;
//unset IReadData
DBPrpt.vValue.bool=VARIANT_FALSE;
if(!CHECK(m_pICommandProperties->SetProperties(NULL,1,&DBPrpt,NULL),S_OK))
return TEST_FAIL;
//set up for execute
if(!ReadyToExecute())
return TEST_FAIL;
//ask for IRowset unpon Execute
if(!CHECK(m_pICommand->Execute(NULL,IID_IRowset,NULL,NULL,FALSE,&cRowset,
(IUnknown ***)&ppIRowset,NULL),S_OK))
{
CleanUpFromExecute();
return TEST_FAIL;
}
//call a method on the IRowset pointer
COMPARE(cRowset, 1);
(*ppIRowset)->RestartPosition(NULL);
SAFE_RELEASE((*ppIRowset));
CleanUpFromExecute();
return TEST_PASS;
#else
return TEST_PASS;
#endif
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_Sequence::Terminate()
{
return (TCICMDPRPT::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCICMDPRPT_KAGERA)
//*-----------------------------------------------------------------------
//| Test Case: TCICMDPRPT_KAGERA - Kagera specific test case
//| Created: 09/29/95
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_KAGERA::Init()
{
if(TCICMDPRPT::Init())
// }}
{
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc A table without index only has forward only behavior
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCICMDPRPT_KAGERA::Variation_1()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
BOOL fPass=FALSE;
IRowset *pIRowset;
if(!VerifySupported(IDX_IROWSETCHANGE))
return TEST_SKIPPED;
//Start from scratch
if(!ResetProperties())
return TEST_FAIL;
//Print out a message that this test variation is for SQL Server only
odtLog<<wszSQLServerOnly;
//Drop the index on the table
if(!SUCCEEDED(g_pCTable->DropIndex()))
odtLog<<L"The Drop Index failed\n";
//Set command property IRowsetChange
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_IRowsetChange;
DBPrpt.vValue.vt=VT_BOOL;
V_BOOL(&DBPrpt.vValue)=VARIANT_TRUE;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrptSet.rgProperties=&DBPrpt;
if(!CHECK(m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
goto END;
if(!ReadyToExecute())
goto END;
//Execute the select statement
CHECK(m_hr=m_pICommand->Execute(NULL,IID_IRowset,NULL,NULL,
(IUnknown **)&pIRowset),S_OK);
//Release the rowset object
if(SUCCEEDED(m_hr)) {
SAFE_RELEASE(pIRowset);
}
else
goto END;
fPass=TRUE;
END:
CleanUpFromExecute();
//Create an index on the first column of the table
g_pCTable->CreateIndex(1);
if(fPass)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCICMDPRPT_KAGERA::Terminate()
{
return (TCICMDPRPT::Terminate());
}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(TCExtendedErrors)
//*-----------------------------------------------------------------------
//| Test Case: TCExtendedErrors - Extended Errors
//| Created: 07/30/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCExtendedErrors::Init()
{
if(TCICMDPRPT::Init())
return TRUE;
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc Valid ICommandProperties calls with previous error object existing.
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_1()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
DBPROPIDSET pPropertyIDSets;
DBPROPID rgPropertyIDs;
ULONG cPrpt=0;
DBPROPSET *pDBPrpts=NULL;
BOOL fTest=FALSE;
HRESULT hr;
//For each method of the interface, first create an error object on
//the current thread, then try get S_OK from the ICommandProperties method.
//We then check extended errors to verify nothing is set since an
//error object shouldn't exist following a successful call.
//Verify the property is supported
if( !VerifySupported(IDX_MAXROWS) ||
!(g_rgDBProperties[IDX_MAXROWS].fSettable))
return TEST_SKIPPED;
//Set a rowset property DBPROP_MAXROWS
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_ROWSET;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_MAXROWS;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet.rgProperties=&DBPrpt;
//create an error object
m_pExtError->CauseError();
//Set property value to 0
if(CHECK(hr=m_pICommandProperties->SetProperties(1,&DBPrptSet),S_OK))
//Do extended check following SetProperties
fTest = XCHECK(m_pICommandProperties, IID_ICommandProperties, hr);
else
{
fTest = FALSE;
goto END;
}
//Set value=1
DBPrpt.vValue.lVal=1;
//Call SetProperties with cPropertySets=0, verify SetProperties does not
//do anything. Therefore, lVal should stay at 0.
if(!CHECK(m_pICommandProperties->SetProperties(0,&DBPrptSet),S_OK))
{
fTest = FALSE;
goto END;
}
pPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
pPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_MAXROWS;
pPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
//create an error object
m_pExtError->CauseError();
//Call GetProperties to verify the property is set
if(CHECK(hr=m_pICommandProperties->GetProperties(1,&pPropertyIDSets,&cPrpt,
&pDBPrpts),S_OK))
//Do extended check following GetProperties
fTest &= XCHECK(m_pICommandProperties, IID_ICommandProperties, hr);
if(!COMPARE(pDBPrpts->rgProperties->vValue.lVal, 0))
{
fTest = FALSE;
goto END;
}
END:
//Free memory from GetProperties
FreeProperties(&cPrpt,&pDBPrpts);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Invalid SetProperties call with previous error object existing
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_2()
{
BOOL fTest = FALSE;
HRESULT hr;
//For each method of the interface, first create an error object on
//the current thread, then try get a failure from the ICommandProperties method.
//We then check extended errors to verify the right extended error behavior.
//create an error object
m_pExtError->CauseError();
if(CHECK(hr=m_pICommandProperties->SetProperties(1,NULL),E_INVALIDARG))
//Do extended check following SetProperties
fTest = XCHECK(m_pICommandProperties, IID_ICommandProperties, hr);
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Invalid SetProperties call with no previous error object existing
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_3()
{
DBPROPSET DBPrptSet;
DBPROP DBPrpt;
HRESULT hr;
BOOL fTest = FALSE;
//For each method of the interface, with no error object on
//the current thread, try get a failure from the ICommandProperties method.
//We then check extended errors to verify the right extended error behavior.
memset(&DBPrpt ,0, sizeof(DBPROP));
DBPrptSet.guidPropertySet=DBPROPSET_DATASOURCE;
DBPrptSet.cProperties=1;
DBPrpt.dwPropertyID=DBPROP_COMMANDTIMEOUT;
DBPrpt.dwOptions=DBPROPOPTIONS_REQUIRED;
DBPrpt.vValue.vt=VT_I4;
DBPrpt.vValue.lVal=0;
DBPrptSet.rgProperties=&DBPrpt;
if(CHECK(hr=m_pICommandProperties->SetProperties(1,&DBPrptSet),DB_E_ERRORSOCCURRED))
//Do extended check following SetProperties
fTest = XCHECK(m_pICommandProperties, IID_ICommandProperties, hr);
//Property is not supported
if(!COMPARE(DBPrptSet.rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
return TEST_FAIL;
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Invalid GetProperties call with previous error object existing
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_4()
{
DBPROPIDSET rgPropertyIDSets;
DBPROPID rgPropertyIDs;
DBPROPSET *prgPropertySets=NULL;
ULONG cPropertySets;
BOOL fTest=FALSE;
HRESULT hr;
//For each method of the interface, first create an error object on
//the current thread, then try get a failure from the ICommandProperties method.
//We then check extended errors to verify the right extended error behavior.
rgPropertyIDSets.guidPropertySet=DBPROPSET_ROWSET;
rgPropertyIDSets.cPropertyIDs=1;
rgPropertyIDs=DBPROP_AUTH_USERID;
rgPropertyIDSets.rgPropertyIDs=&rgPropertyIDs;
//create an error object
m_pExtError->CauseError();
if(CHECK(hr=m_pICommandProperties->GetProperties(1,&rgPropertyIDSets,
&cPropertySets,&prgPropertySets), DB_E_ERRORSOCCURRED))
//Do extended check following GetProperties
fTest = XCHECK(m_pICommandProperties, IID_ICommandProperties, hr);
//Property is not supported
if(!COMPARE(prgPropertySets->rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
{
fTest = FALSE;
goto END;
}
END:
//Free memory from GetProperties
FreeProperties(&cPropertySets,&prgPropertySets);
if(fTest)
return TRUE;
else
return FALSE;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc Invalid GetProperties call with no previous error object existing
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_5()
{
ULONG cPropertySets;
DBPROPSET *pPropertySets=NULL;
HRESULT hr;
BOOL fTest = FALSE;
//For each method of the interface, with no error object on
//the current thread, try get a failure from the ICommandProperties method.
//We then check extended errors to verify the right extended error behavior.
if(CHECK(hr=m_pICommandProperties->GetProperties(1,NULL,
&cPropertySets,&pPropertySets), E_INVALIDARG))
//Do extended check following GetProperties
fTest = XCHECK(m_pICommandProperties, IID_ICommandProperties, hr);
//When an error occurs *pcPropertySets is set to 0
if(!COMPARE(cPropertySets, 0))
fTest = FALSE;
//When an error occurs *prgPropertySets is a null pointer
if(!COMPARE(pPropertySets, NULL))
fTest = FALSE;
if(fTest)
return TEST_PASS;
else
return TEST_FAIL;
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCExtendedErrors::Terminate()
{
return (TCICMDPRPT::Terminate());
} // }}
// }}
// }}