//--------------------------------------------------------------------
// Microsoft OLE DB Testing
//
// Copyright 1995-2000 Microsoft Corporation.  All Rights Reserved.
//
// @doc 
//
// @module ISESPRPT.CPP | Source code for autotest ISESPRPT.CPP.
//

#include "MODStandard.hpp"	// Standard headers, precompiled in modcore.cpp
#define  DBINITCONSTANTS	// Must be defined to initialize constants in OLEDB.H
#define  INITGUID
#include "ISesPrpt.h"		// Testcase's header

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Module Values
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// {{ TCW_MODULE_GLOBALS
DECLARE_MODULE_CLSID = { 0xac817440, 0x9e1f, 0x11d0, { 0x99, 0x51, 0x00, 0xaa, 0x00, 0x37, 0xda, 0x9b }};
DECLARE_MODULE_NAME("ISessionProperties");
DECLARE_MODULE_OWNER("Microsoft");
DECLARE_MODULE_DESCRIP("Test module for ISessionProperties Interfaces");
DECLARE_MODULE_VERSION(831416337);
// TCW_WizardVersion(2)
// TCW_Automation(True)
// }} TCW_MODULE_GLOBALS_END

//Has function InitGetPropDefault been executed yet?
BOOL g_fInitGetPropDefault=FALSE;
BOOL g_fExtraSesProp=FALSE;

//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
	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   vtType		vDefault				Description           
//================			============						==========	=========	======		========				    ============     
&DBPROPSET_COLUMN,			DBPROP_COL_AUTOINCREMENT,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Autoincrement\0",
&DBPROPSET_COLUMN,			DBPROP_COL_DEFAULT,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Default\0",
&DBPROPSET_COLUMN,			DBPROP_COL_DESCRIPTION,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},  	L"Description\0",
&DBPROPSET_COLUMN,			DBPROP_COL_FIXEDLENGTH,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Fixed Length\0",
&DBPROPSET_COLUMN,			DBPROP_COL_INCREMENT,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Increment\0",
&DBPROPSET_COLUMN,			DBPROP_COL_ISLONG,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Is Long\0",
&DBPROPSET_COLUMN,			DBPROP_COL_NULLABLE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Nullable\0",
&DBPROPSET_COLUMN,			DBPROP_COL_PRIMARYKEY,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Primary Key\0",
&DBPROPSET_COLUMN,			DBPROP_COL_SEED,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Seed\0",
&DBPROPSET_COLUMN,			DBPROP_COL_UNIQUE,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Unique\0",
&DBPROPSET_COLUMN,			DBPROP_COLUMNLCID,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Column LCID\0",
&DBPROPSET_DATASOURCE,		DBPROP_CURRENTCATALOG,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Current Catalog\0",
&DBPROPSET_DATASOURCE,		DBPROP_MULTIPLECONNECTIONS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Multiple Connections\0",
&DBPROPSET_DATASOURCE,		DBPROP_RESETDATASOURCE,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Reset Datasource\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ACTIVESESSIONS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Active Sessions\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ALTERCOLUMN,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Alter Column Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ASYNCTXNABORT,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Asynchable Abort\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ASYNCTXNCOMMIT,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Asynchable Commit\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_BYREFACCESSORS,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Pass By Ref Accessors\0", 
&DBPROPSET_DATASOURCEINFO,	DBPROP_CATALOGLOCATION,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Catalog Location\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_CATALOGTERM,		            FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},  	L"Catalog Term\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_CATALOGUSAGE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Catalog Usage\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_COLUMNDEFINITION,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Column Definition\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_COMSERVICES,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"COM Service Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_CONCATNULLBEHAVIOR,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"NULL Concatenation Behavior\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_CONNECTIONSTATUS,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Connection Status\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DATASOURCENAME,				FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},  	L"Data Source Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DATASOURCEREADONLY,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Read-Only Data Source\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DATASOURCE_TYPE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Data Source Type\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DBMSNAME,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"DBMS Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DBMSVER,						FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"DBMS Version\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DSOTHREADMODEL,	            FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Data Source Object Threading Model\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_GENERATEURL,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"URL Generation\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_GROUPBY,						FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"GROUP BY Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_HETEROGENEOUSTABLES,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Heterogeneous Table Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_IDENTIFIERCASE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Identifier Case Sensitivity\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXINDEXSIZE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Index Size\0",	
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXOPENCHAPTERS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Open Chapters\0",	
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXROWSIZE,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Row Size\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXROWSIZEINCLUDESBLOB,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Maximum Row Size Includes BLOB\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXTABLESINSELECT,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Tables in SELECT\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MULTIPLEPARAMSETS,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Multiple Parameter Sets\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MULTIPLERESULTS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Multiple Results\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MULTIPLESTORAGEOBJECTS,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Multiple Storage Objects\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MULTITABLEUPDATE,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Multi-Table Update\0",  
&DBPROPSET_DATASOURCEINFO,	DBPROP_NULLCOLLATION,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"NULL Collation Order\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_OLEOBJECTS,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"OLE Object Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_OPENROWSETSUPPORT,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Open Rowset Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ORDERBYCOLUMNSINSELECT,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ORDER BY Columns in Select List\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_OUTPUTPARAMETERAVAILABILITY,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Output Parameter Availability\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PERSISTENTIDTYPE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Persistent ID Type\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PREPAREABORTBEHAVIOR,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Prepare Abort Behavior\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PREPARECOMMITBEHAVIOR,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Prepare Commit Behavior\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROCEDURETERM,				FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Procedure Term\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDERFRIENDLYNAME,		FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Provider Friendly Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDERMEMORY,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Provider Owned Memory\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDERFILENAME,			FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Provider Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDEROLEDBVER,			FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},  	L"OLE DB Version\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDERVER,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Provider Version\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_QUOTEDIDENTIFIERCASE,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Quoted Identifier Sensitivity\0", 
&DBPROPSET_DATASOURCEINFO,	DBPROP_ROWSETCONVERSIONSONCOMMAND,	FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Rowset Conversions on Command\0", 
&DBPROPSET_DATASOURCEINFO,	DBPROP_SCHEMATERM,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Schema Term\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SCHEMAUSAGE,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Schema Usage\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SERVERNAME,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Server Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SQLSUPPORT,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"SQL Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_STRUCTUREDSTORAGE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Structured Storage\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SUBQUERIES,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Subquery Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SUPPORTEDTXNDDL,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Transaction DDL\0", 
&DBPROPSET_DATASOURCEINFO,	DBPROP_SUPPORTEDTXNISOLEVELS,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Isolation Levels\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SUPPORTEDTXNISORETAIN,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Isolation Retention\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_TABLETERM,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Table Term\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_USERNAME,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"User Name\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_AUTOUPDATE,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Auto-Update\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_CLUSTERED,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Clustered\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_FILLFACTOR,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Fill Factor\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_INITIALSIZE,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Initial Size\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_NULLCOLLATION,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"NULL Collation\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_NULLS,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"NULL Keys\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_PRIMARYKEY,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Primary Key\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_SORTBOOKMARKS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Sort Bookmarks\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_TEMPINDEX,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Temporary Index\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_TYPE,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Index Type\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_UNIQUE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Unique\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_CACHE_AUTHINFO,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Cache Authentication\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_ENCRYPT_PASSWORD,		FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Encrypt Password\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_INTEGRATED,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Integrated Security\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_MASK_PASSWORD,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Mask Password\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_PASSWORD,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Password\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_PERSIST_ENCRYPTED,		FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Persist Encrypted\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO,	FALSE,	TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Persist Security Info\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_USERID,					FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"User ID\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_ASYNCH,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Asynchronous Processing\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_BINDFLAGS,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Bind Flags\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_CATALOG,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Initial Catalog\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_DATASOURCE,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Data Source\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_GENERALTIMEOUT,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"General Timeout\0",
#ifdef _WIN64
&DBPROPSET_DBINIT,			DBPROP_INIT_HWND,					FALSE,		TRUE,		VT_I8,		{VT_EMPTY,0,0,0,0},		L"Window Handle\0",
#else
&DBPROPSET_DBINIT,			DBPROP_INIT_HWND,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Window Handle\0",
#endif
&DBPROPSET_DBINIT,			DBPROP_INIT_IMPERSONATION_LEVEL,	FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Impersonation Level\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_LCID,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Locale Identifier\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_LOCATION,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Location\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_LOCKOWNER,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Lock Owner\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_MODE,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Mode\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_OLEDBSERVICES,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"OLE DB Services\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_PROMPT,					FALSE,		TRUE,		VT_I2,		{VT_EMPTY,0,0,0,0},		L"Prompt\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_PROTECTION_LEVEL,		FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Protection Level\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_PROVIDERSTRING,			FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Extended Properties\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_TIMEOUT,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Connect Timeout\0",
&DBPROPSET_ROWSET,			DBPROP_ABORTPRESERVE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Preserve on Abort\0",
&DBPROPSET_ROWSET,			DBPROP_ACCESSORDER,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Access Order\0",
&DBPROPSET_ROWSET,			DBPROP_APPENDONLY,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Append-Only Rowset\0",
&DBPROPSET_ROWSET,			DBPROP_BLOCKINGSTORAGEOBJECTS,		FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Blocking Storage Objects\0",
&DBPROPSET_ROWSET,			DBPROP_BOOKMARKINFO,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Bookmark Information\0", 
&DBPROPSET_ROWSET,			DBPROP_BOOKMARKS,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Use Bookmarks\0", 
&DBPROPSET_ROWSET,			DBPROP_BOOKMARKSKIPPED,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Skip Deleted Bookmarks\0",
&DBPROPSET_ROWSET,			DBPROP_BOOKMARKTYPE,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Bookmark Type\0",
&DBPROPSET_ROWSET,			DBPROP_CACHEDEFERRED,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Cache Deferred Columns\0",
&DBPROPSET_ROWSET,			DBPROP_CANFETCHBACKWARDS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Fetch Backwards\0",
&DBPROPSET_ROWSET,			DBPROP_CANHOLDROWS,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Hold Rows\0",
&DBPROPSET_ROWSET,			DBPROP_CANSCROLLBACKWARDS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Scroll Backwards\0",
&DBPROPSET_ROWSET,			DBPROP_CHANGEINSERTEDROWS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Change Inserted Rows\0",
&DBPROPSET_ROWSET,			DBPROP_CLIENTCURSOR,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Client Cursor\0",
&DBPROPSET_ROWSET,			DBPROP_COLUMNRESTRICT,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Column Privileges\0",
&DBPROPSET_ROWSET,			DBPROP_COMMANDTIMEOUT,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Command Time Out\0",
&DBPROPSET_ROWSET,			DBPROP_COMMITPRESERVE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Preserve on Commit\0",
&DBPROPSET_ROWSET,			DBPROP_DEFERRED,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Defer Column\0",
&DBPROPSET_ROWSET,			DBPROP_DELAYSTORAGEOBJECTS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Delay Storage Object Updates\0",
&DBPROPSET_ROWSET,			DBPROP_FINDCOMPAREOPS,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Find Operations\0",
&DBPROPSET_ROWSET,			DBPROP_HIDDENCOLUMNS,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Hidden Columns\0",
&DBPROPSET_ROWSET,			DBPROP_IMMOBILEROWS,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Immobile Rows\0",
&DBPROPSET_ROWSET,			DBPROP_LITERALBOOKMARKS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Literal Bookmarks\0",
&DBPROPSET_ROWSET,			DBPROP_LITERALIDENTITY,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Literal Row Identity\0",	
&DBPROPSET_ROWSET,			DBPROP_LOCKMODE,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Lock Mode\0",	
&DBPROPSET_ROWSET,			DBPROP_MAXOPENROWS,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Open Rows\0",
&DBPROPSET_ROWSET,			DBPROP_MAXPENDINGROWS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Maximum Pending Rows\0",
&DBPROPSET_ROWSET,			DBPROP_MAXROWS,						FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Rows\0",
&DBPROPSET_ROWSET,			DBPROP_MAYWRITECOLUMN,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Column Writable\0",
&DBPROPSET_ROWSET,			DBPROP_MEMORYUSAGE,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Memory Usage\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFICATIONGRANULARITY,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Notification Granularity\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFICATIONPHASES,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Notification Phases\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYCOLUMNSET,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Column Set Notification\0", 
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWDELETE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Delete Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWFIRSTCHANGE,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row First Change Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWINSERT,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Insert Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWRESYNCH,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Resynchronization Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWSETCHANGED,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Rowset Change Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE,	FALSE,	FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Rowset Fetch Position Change Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWSETRELEASE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Rowset Release Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWUNDOCHANGE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Undo Change Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWUNDODELETE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Undo Delete Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWUNDOINSERT,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Undo Insert Notification\0",			
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWUPDATE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Update Notification\0",
&DBPROPSET_ROWSET,			DBPROP_ORDEREDBOOKMARKS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Bookmarks Ordered\0",  
&DBPROPSET_ROWSET,			DBPROP_OTHERINSERT,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Others' Inserts Visible\0",
&DBPROPSET_ROWSET,			DBPROP_OTHERUPDATEDELETE,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Others' Changes Visible\0",
&DBPROPSET_ROWSET,			DBPROP_OWNINSERT,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Own Inserts Visible\0", 
&DBPROPSET_ROWSET,			DBPROP_OWNUPDATEDELETE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Own Changes Visible\0",
&DBPROPSET_ROWSET,			DBPROP_QUICKRESTART,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Quick Restart\0",
&DBPROPSET_ROWSET,			DBPROP_REENTRANTEVENTS,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Reentrant Events\0",
&DBPROPSET_ROWSET,			DBPROP_REMOVEDELETED,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Remove Deleted Rows\0",
&DBPROPSET_ROWSET,			DBPROP_REPORTMULTIPLECHANGES,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Report Multiple Changes\0",
&DBPROPSET_ROWSET,			DBPROP_RETURNPENDINGINSERTS,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Return Pending Inserts\0",
&DBPROPSET_ROWSET,			DBPROP_ROW_BULKOPS,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Bulk Operations\0",
&DBPROPSET_ROWSET,			DBPROP_ROWRESTRICT,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Row Privileges\0",
&DBPROPSET_ROWSET,			DBPROP_ROWSET_ASYNCH,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Asynchronous Rowset Processing\0",
&DBPROPSET_ROWSET,			DBPROP_ROWTHREADMODEL,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Threading Model\0",
&DBPROPSET_ROWSET,			DBPROP_SERVERCURSOR,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Server Cursor\0",
&DBPROPSET_ROWSET,			DBPROP_SERVERDATAONINSERT,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Server Data on Insert\0",
&DBPROPSET_ROWSET,			DBPROP_STORAGEFLAGS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Storage Flags\0",
&DBPROPSET_ROWSET,			DBPROP_STRONGIDENTITY,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Strong Row Identity\0",
&DBPROPSET_ROWSET,			DBPROP_TRANSACTEDOBJECT,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Objects Transacted\0",
&DBPROPSET_ROWSET,			DBPROP_UNIQUEROWS,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Unique Rows\0",
&DBPROPSET_ROWSET,			DBPROP_UPDATABILITY,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Updatability\0",			
&DBPROPSET_ROWSET,			DBPROP_IAccessor,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IAccessor\0",
&DBPROPSET_ROWSET,			DBPROP_IBindResource,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IBindResource\0",
&DBPROPSET_ROWSET,			DBPROP_IChapteredRowset,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IChapteredRowset\0",
&DBPROPSET_ROWSET,			DBPROP_IColumnsInfo,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IColumnsInfo\0",
&DBPROPSET_ROWSET,			DBPROP_IColumnsInfo2,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IColumnsInfo2\0",
&DBPROPSET_ROWSET,			DBPROP_IColumnsRowset,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IColumnsRowset\0",
&DBPROPSET_ROWSET,			DBPROP_IConnectionPointContainer,	FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IConnectionPointContainer\0",
&DBPROPSET_ROWSET,			DBPROP_IConvertType,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IConvertType\0",
&DBPROPSET_ROWSET,			DBPROP_ICreateRow,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ICreateRow\0",
&DBPROPSET_ROWSET,			DBPROP_IDBAsynchStatus,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IDBAsynchStatus\0",
&DBPROPSET_ROWSET,			DBPROP_IDBBinderProperties,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IDBBinderProperties\0",
&DBPROPSET_ROWSET,			DBPROP_IGetRow,						FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IGetRow\0",
&DBPROPSET_ROWSET,			DBPROP_IGetSession,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IGetSession\0",
&DBPROPSET_ROWSET,			DBPROP_IGetSourceRow,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IGetSourceRow\0",
&DBPROPSET_ROWSET,			DBPROP_IMultipleResults,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IMultipleResults\0",
&DBPROPSET_ROWSET,			DBPROP_IParentRowset,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IParentRowset\0",
&DBPROPSET_ROWSET,			DBPROP_IRegisterProvider,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRegisterProvider\0",
&DBPROPSET_ROWSET,			DBPROP_IRow,						FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRow\0",
&DBPROPSET_ROWSET,			DBPROP_IRowChange,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowChange\0",
&DBPROPSET_ROWSET,			DBPROP_IRowSchemaChange,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowSchemaChange\0",
&DBPROPSET_ROWSET,			DBPROP_IRowset,						FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowset\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetChange,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetChange\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetCurrentIndex,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetCurrentIndex\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetFind,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetFind\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetIdentity,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetIdentity\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetIndex,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetIndex\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetInfo,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetInfo\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetLocate,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"IRowsetLocate\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetRefresh,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"IRowsetRefresh\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetResynch,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetResynch\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetScroll,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetScroll\0", 
&DBPROPSET_ROWSET,			DBPROP_IRowsetUpdate,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetUpdate\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetView,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetView\0",
&DBPROPSET_ROWSET,			DBPROP_IScopedOperations,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IScopedOperations\0",
&DBPROPSET_ROWSET,			DBPROP_ISupportErrorInfo,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ISupportErrorInfo\0",
&DBPROPSET_ROWSET,			DBPROP_ILockBytes,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ILockBytes\0",
&DBPROPSET_ROWSET,			DBPROP_ISequentialStream,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ISequentialStream\0",
&DBPROPSET_ROWSET,			DBPROP_IStorage,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IStorage\0",
&DBPROPSET_ROWSET,			DBPROP_IStream,						FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IStream\0",
&DBPROPSET_SESSION,			DBPROP_SESS_AUTOCOMMITISOLEVELS,	FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Autocommit Isolation Levels\0",
&DBPROPSET_TABLE,			DBPROP_TBL_TEMPTABLE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Temporary Table\0",
&DBPROPSET_TRUSTEE,			DBPROP_TRUSTEE_USERNAME,			FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Trustee User Name\0",
&DBPROPSET_TRUSTEE,			DBPROP_TRUSTEE_AUTHENTICATION,		FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Trustee Authentication\0",
&DBPROPSET_TRUSTEE,			DBPROP_TRUSTEE_NEWAUTHENTICATION,	FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"New Trustee Authentication\0",
&DBPROPSET_VIEW,			DBPROP_FILTERCOMPAREOPS,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Filter Operations\0",
&DBPROPSET_VIEW,			DBPROP_IAccessor,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IAccessor\0",
&DBPROPSET_VIEW,			DBPROP_IColumnsInfo,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IColumnsInfo\0",
&DBPROPSET_VIEW,			DBPROP_ISupportErrorInfo,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ISupportErrorInfo\0",
&DBPROPSET_VIEW,			DBPROP_IViewChapter,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IViewChapter\0",
&DBPROPSET_VIEW,			DBPROP_IViewFilter,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IViewFilter\0",
&DBPROPSET_VIEW,			DBPROP_IViewRowset,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IViewRowset\0",
&DBPROPSET_VIEW,			DBPROP_IViewSort,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IViewSort\0",
&DBPROPSET_VIEW,			DBPROP_MAXORSINFILTER,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum OR Conditions\0",	
&DBPROPSET_VIEW,			DBPROP_MAXSORTCOLUMNS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Sort Columns\0",	
&DBPROPSET_VIEW,			DBPROP_SORTONINDEX,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Sort on Index\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
// NONE

const ULONG  IDX_COLUMN_START							=IDX_COL_AUTOINCREMENT;
const ULONG  IDX_COLUMN_END								=IDX_COLUMNLCID;

const ULONG  IDX_DATASOURCE_START						=IDX_CURRENTCATALOG;
const ULONG  IDX_DATASOURCE_END							=IDX_RESETDATASOURCE;
														
const ULONG  IDX_DATASOURCEINFO_START					=IDX_ACTIVESESSIONS;
const ULONG  IDX_DATASOURCEINFO_END						=IDX_USERNAME;

const ULONG  IDX_INDEX_START							=IDX_INDEX_AUTOUPDATE;
const ULONG  IDX_INDEX_END								=IDX_INDEX_UNIQUE;

const ULONG  IDX_DBINIT_START							=IDX_AUTH_CACHE_AUTHINFO;
const ULONG  IDX_DBINIT_END								=IDX_INIT_TIMEOUT;

const ULONG  IDX_ROWSET_START							=IDX_ABORTPRESERVE;
const ULONG  IDX_ROWSET_END								=IDX_ISTREAM;

const ULONG  IDX_SESSION_START							=IDX_SESS_AUTOCOMMITISOLEVELS;
const ULONG  IDX_SESSION_END							=IDX_SESS_AUTOCOMMITISOLEVELS;

const ULONG  IDX_TABLE_START							=IDX_TBL_TEMPTABLE;
const ULONG  IDX_TABLE_END								=IDX_TBL_TEMPTABLE;

const ULONG  IDX_TRUSTEE_START							=IDX_TRUSTEE_USERNAME;
const ULONG  IDX_TRUSTEE_END							=IDX_TRUSTEE_NEWAUTHENTICATION;

const ULONG  IDX_VIEW_START								=IDX_FILTERCOMPAREOPS;
const ULONG  IDX_VIEW_END								=IDX_SORTONINDEX;

const ULONG  IDX_OLEDB_START							=IDX_COLUMN_START;
const ULONG  IDX_OLEDB_END								=IDX_VIEW_END;

const ULONG  IDX_PROVIDERSPEC_END						=IDX_VIEW_END;

//--------------------------------------------------------------------
// @func Module level initialization routine
//
// @rdesc Success or Failure
// 		@flag  TRUE  | Successful initialization
//		@flag  FALSE | Initialization problems
//
BOOL ModuleInit(CThisTestModule * pThisTestModule)
{
	// Initialize the Globals every time
	g_fInitGetPropDefault=g_fExtraSesProp=FALSE;
	
	// Set all of the fSupported back to FALSE
	for(ULONG i=0; i<g_cDBProperties; i++)
		g_rgDBProperties[i].fSupported = FALSE;

	//Get a Session Object
	if(ModuleCreateDBSession(pThisTestModule))
	{
		//If we made it this far, everything has succeeded
		return TRUE;
	}
	
	return FALSE;
}	
  

//--------------------------------------------------------------------
// @func Module level termination routine
//
// @rdesc Success or Failure
// 		@flag  TRUE  | Successful initialization
//		@flag  FALSE | Initialization problems
//
BOOL ModuleTerminate(CThisTestModule * pThisTestModule)
{
	ULONG			ulcounter=0;

	//Need to loop through all the variants and clear them
	for(ulcounter=0; ulcounter < g_cDBProperties; ulcounter++)
		VariantClear(&(g_rgDBProperties[ulcounter].vDefault));

	//Free the interface we got in ModuleCreateDBSession()
	return ModuleReleaseDBSession(pThisTestModule);
}	

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Base Class Section
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// @class TCIDProperties Base Class for all ISessionProperties Testcases
class TCIDProperties : public CRowsetObject
{
	public:
		// @cmember Constructor
		TCIDProperties(WCHAR *wstrTestCaseName) : CRowsetObject(wstrTestCaseName)
		{
			m_pIDBProperties		= NULL;
			m_pISessionProperties	= NULL;
			m_cPropertyIDSets		= 0;
			*m_rgPropertyIDs		= NULL;
			m_cPropertySets			= 0;
			m_pcPropertySets		= 0;
			m_prgPropertySets		= NULL;
			m_fSuccess				= TEST_FAIL;
		};

		// @cmember Destructor
		virtual ~TCIDProperties(){};

		// @cmember: Check and set properties from ISessionProperties::GetProperties
		BOOL	InitGetPropDefault();
		// @cmember: Get a Session property that is not settable
		BOOL	DBSessionNotSettable(DBPROPID *dwPropertyID);
		// @cmember: Get a Session property that is settable
		BOOL	DBSessionSettable(DBPROPID *dwPropertyID);
		// @cmember: Get a Session property that is not supported
		BOOL	DBSessionNotSupported(DBPROPID *dwPropertyID);
		// @cmember: Get a DBInit property that is not supported
		BOOL	DBInitNotSupported(DBPROPID *dwPropertyID);
		// @mfunc: Reset the ISessionProperties
		BOOL	ResetProperties();
		// @mfunc: Verify the property is set or unset correctly
		BOOL	VerifyProperty(ULONG cPrpt);
		// @mfunc: Get the attribute of the property
		EPROPERTYATTR GetPrptAttr(const ULONG cPrpt);
		// @mfunc: Verify the property is not supported
		BOOL	VerifyNotSupported(ULONG cPrpt, EPROPERTYATTR ePrptAttr);
		// @mfunc: Verify the property is not settable
		BOOL	VerifyPropertyNotSettable(ULONG	cPrpt, BOOL fSet=TRUE);
		// @mfunc: Verify the property is settable
		BOOL	VerifyPropertySettable(ULONG cPrpt, BOOL fSet=TRUE);
		// @mfunc: Initialize the property set
		BOOL	InitDBPropSet(const ULONG cPrpt, DBPROPSET *pDBPropSet, BOOL fSet);
		// @mfunc: Verify the property set return is correct
		BOOL	VerifyDBPropSet(const ULONG	cPrpt, DBPROPSET *pDBPropSet,
					DBPROPSTATUS dwStatus, DBPROPOPTIONS dwOptions, BOOL fSet);
		// @mfunc: Initialize the property ID set
		BOOL	InitDBPropIDSet(const ULONG cPrpt, DBPROPIDSET *pDBPropIDSet);
		// @mfunc: Verify that get property returns the corret information
		BOOL	VerifyDBPropGet(const ULONG	cPrpt, DBPROPSET *pDBPropSet, DBPROPSTATUS dwStatus, BOOL	fSet);
		// @mfunc: Verify default values returned from properties
		BOOL	VerifyDBPropDefault(ULONG cPrpt, DBPROPSET *pDBPropSet, BOOL fAfterRowset);
		// @mfunc: Check to see if the Property is Writable
		void WritableProperty(ULONG cPrpt);

	protected:
		//@cmember	IDBProperties Interface
		IDBProperties *		m_pIDBProperties;
		//@cmember	IDBCreateCommand Interface
		ISessionProperties *m_pISessionProperties;
		//@cmember	Number of PropertyIDSets
		ULONG				m_cPropertyIDSets;
		//@cmember	Array of DBPROPIDSET structures
		DBPROPIDSET			m_rgPropertyIDSets[5];
		//@cmember	Array of DBPROPIDs
		DBPROPID			m_rgPropertyIDs[5];
		//@cmember	Number of PropertyIDSets
		ULONG				m_cPropertySets;
		//@cmember	Array of DBPROPSET structures
		DBPROPSET			m_rgPropertySets[5];
		//@cmember	Number of DBPROPSET structures returned from GetProperties
		ULONG				m_pcPropertySets;
		//@cmember	Array of DBPROPSET structures returned from GetProperties
		DBPROPSET *			m_prgPropertySets;
		//@cmember	Array of DBPROP for SetProperties
		DBPROP				m_rgProperties[2];
		//@cmember	Variation passed or failed
		int					m_fSuccess;
		//@cmember	HResult
		HRESULT    			m_hr;
};


//-----------------------------------------------------------------------------
//@mfunc: Intialize the default values for all Session properties
//
//-----------------------------------------------------------------------------
BOOL  TCIDProperties::InitGetPropDefault()
{
	TBEGIN;

	ULONG		cSetCount;
	ULONG		cPropertyCount;
	ULONG		cIndex;
	ULONG		cPropertySets=0;

	ULONG		cPrptSupported = 0;
	DBPROPSET	*pPropertySets = NULL;

	//Call ISessionProperties::GetProperties to get all the properties
	TESTC_(m_pISessionProperties->GetProperties(0,NULL,&cPropertySets,&pPropertySets),S_OK);

	//At least one property set should be returned
	if( !cPropertySets ) {
		TESTC(pPropertySets == NULL);
	}
	else {
		TESTC(pPropertySets != NULL);
	}

	//Set the default value for each property set
	for(cSetCount=0;cSetCount < cPropertySets; cSetCount++)
	{
		// Atleast 1 property must be returned
		TESTC(pPropertySets[cSetCount].cProperties > 0);
		
		// Total up all the properties
		cPrptSupported = cPrptSupported + pPropertySets[cSetCount].cProperties;
		
		//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_COLUMN) || 
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_DATASOURCE)    ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_DATASOURCEINFO)||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_DBINIT) ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_INDEX)  ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_ROWSET) ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_TABLE)  ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_TRUSTEE)||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_VIEW) )
				odtLog<<L"ERROR: An Invalid OLEDB PropertySet has been returned by ISessionProperties::GetProperties!\n";

			//Check to see if the Provider has Provider specific PropSets
			if( pPropertySets[cSetCount].guidPropertySet != DBPROPSET_SESSION )
				g_fExtraSesProp=TRUE;

			//Go through the whole list
			for(cIndex=IDX_OLEDB_START; 
			cIndex<=(g_fExtraSesProp ? IDX_PROVIDERSPEC_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;

					//Set the fSettable to TRUE
					WritableProperty(cIndex);

					//Copy the default
					if( pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt )
					{
						VariantCopy(&(g_rgDBProperties[cIndex].vDefault),
							&(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue));
					}

					//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 > (g_fExtraSesProp ? IDX_PROVIDERSPEC_END : IDX_OLEDB_END))
			{
				if(g_fExtraSesProp)
					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";
			}
		}
	}

CLEANUP:

	//Print out the total number of Session Properties
	odtLog<<wszTotalGetPropertiesIs<<cPrptSupported<<L" \n";
	
	if( g_fExtraSesProp )
		odtLog<<L"The Total includes Provider specific properties"<<L" \n";

	//Free memory from GetProperties
	FreeProperties(&cPropertySets, &pPropertySets);

	TRETURN;
}


//--------------------------------------------------------------------
//@cmember: Get a settable Session property
//
BOOL TCIDProperties::DBSessionSettable(DBPROPID *dwPropertyID)
{
	ULONG cPrpt;

	for(cPrpt=IDX_SESSION_START;cPrpt<=IDX_SESSION_END;cPrpt++)
	{
		if(g_rgDBProperties[cPrpt].fSettable && g_rgDBProperties[cPrpt].fSupported)
		{
			*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
			return TRUE;
		}
	}

	return FALSE;
}


//--------------------------------------------------------------------
//@cmember: Get a Session property that is not settable 
//
BOOL TCIDProperties::DBSessionNotSettable(DBPROPID *dwPropertyID)
{
	ULONG cPrpt;

	for(cPrpt=IDX_SESSION_START;cPrpt<=IDX_SESSION_END;cPrpt++)
	{
		if(!(g_rgDBProperties[cPrpt].fSettable) && (g_rgDBProperties[cPrpt].fSupported) )
		{
			*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
			return TRUE;
		}
	}

	return FALSE;
}


//--------------------------------------------------------------------
//@cmember: Get a not supported Session property
//
BOOL TCIDProperties::DBSessionNotSupported(DBPROPID *dwPropertyID)
{
	ULONG cPrpt;

	for(cPrpt=IDX_SESSION_START;cPrpt<=IDX_SESSION_END;cPrpt++)
	{
		if(!(g_rgDBProperties[cPrpt].fSupported))
		{
			*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
			return TRUE;
		}
	}

	return FALSE;
}


//--------------------------------------------------------------------
//@cmember: Get a not supported DBInit property
//
BOOL TCIDProperties::DBInitNotSupported(DBPROPID *dwPropertyID)
{
	ULONG cPrpt;

	for(cPrpt=IDX_DBINIT_START;cPrpt<=IDX_DBINIT_END;cPrpt++)
	{
		if(!(g_rgDBProperties[cPrpt].fSupported))
		{
			*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
			return TRUE;
		}
	}

	return FALSE;
}


//-----------------------------------------------------------------------------
// @cmember Recreate a new Session object, start from scratch
//
BOOL TCIDProperties::ResetProperties()
{
	// Reset to the defaults for GetProperties
	m_rgPropertyIDs[0] = DBPROP_SESS_AUTOCOMMITISOLEVELS;
	m_rgPropertyIDs[1] = DBPROP_SESS_AUTOCOMMITISOLEVELS;
	m_rgPropertyIDs[2] = DBPROP_SESS_AUTOCOMMITISOLEVELS;
	m_rgPropertyIDs[3] = DBPROP_SESS_AUTOCOMMITISOLEVELS;
	m_rgPropertyIDs[4] = DBPROP_SESS_AUTOCOMMITISOLEVELS;

	m_cPropertyIDSets  = 1;

	m_rgPropertyIDSets[0].cPropertyIDs  = 1;
	m_rgPropertyIDSets[0].rgPropertyIDs = &m_rgPropertyIDs[0];
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_SESSION;
	
	m_rgPropertyIDSets[1].cPropertyIDs  = 1;
	m_rgPropertyIDSets[1].rgPropertyIDs = &m_rgPropertyIDs[1];
	m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_SESSION;

	m_prgPropertySets  = INVALID(DBPROPSET*);
	m_pcPropertySets   = INVALID(ULONG);

	// Reset to the defaults for SetProperties
	m_rgProperties[0].dwPropertyID = DBPROP_SESS_AUTOCOMMITISOLEVELS;
	m_rgProperties[1].dwPropertyID = DBPROP_SESS_AUTOCOMMITISOLEVELS;

	m_rgPropertySets[0].cProperties     = 1;
   	m_rgPropertySets[0].rgProperties    = &m_rgProperties[0];
	m_rgPropertySets[0].guidPropertySet = DBPROPSET_SESSION;

	m_rgPropertySets[0].rgProperties->dwOptions = DBPROPOPTIONS_REQUIRED;
	m_rgPropertySets[0].rgProperties->colid = DB_NULLID;
	m_rgPropertySets[0].rgProperties->vValue.vt = VT_EMPTY;

	m_rgPropertySets[1].cProperties     = 1;
   	m_rgPropertySets[1].rgProperties    = &m_rgProperties[1];
	m_rgPropertySets[1].guidPropertySet = DBPROPSET_SESSION;

	m_rgPropertySets[1].rgProperties->dwOptions = DBPROPOPTIONS_REQUIRED;
	m_rgPropertySets[1].rgProperties->colid = DB_NULLID;
	m_rgPropertySets[1].rgProperties->vValue.vt = VT_EMPTY;

	return TRUE;
}


//-----------------------------------------------------------------------------
// @cmember Verify the attribute of the property
//
BOOL TCIDProperties::VerifyProperty
(	ULONG cPrpt			//@[in] The index to g_rgDBProperties array
)
{
	// Set the WRITABLE flag
	WritableProperty(cPrpt);

	// Check the property
	switch (GetPrptAttr(cPrpt))
	{
		case PROPERTY_NOT_SUPPORTED:
			return(VerifyNotSupported(cPrpt,PROPERTY_NOT_SUPPORTED));

		case PROPERTY_NOT_SETTABLE:
			BOOL fReturn;
			if(fReturn=VerifyPropertyNotSettable(cPrpt,TRUE))
			   fReturn=VerifyPropertyNotSettable(cPrpt,FALSE);
			return fReturn;

		case PROPERTY_SETTABLE:
				return(VerifyPropertySettable(cPrpt,TRUE));

		case PROPERTY_INVALID:
				odtLog<<wszIndexNotValid;
		default:
				return FALSE;
	}
}


//--------------------------------------------------------------------
//@mfunc: Get the attribute of the property
//
EPROPERTYATTR TCIDProperties::GetPrptAttr(const ULONG cPrpt)
{
	if(cPrpt >= g_cDBProperties)
		return PROPERTY_INVALID;

	//Check if the property is supported
	if(!g_rgDBProperties[cPrpt].fSupported)
			return PROPERTY_NOT_SUPPORTED;
	
	//Check if the property is settable.
	if(g_rgDBProperties[cPrpt].fSettable)
			return PROPERTY_SETTABLE;

	return (PROPERTY_NOT_SETTABLE);
}


//------------------------------------------------------------------------------------
// @cmember: Verify the property is not supported
//
BOOL TCIDProperties::VerifyNotSupported
(	ULONG cPrpt,				//@[in]: The index to g_rgDBProperties array
	EPROPERTYATTR ePrptAttr		//@[in]: PROPERTY_NOT_SUPPORTED
)
{
	TBEGIN;

	DBPROPIDSET			DBPropIDSet;
	DBPROPSET			DBPropSet;
	DBPROPID			DBPropID;
	DBPROP				DBProp;

	DBPROPSET			*pDBPropSet = NULL;
	ULONG				cDBPrpt     = 0;

	//Make sure the property is not supported
	TESTC(ePrptAttr == PROPERTY_NOT_SUPPORTED);

	//Start from scratch
	memset(&DBProp ,0,sizeof(DBPROP));

	//Init
	DBPropIDSet.rgPropertyIDs = &DBPropID;
	DBPropSet.rgProperties = &DBProp;

	//Try to unset the property
	TESTC(InitDBPropSet(cPrpt,&DBPropSet,FALSE));
	TESTC_(m_pISessionProperties->SetProperties(1,&DBPropSet), DB_E_ERRORSOCCURRED);
	TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSUPPORTED,DBPROPOPTIONS_REQUIRED,FALSE));

	//Try to set the property
	TESTC(InitDBPropSet(cPrpt,&DBPropSet,TRUE));
	TESTC_(m_pISessionProperties->SetProperties(1,&DBPropSet), DB_E_ERRORSOCCURRED);
	TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSUPPORTED,DBPROPOPTIONS_REQUIRED,TRUE));
	
	//Set the property with dwOptions = DBPROPOPTIONS_OPTIONAL
	TESTC(InitDBPropSet(cPrpt,&DBPropSet,3));
	TESTC_(m_pISessionProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED);
	TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSUPPORTED,DBPROPOPTIONS_OPTIONAL,3));
	
	//Free the BSTR allocated
	VariantClear(&DBPropSet.rgProperties->vValue);

	//Verify that the property is not supported by calling GetProperties
	TESTC(InitDBPropIDSet(cPrpt,&DBPropIDSet));
	TESTC_(m_pISessionProperties->GetProperties(1,&DBPropIDSet,&cDBPrpt,&pDBPropSet), DB_E_ERRORSOCCURRED);
	TESTC(VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_NOTSUPPORTED,TRUE));

CLEANUP:

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);
	
	TRETURN;
}


//-------------------------------------------------------------------------------------
// @cmember: Verify the property is not settable
//
BOOL TCIDProperties::VerifyPropertyNotSettable
(	ULONG	cPrpt,			//@[in]: The index to g_rgDBProperties array
	BOOL	fSet			//@[in]: To set or unset the property	
)
{
	TBEGIN;

	DBPROPIDSET	DBPropIDSet;
	DBPROPID	DBPropID;
	DBPROPSET	DBPropSet;
	DBPROP		DBProp;
	HRESULT		Exphr = S_OK;
	DBSTATUS	ExpStatus = DBPROPSTATUS_OK; 

	ULONG		cDBPrpt     = 0;
	DBPROPSET	*pDBPropSet = NULL;

	//Start from scratch
	memset(&DBProp ,0,sizeof(DBPROP));

	//Initialization
	DBPropIDSet.rgPropertyIDs = &DBPropID;
	DBPropSet.rgProperties = &DBProp;

	//Verify the property before execution by calling GetProperties.  
	TESTC(InitDBPropIDSet(cPrpt,&DBPropIDSet));
	TESTC_(m_pISessionProperties->GetProperties(1,&DBPropIDSet,&cDBPrpt,&pDBPropSet), S_OK);
	TESTC(cDBPrpt == 1);
	TESTC(pDBPropSet != NULL);
	TESTC(VerifyDBPropDefault(cPrpt,pDBPropSet,FALSE));

	//Setup the expected results
	if( fSet ) {
		Exphr = DB_E_ERRORSOCCURRED;
		ExpStatus = DBPROPSTATUS_NOTSETTABLE;
	}

	//Initialization to set/unset the property
	TESTC(InitDBPropSet(cPrpt,&DBPropSet,fSet));
	TESTC_(m_pISessionProperties->SetProperties(1,&DBPropSet), Exphr);
	TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,ExpStatus,DBPROPOPTIONS_REQUIRED,fSet));

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);

	//Verify the property before execution by calling GetProperties.  
	TESTC(InitDBPropIDSet(cPrpt,&DBPropIDSet));
	TESTC_(m_pISessionProperties->GetProperties(1,&DBPropIDSet,&cDBPrpt,&pDBPropSet), S_OK);
	TESTC(cDBPrpt == 1);
	TESTC(pDBPropSet != NULL);
	TESTC(VerifyDBPropDefault(cPrpt,pDBPropSet,FALSE));

	//Set the property with dwOptions = DBPROPOPTIONS_OPTIONAL
	TESTC(InitDBPropSet(cPrpt,&DBPropSet,3));
	TESTC_(m_pISessionProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED);
	TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSET,DBPROPOPTIONS_OPTIONAL,3));
	
	//Test for bad VT_TYPE for the Property
	if( V_VT(&DBPropSet.rgProperties->vValue) == VT_I4 )
		DBPropSet.rgProperties->vValue.vt = VT_BOOL;
	else
		DBPropSet.rgProperties->vValue.vt = VT_I4;

	TESTC_(m_pISessionProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED);
	if( DBProp.dwStatus	== DBPROPSTATUS_BADVALUE ) {
		TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_OPTIONAL,fSet));
	}
	else {
		TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSET,DBPROPOPTIONS_OPTIONAL,fSet));
	}

	//Set back to original VT_TYPE
	V_VT(&DBPropSet.rgProperties->vValue) = g_rgDBProperties[cPrpt].vtType;
	VariantClear(&DBPropSet.rgProperties->vValue);

	//Initialization to set/unset the property
	TESTC(InitDBPropSet(cPrpt,&DBPropSet,fSet));

	//Test for bad Value for the Property
	switch( g_rgDBProperties[cPrpt].vtType )
	{
		case VT_BOOL:
			V_BOOL(&DBPropSet.rgProperties->vValue) = -3;
			break;

		case VT_I2:
			V_I2(&DBPropSet.rgProperties->vValue) = -3;
			break;

		case VT_I4:
			V_I4(&DBPropSet.rgProperties->vValue) = -3;
			break;
		
		default:
			break;
	}

	TESTC_(m_pISessionProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED);
	if( DBProp.dwStatus	== DBPROPSTATUS_BADVALUE ) {
		TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,fSet));
	}
	else {
		TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSETTABLE,DBPROPOPTIONS_REQUIRED,fSet));
	}

	//Initialization to set/unset the property
	TESTC(InitDBPropSet(cPrpt,&DBPropSet,fSet));
	DBPropSet.rgProperties->dwOptions = 99;
	TESTC_(m_pISessionProperties->SetProperties(1,&DBPropSet), DB_E_ERRORSOCCURRED);
	TESTC(VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADOPTION,99,fSet));

CLEANUP:

	//Free memory from GetProperties
	VariantClear(&DBPropSet.rgProperties->vValue);
	FreeProperties(&cDBPrpt, &pDBPropSet);

	TRETURN;
}


//-------------------------------------------------------------------------------------
// @cmember: Verify the property is settable
//
BOOL TCIDProperties::VerifyPropertySettable
(	ULONG	cPrpt,			//@[in]: The index to g_rgDBProperties array
	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;
	VARTYPE		vt;
	HRESULT		Exphr = S_OK;
	DBSTATUS	ExpStatus = DBPROPSTATUS_OK; 
	ULONG_PTR	ulIsoLevels = 0;
	BOOL		fSetWorked = TRUE;

	//Need to be initialized before calling VariantCopy function
	memset(&DBProp ,0,sizeof(DBPROP));

	//Start from scratch
	if(!ResetProperties())
		return FALSE;

	//Initialization
	DBPropIDSet.rgPropertyIDs=&DBPropID;
	DBPropSet.rgProperties=&DBProp;
	DBPropSet.rgProperties->colid.uName.pwszName=NULL;

	//Set the property to the default value using VT_EMPTY
	if(!InitDBPropSet(cPrpt,&DBPropSet,2))
		goto END;

	//Set the properties
	if(!CHECK(m_pISessionProperties->SetProperties(1,&DBPropSet),S_OK))
		goto END;

	//Check the Status
	if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_OK))
		goto END;

	//Get the property and check the default values
	if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
		goto END;

	if(!CHECK(m_pISessionProperties->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_OPTIONAL
	if(!InitDBPropSet(cPrpt,&DBPropSet,3))
		goto END;

	//Set the properties
	m_hr = m_pISessionProperties->SetProperties(1,&DBPropSet);

	//As long as we get back S_OK with status = OK or
	if(m_hr==ResultFromScode(S_OK))
	{
		if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_OK))
			goto END;
	}
	else
	{
		//DB_E_ERRORSOCCURRED with BADVALUE it succeeded.
		//Session property validation is not deferred
		if(m_hr==ResultFromScode(DB_E_ERRORSOCCURRED))
		{
			if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_BADVALUE))
				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,DBPROPOPTIONS_OPTIONAL,3))
		goto END;
	
	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Set the properties
	m_hr = m_pISessionProperties->SetProperties(1,&DBPropSet);

	//As long as we get back S_OK with status = OK or
	if(m_hr==ResultFromScode(S_OK))
	{
		if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_OK))
			goto END;
	}
	else
	{
		//DB_E_ERRORSOCCURRED with BADVALUE it succeeded.
		if(m_hr==ResultFromScode(DB_E_ERRORSOCCURRED))
		{
			if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_BADVALUE))
				goto END;
		}
		else
			goto END;
	}

	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBProp.dwStatus,DBPROPOPTIONS_REQUIRED,TRUE))
		goto END;
	
	//Try to set/unset the property
	//Initialization
	if(!fSet)
	{
		//Free memory from SetProperties
		if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
			(DBPropSet.rgProperties->vValue.bstrVal))
			VariantClear(&DBPropSet.rgProperties->vValue);

		if(!InitDBPropSet(cPrpt,&DBPropSet,FALSE))
			goto END;
	}

	//Check to see if the IsoLevel is supported
	GetProperty(DBPROP_SUPPORTEDTXNISOLEVELS, DBPROPSET_DATASOURCEINFO, m_pIDBProperties, &ulIsoLevels);
	if( !(DBPropSet.rgProperties->vValue.lVal & ulIsoLevels) )
	{
		Exphr = DB_E_ERRORSOCCURRED;
		ExpStatus = DBPROPSTATUS_BADVALUE;
		fSetWorked = FALSE;
	}

	if(!CHECK(m_pISessionProperties->SetProperties(1,&DBPropSet),Exphr))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,ExpStatus,DBPROPOPTIONS_REQUIRED,fSet))
		goto END;

	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Verify that the property is set/unset by calling GetProperties
	//Init DBPROPID
	if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
		goto END;

	if(!CHECK(m_pISessionProperties->GetProperties(1,&DBPropIDSet,
				&cDBPrpt,&pDBPropSet),S_OK))
		goto END;

	//Make sure GetProperties returns the same value as SetPropeties.  
	if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,fSetWorked))
		goto END;

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Save the VT_TYPE
	vt = DBPropSet.rgProperties->vValue.vt;

	//Test for bad VT_TYPE for the Property
	if (g_rgDBProperties[cPrpt].vtType == VT_I4)
		DBPropSet.rgProperties->vValue.vt = VT_BOOL;
	else
		DBPropSet.rgProperties->vValue.vt = VT_I4;

	if(!CHECK(m_pISessionProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,fSet))
		goto END;

	//Set back to original VT_TYPE
	DBPropSet.rgProperties->vValue.vt = vt;

	//Free memory from SetProperties
	if( DBPropSet.rgProperties->vValue.vt == VT_BSTR )
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Test for bad Value for the Property
	if (g_rgDBProperties[cPrpt].vtType == VT_I2)
		V_I2(&DBPropSet.rgProperties->vValue) = -3;
	else if (g_rgDBProperties[cPrpt].vtType == VT_I4)
		V_I4(&DBPropSet.rgProperties->vValue) = -3;
	else if (g_rgDBProperties[cPrpt].vtType == VT_BOOL)
		V_BOOL(&DBPropSet.rgProperties->vValue) = -3;

	//Any BSTR can have any value
	if( g_rgDBProperties[cPrpt].vtType == VT_BSTR )
		goto SKIP;

	if(!CHECK(m_pISessionProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,fSet))
		goto END;

SKIP:
	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Test for bad dwOption for the Property
	DBPropSet.rgProperties->dwOptions = 99;

	if(!CHECK(m_pISessionProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADOPTION,99,fSet))
		goto END;

	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	fPass=TRUE;

END:
	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);
	return fPass;
}


//-----------------------------------------------------------------------------
//@mfunc: Set the DBPROPSET
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::InitDBPropSet
(	const ULONG		cPrpt, 
	DBPROPSET		*pDBPropSet,
	BOOL			fSet
)
{
	if(!(pDBPropSet->rgProperties))
		return FALSE;

	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_OPTIONAL;

	//Set value
	if((2 == fSet) || (cPrpt != IDX_SESS_AUTOCOMMITISOLEVELS))
	{
		pDBPropSet->rgProperties->vValue.vt=VT_EMPTY;
	}
	else
	{
		//Set the VT_TYPE to I4
		pDBPropSet->rgProperties->vValue.vt = VT_I4;

		// Set the Non Default value and the Default value
		if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_TI_READCOMMITTED))
			pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_TI_READCOMMITTED;
		else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_TI_READCOMMITTED))
			pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_TI_ISOLATED;
		else
			pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
	}

	return TRUE;
}


//-----------------------------------------------------------------------------
//@mfunc: Verify the property is set
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::VerifyDBPropSet
(	const ULONG		cPrpt, 
	DBPROPSET		*pDBPropSet, 
	DBPROPSTATUS	dwStatus,
	DBPROPOPTIONS	dwOptions,
	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;

	//Check dwOptions
	if( pDBPropSet->rgProperties->dwOptions != dwOptions )
		return FALSE;

	//Requesting the value of a property that has not been set and has
	//no default returns VT_EMPTY. 
	if ((!g_rgDBProperties[cPrpt].fSupported) || 
		(dwStatus == DBPROPSTATUS_BADVALUE    || 
		 dwStatus == DBPROPSTATUS_BADOPTION   || 
		 dwStatus == DBPROPSTATUS_NOTSETTABLE || 
		 dwStatus == DBPROPSTATUS_NOTSUPPORTED))
		return TRUE;
	else
	{
		//Check vValue
		if(pDBPropSet->rgProperties->vValue.vt != VT_I4)
			return FALSE;

		if ((fSet) &&
			(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_TI_READCOMMITTED) &&
			  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_TI_ISOLATED))  ||
			 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_TI_READCOMMITTED) &&
			  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_TI_READCOMMITTED))))
			return TRUE;
		else if ((!fSet) &&
			(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
			return TRUE;
		else
			return FALSE;
	}
}


//-----------------------------------------------------------------------------
//@mfunc: Set the DBPROPIDSET
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::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: VerifyDBPropGet
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::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;

	//If dwStatus is NOTSUPPORTED dwOptions, colid, and vValue are zeroed
	if(dwStatus == DBPROPSTATUS_NOTSUPPORTED)
	{
		if( (!pDBPropSet->rgProperties->colid.eKind) &&
			(!pDBPropSet->rgProperties->dwOptions) &&
			(!pDBPropSet->rgProperties->vValue.vt) )
			return TRUE;
		else
			return FALSE;
	}

	//Check vValue
	if(pDBPropSet->rgProperties->vValue.vt != VT_I4)
		return FALSE;

	if ((fSet) &&
		(g_rgDBProperties[cPrpt].vDefault.lVal != pDBPropSet->rgProperties->vValue.lVal))
		return TRUE;
	else if ((!fSet) &&
		(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
		return TRUE;
	else
		return FALSE;
}


//-----------------------------------------------------------------------------
//@mfunc: VerifyDBPropDefault: Verify the return value is the same as 
//			the default value.
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::VerifyDBPropDefault(ULONG cPrpt, DBPROPSET *pDBPropSet, BOOL fAfterRowset)
{
	TBEGIN;

	QTESTC(pDBPropSet->cProperties == 1);
	QTESTC(pDBPropSet->rgProperties != NULL);
	QTESTC(pDBPropSet->guidPropertySet == *(g_rgDBProperties[cPrpt].pGuidPropertySet));
	QTESTC(pDBPropSet->rgProperties->dwPropertyID == g_rgDBProperties[cPrpt].dwPropertyID);
	QTESTC(pDBPropSet->rgProperties->dwStatus == DBPROPSTATUS_OK);

	if( !(fAfterRowset && g_rgDBProperties[cPrpt].fSettable == FALSE) )
		QTESTC(pDBPropSet->rgProperties->vValue.lVal == g_rgDBProperties[cPrpt].vDefault.lVal);

CLEANUP:
	
	TRETURN;
}


//-----------------------------------------------------------------------------
//@mfunc: WritableProperty:
//
//-----------------------------------------------------------------------------
void TCIDProperties::WritableProperty(ULONG cPrpt)
{
	DBPROPIDSET		DBPropIDSet;
	ULONG			cPropertyInfoSets=0;
	DBPROPINFOSET *	pPropertyInfoSets=NULL;

	// Initialization
	DBPropIDSet.cPropertyIDs  = 1;
	DBPropIDSet.rgPropertyIDs = &g_rgDBProperties[cPrpt].dwPropertyID;
	memcpy(&DBPropIDSet.guidPropertySet,g_rgDBProperties[cPrpt].pGuidPropertySet,sizeof(GUID));

	// Set to False
	g_rgDBProperties[cPrpt].fSettable = FALSE;

	// Call IDBProperties::GetPropertyInfo to get all the properties
	TEST2C_(m_pIDBProperties->GetPropertyInfo(1,&DBPropIDSet,
			&cPropertyInfoSets,&pPropertyInfoSets, NULL), S_OK, DB_E_ERRORSOCCURRED);

	// At least one property set should be returned
	TESTC(cPropertyInfoSets);
	TESTC(pPropertyInfoSets	!= NULL);

	// Provider does not have to return what is in spec
	if( pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_WRITE )
		g_rgDBProperties[cPrpt].fSettable = TRUE;

CLEANUP:

	// Free memory from GetPropertyInfo
	FreeProperties(&cPropertyInfoSets, &pPropertyInfoSets);
	return;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Test Case Section
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


// {{ TCW_TEST_CASE_MAP(TCIDProperties_Parameters)
//--------------------------------------------------------------------
// @class ISessionProperties::Parameters
//
class TCIDProperties_Parameters : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();
	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCIDProperties_Parameters,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();
	
	// {{ TCW_TESTVARS()
	// @cmember GetProperties with a NULL pcPropertySets - E_INVALIDARG
	int Variation_1();
	// @cmember GetProperties with a NULL prgPropertySets - E_INVALIDARG
	int Variation_2();
	// @cmember GetProperties with cPropertyIDSets!=0, rgPropertyIDSets=NULL - E_INVALIDARG
	int Variation_3();
	// @cmember GetProperties with cPropertyIDs!=0, rgPropertyIDs=NULL - E_INVALIDARG
	int Variation_4();
	// @cmember GetProperties DBPROPSET_PROPERTIESINERROR with cPropertyIDs>0 - DB_E_ERRORSOCCURRED
	int Variation_5();
	// @cmember GetProperties DBPROPSET_PROPERTIESINERROR with rgPropertyIDs != NULL - DB_E_ERRORSOCCURRED
	int Variation_6();
	// @cmember GetProperties DBPROPSET_PROPERTIESINERROR with 2 PropertyIDSets - DB_S_ERRORSOCCURRED
	int Variation_7();
	// @cmember GetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
	int Variation_8();
	// @cmember GetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED
	int Variation_9();
	// @cmember SetProperties with cPropertyIDs!=0, rgPropertyID=NULL - E_INVALIDARG
	int Variation_10();
	// @cmember SetProperties with cProperties!=0, rgProperties=NULL - E_INVALIDARG
	int Variation_11();
	// @cmember SetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
	int Variation_12();
	// @cmember SetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED
	int Variation_13();
	// @cmember Compare DBPROP_SUPPORTEDTXNISOLEVELS with DBPROP_SESS_AUTOCOMMITISOLEVELS
	int Variation_14();
	// @cmember SetProperties with 0 for cPropertySets - S_OK
	int Variation_15();
	// @cmember SetProperties and GetProperties with all Isolation Levels - S_OK
	int Variation_16();
	// @cmember GetProperties with cProperties=0, rgProperties=NULL - S_OK or DB_E_ERRORSOCCURRED
	int Variation_17();
	// @cmember GetProperties with 0, NULL PropSets first - S_OK or DB_E_ERRORSOCCURRED
	int Variation_18();
	// @cmember GetProperties with 0, NULL PropSets second - S_OK or DB_E_ERRORSOCCURRED
	int Variation_19();
	// @cmember SetProperties with 0, NULL for cProperties and rgProperties - S_OK
	int Variation_20();
	// @cmember GetProperties DBPROPSET_SESSIONALL as the PropertySet - DB_E_ERRORSOCCURRED
	int Variation_21();
	// @cmember SetProperties with DBPROPOPTIONS_OPTIONAL - DB_E_ERRORSOCCURRED
	int Variation_22();
	// @cmember SetProperties with an unsupported PropertySet with DBPROPOPTIONS_OPTIONAL - DB_E_ERRORSOCCURRED
	int Variation_23();
	// @cmember GetProperties with 0, NULL, DBPROPSET_DBINIT - DB_E_ERRORSOCCURRED
	int Variation_24();
	// @cmember GetProperties with 0, NULL, DBPROPSET_DBINITALL - DB_E_ERRORSOCCURRED
	int Variation_25();
	// @cmember SetProperties with invalid value - DB_E_ERRORSOCCURRED
	int Variation_26();
	// @cmember SetProperties with Optional invalid value - DB_E_ERRORSOCCURRED
	int Variation_27();
	// @cmember SetProperties with invalid propid - DB_E_ERRORSOCCURRED
	int Variation_28();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCIDProperties_Parameters)
#define THE_CLASS TCIDProperties_Parameters
BEG_TEST_CASE(TCIDProperties_Parameters, TCIDProperties, L"ISessionProperties::Parameters")
	TEST_VARIATION(1, 		L"GetProperties with a NULL pcPropertySets - E_INVALIDARG")
	TEST_VARIATION(2, 		L"GetProperties with a NULL prgPropertySets - E_INVALIDARG")
	TEST_VARIATION(3, 		L"GetProperties with cPropertyIDSets!=0, rgPropertyIDSets=NULL - E_INVALIDARG")
	TEST_VARIATION(4, 		L"GetProperties with cPropertyIDs!=0, rgPropertyIDs=NULL - E_INVALIDARG")
	TEST_VARIATION(5, 		L"GetProperties DBPROPSET_PROPERTIESINERROR with cPropertyIDs>0 - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(6, 		L"GetProperties DBPROPSET_PROPERTIESINERROR with rgPropertyIDs != NULL - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(7, 		L"GetProperties DBPROPSET_PROPERTIESINERROR with 2 PropertyIDSets - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(8, 		L"GetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(9, 		L"GetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(10, 		L"SetProperties with cPropertyIDs!=0, rgPropertyID=NULL - E_INVALIDARG")
	TEST_VARIATION(11, 		L"SetProperties with cProperties!=0, rgProperties=NULL - E_INVALIDARG")
	TEST_VARIATION(12, 		L"SetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(13, 		L"SetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(14, 		L"Compare DBPROP_SUPPORTEDTXNISOLEVELS with DBPROP_SESS_AUTOCOMMITISOLEVELS")
	TEST_VARIATION(15, 		L"SetProperties with 0 for cPropertySets - S_OK")
	TEST_VARIATION(16, 		L"SetProperties and GetProperties with all Isolation Levels - S_OK")
	TEST_VARIATION(17, 		L"GetProperties with cProperties=0, rgProperties=NULL - S_OK or DB_E_ERRORSOCCURRED")
	TEST_VARIATION(18, 		L"GetProperties with 0, NULL PropSets first - S_OK or DB_E_ERRORSOCCURRED")
	TEST_VARIATION(19, 		L"GetProperties with 0, NULL PropSets second - S_OK or DB_E_ERRORSOCCURRED")
	TEST_VARIATION(20, 		L"SetProperties with 0, NULL for cProperties and rgProperties - S_OK")
	TEST_VARIATION(21, 		L"GetProperties DBPROPSET_SESSIONALL as the PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(22, 		L"SetProperties with DBPROPOPTIONS_OPTIONAL - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(23, 		L"SetProperties with an unsupported PropertySet with DBPROPOPTIONS_OPTIONAL - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(24, 		L"GetProperties with 0, NULL, DBPROPSET_DBINIT - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(25, 		L"GetProperties with 0, NULL, DBPROPSET_DBINITALL - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(26, 		L"SetProperties with invalid value - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(27, 		L"SetProperties with Optional invalid value - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(28, 		L"SetProperties with invalid propid - DB_E_ERRORSOCCURRED")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// {{ TCW_TEST_CASE_MAP(TCIDProperties_SetProperties)
//--------------------------------------------------------------------
// @class set all supported properties
//
class TCIDProperties_SetProperties : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();

	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCIDProperties_SetProperties,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();

	// {{ TCW_TESTVARS()
	// @cmember DBPROP is DBPROP_ACTIVESESSIONS - S_OK
	int Variation_1();
	// @cmember DBPROP is DBPROP_ASYNCTXNABORT - S_OK
	int Variation_2();
	// @cmember DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK
	int Variation_3();
	// @cmember DBPROP is DBPROP_BYREFACCESSORS - S_OK
	int Variation_4();
	// @cmember DBPROP is DBPROP_CATALOGLOCATION - S_OK
	int Variation_5();
	// @cmember DBPROP is DBPROP_CATALOGTERM - S_OK
	int Variation_6();
	// @cmember DBPROP is DBPROP_CATALOGUSAGE - S_OK
	int Variation_7();
	// @cmember DBPROP is DBPROP_COLUMNDEFINITION - S_OK
	int Variation_8();
	// @cmember DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK
	int Variation_9();
	// @cmember DBPROP is DBPROP_DATASOURCENAME - S_OK
	int Variation_10();
	// @cmember DBPROP is DBPROP_DATASOURCEREADONLY - S_OK
	int Variation_11();
	// @cmember DBPROP is DBPROP_DBMSNAME - S_OK
	int Variation_12();
	// @cmember DBPROP is DBPROP_DBMSVER - S_OK
	int Variation_13();
	// @cmember DBPROP is DBPROP_DSOTHREADMODEL - S_OK
	int Variation_14();
	// @cmember DBPROP is DBPROP_GROUPBY - S_OK
	int Variation_15();
	// @cmember DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK
	int Variation_16();
	// @cmember DBPROP is DBPROP_IDENTIFIERCASE - S_OK
	int Variation_17();
	// @cmember DBPROP is DBPROP_MAXINDEXSIZE - S_OK
	int Variation_18();
	// @cmember DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK
	int Variation_19();
	// @cmember DBPROP is DBPROP_MAXORSINFILTER - S_OK
	int Variation_20();
	// @cmember DBPROP is DBPROP_MAXROWSIZE - S_OK
	int Variation_21();
	// @cmember DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK
	int Variation_22();
	// @cmember DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK
	int Variation_23();
	// @cmember DBPROP is DBPROP_MAXTABLESINSELECT - S_OK
	int Variation_24();
	// @cmember DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK
	int Variation_25();
	// @cmember DBPROP is DBPROP_MULTIPLERESULTS - S_OK
	int Variation_26();
	// @cmember DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK
	int Variation_27();
	// @cmember DBPROP is DBPROP_MULTITABLEUPDATE - S_OK
	int Variation_28();
	// @cmember DBPROP is DBPROP_NULLCOLLATION - S_OK
	int Variation_29();
	// @cmember DBPROP is DBPROP_OLEOBJECTS - S_OK
	int Variation_30();
	// @cmember DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK
	int Variation_31();
	// @cmember DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK
	int Variation_32();
	// @cmember DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK
	int Variation_33();
	// @cmember DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK
	int Variation_34();
	// @cmember DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK
	int Variation_35();
	// @cmember DBPROP is DBPROP_PROCEDURETERM - S_OK
	int Variation_36();
	// @cmember DBPROP is DBPROP_PROVIDERNAME - S_OK
	int Variation_37();
	// @cmember DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK
	int Variation_38();
	// @cmember DBPROP is DBPROP_PROVIDERVER - S_OK
	int Variation_39();
	// @cmember DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK
	int Variation_40();
	// @cmember DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK
	int Variation_41();
	// @cmember DBPROP is DBPROP_SCHEMATERM - S_OK
	int Variation_42();
	// @cmember DBPROP is DBPROP_SCHEMAUSAGE - S_OK
	int Variation_43();
	// @cmember DBPROP is DBPROP_SORTONINDEX - S_OK
	int Variation_44();
	// @cmember DBPROP is DBPROP_SQLSUPPORT - S_OK
	int Variation_45();
	// @cmember DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK
	int Variation_46();
	// @cmember DBPROP is DBPROP_SUBQUERIES - S_OK
	int Variation_47();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK
	int Variation_48();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK
	int Variation_49();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK
	int Variation_50();
	// @cmember DBPROP is DBPROP_TABLETERM - S_OK
	int Variation_51();
	// @cmember DBPROP is DBPROP_USERNAME - S_OK
	int Variation_52();
	// @cmember DBPROP is DBPROP_CURRENTCATALOG - S_OK
	int Variation_53();
	// @cmember DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK
	int Variation_54();
	// @cmember DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK
	int Variation_55();
	// @cmember DBPROP is DBPROP_AUTH_INTEGRATED - S_OK
	int Variation_56();
	// @cmember DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK
	int Variation_57();
	// @cmember DBPROP is DBPROP_AUTH_PASSWORD - S_OK
	int Variation_58();
	// @cmember DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK
	int Variation_59();
	// @cmember DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK
	int Variation_60();
	// @cmember DBPROP is DBPROP_AUTH_USERID - S_OK
	int Variation_61();
	// @cmember DBPROP is DBPROP_INIT_ASYNCH - S_OK
	int Variation_62();
	// @cmember DBPROP is DBPROP_INIT_DATASOURCE - S_OK
	int Variation_63();
	// @cmember DBPROP is DBPROP_INIT_HWND - S_OK
	int Variation_64();
	// @cmember DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK
	int Variation_65();
	// @cmember DBPROP is DBPROP_INIT_LCID - S_OK
	int Variation_66();
	// @cmember DBPROP is DBPROP_INIT_LOCATION - S_OK
	int Variation_67();
	// @cmember DBPROP is DBPROP_INIT_MODE - S_OK
	int Variation_68();
	// @cmember DBPROP is DBPROP_INIT_PROMPT - S_OK
	int Variation_69();
	// @cmember DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK
	int Variation_70();
	// @cmember DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK
	int Variation_71();
	// @cmember DBPROP is DBPROP_INIT_TIMEOUT - S_OK
	int Variation_72();
	// @cmember DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK
	int Variation_73();
	// @cmember DBPROP is DBPROP_COL_DEFAULT - S_OK
	int Variation_74();
	// @cmember DBPROP is DBPROP_COL_DESCRIPTION - S_OK
	int Variation_75();
	// @cmember DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK
	int Variation_76();
	// @cmember DBPROP is DBPROP_COL_NULLABLE - S_OK
	int Variation_77();
	// @cmember DBPROP is DBPROP_COL_PRIMARYKEY - S_OK
	int Variation_78();
	// @cmember DBPROP is DBPROP_COL_UNIQUE - S_OK
	int Variation_79();
	// @cmember DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK
	int Variation_80();
	// @cmember DBPROP is DBPROP_INDEX_CLUSTERED - S_OK
	int Variation_81();
	// @cmember DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK
	int Variation_82();
	// @cmember DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK
	int Variation_83();
	// @cmember DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK
	int Variation_84();
	// @cmember DBPROP is DBPROP_INDEX_NULLS - S_OK
	int Variation_85();
	// @cmember DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK
	int Variation_86();
	// @cmember DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK
	int Variation_87();
	// @cmember DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK
	int Variation_88();
	// @cmember DBPROP is DBPROP_INDEX_TYPE - S_OK
	int Variation_89();
	// @cmember DBPROP is DBPROP_INDEX_UNIQUE - S_OK
	int Variation_90();
	// @cmember DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK
	int Variation_91();
	// @cmember DBPROP is DBPROP_TBL_TEMPTABLE - S_OK
	int Variation_92();
	// @cmember DBPROP is DBPROP_ABORTPRESERVE - S_OK
	int Variation_93();
	// @cmember DBPROP is DBPROP_APPENDONLY - S_OK
	int Variation_94();
	// @cmember DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK
	int Variation_95();
	// @cmember DBPROP is DBPROP_BOOKMARKS - S_OK
	int Variation_96();
	// @cmember DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK
	int Variation_97();
	// @cmember DBPROP is DBPROP_BOOKMARKTYPE - S_OK
	int Variation_98();
	// @cmember DBPROP is DBPROP_CACHEDEFERRED - S_OK
	int Variation_99();
	// @cmember DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK
	int Variation_100();
	// @cmember DBPROP is DBPROP_CANHOLDROWS - S_OK
	int Variation_101();
	// @cmember DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK
	int Variation_102();
	// @cmember DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK
	int Variation_103();
	// @cmember DBPROP is DBPROP_COLUMNRESTRICT - S_OK
	int Variation_104();
	// @cmember DBPROP is DBPROP_COMMANDTIMEOUT - S_OK
	int Variation_105();
	// @cmember DBPROP is DBPROP_COMMITPRESERVE - S_OK
	int Variation_106();
	// @cmember DBPROP is DBPROP_DEFERRED - S_OK
	int Variation_107();
	// @cmember DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK
	int Variation_108();
	// @cmember DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK
	int Variation_109();
	// @cmember DBPROP is DBPROP_FINDCOMPAREOPS - S_OK
	int Variation_110();
	// @cmember DBPROP is DBPROP_IMMOBILEROWS - S_OK
	int Variation_111();
	// @cmember DBPROP is DBPROP_LITERALBOOKMARKS - S_OK
	int Variation_112();
	// @cmember DBPROP is DBPROP_LITERALIDENTITY - S_OK
	int Variation_113();
	// @cmember DBPROP is DBPROP_MAXOPENROWS - S_OK
	int Variation_114();
	// @cmember DBPROP is DBPROP_MAXPENDINGROWS - S_OK
	int Variation_115();
	// @cmember DBPROP is DBPROP_MAXROWS - S_OK
	int Variation_116();
	// @cmember DBPROP is DBPROP_MAYWRITECOLUMN - S_OK
	int Variation_117();
	// @cmember DBPROP is DBPROP_MEMORYUSAGE - S_OK
	int Variation_118();
	// @cmember DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK
	int Variation_119();
	// @cmember DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK
	int Variation_120();
	// @cmember DBPROP is DBPROP_NOTIFYROWDELETE - S_OK
	int Variation_121();
	// @cmember DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK
	int Variation_122();
	// @cmember DBPROP is DBPROP_NOTIFYROWINSERT - S_OK
	int Variation_123();
	// @cmember DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK
	int Variation_124();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK
	int Variation_125();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK
	int Variation_126();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK
	int Variation_127();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK
	int Variation_128();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK
	int Variation_129();
	// @cmember DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK
	int Variation_130();
	// @cmember DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK
	int Variation_131();
	// @cmember DBPROP is DBPROP_OTHERINSERT - S_OK
	int Variation_132();
	// @cmember DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK
	int Variation_133();
	// @cmember DBPROP is DBPROP_OWNINSERT - S_OK
	int Variation_134();
	// @cmember DBPROP is DBPROP_OWNUPDATEDELETE - S_OK
	int Variation_135();
	// @cmember DBPROP is DBPROP_QUICKRESTART - S_OK
	int Variation_136();
	// @cmember DBPROP is DBPROP_REENTRANTEVENTS - S_OK
	int Variation_137();
	// @cmember DBPROP is DBPROP_REMOVEDELETED - S_OK
	int Variation_138();
	// @cmember DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK
	int Variation_139();
	// @cmember DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK
	int Variation_140();
	// @cmember DBPROP is DBPROP_ROWRESTRICT - S_OK
	int Variation_141();
	// @cmember DBPROP is DBPROP_ROWSET_ASYNCH - S_OK
	int Variation_142();
	// @cmember DBPROP is DBPROP_ROWTHREADMODEL - S_OK
	int Variation_143();
	// @cmember DBPROP is DBPROP_SERVERCURSOR - S_OK
	int Variation_144();
	// @cmember DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK
	int Variation_145();
	// @cmember DBPROP is DBPROP_UPDATABILITY - S_OK
	int Variation_146();
	// @cmember DBPROP is DBPROP_STRONGIDENTITY - S_OK
	int Variation_147();
	// @cmember DBPROP is DBPROP_IAccessor - S_OK
	int Variation_148();
	// @cmember DBPROP is DBPROP_IChapteredRowset - S_OK
	int Variation_149();
	// @cmember DBPROP is DBPROP_IColumnsInfo - S_OK
	int Variation_150();
	// @cmember DBPROP is DBPROP_IColumnsRowset - S_OK
	int Variation_151();
	// @cmember DBPROP is DBPROP_IConnectionPointContainer - S_OK
	int Variation_152();
	// @cmember DBPROP is DBPROP_IConvertType - S_OK
	int Variation_153();
	// @cmember DBPROP is DBPROP_IDBAsynchStatus - S_OK
	int Variation_154();
	// @cmember DBPROP is DBPROP_IRowset - S_OK
	int Variation_155();
	// @cmember DBPROP is DBPROP_IRowsetChange - S_OK
	int Variation_156();
	// @cmember DBPROP is DBPROP_IRowsetFind - S_OK
	int Variation_157();
	// @cmember DBPROP is DBPROP_IRowsetIdentity - S_OK
	int Variation_158();
	// @cmember DBPROP is DBPROP_IRowsetIndex - S_OK
	int Variation_159();
	// @cmember DBPROP is DBPROP_IRowsetInfo - S_OK
	int Variation_160();
	// @cmember DBPROP is DBPROP_IRowsetLocate - S_OK
	int Variation_161();
	// @cmember DBPROP is DBPROP_IRowsetResynch - S_OK
	int Variation_162();
	// @cmember DBPROP is DBPROP_IRowsetScroll - S_OK
	int Variation_163();
	// @cmember DBPROP is DBPROP_IRowsetUpdate - S_OK
	int Variation_164();
	// @cmember DBPROP is DBPROP_IRowsetView - S_OK
	int Variation_165();
	// @cmember DBPROP is DBPROP_IViewChapter - S_OK
	int Variation_166();
	// @cmember DBPROP is DBPROP_IViewFilter - S_OK
	int Variation_167();
	// @cmember DBPROP is DBPROP_IViewRowset - S_OK
	int Variation_168();
	// @cmember DBPROP is DBPROP_IViewSort - S_OK
	int Variation_169();
	// @cmember DBPROP is DBPROP_ILockBytes - S_OK
	int Variation_170();
	// @cmember DBPROP is DBPROP_ISequentialStream - S_OK
	int Variation_171();
	// @cmember DBPROP is DBPROP_IStorage - S_OK
	int Variation_172();
	// @cmember DBPROP is DBPROP_IStream - S_OK
	int Variation_173();
	// @cmember DBPROP is DBPROP_ISupportErrorInfo - S_OK
	int Variation_174();
	// @cmember DBPROP is DBPROP_ALTERCOLUMN - S_OK
	int Variation_175();
	// @cmember DBPROP is DBPROP_CONNECTIONSTATUS - S_OK
	int Variation_176();
	// @cmember DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK
	int Variation_177();
	// @cmember DBPROP is DBPROP_PROVIDERMEMORY - S_OK
	int Variation_178();
	// @cmember DBPROP is DBPROP_SERVERNAME - S_OK
	int Variation_179();
	// @cmember DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK
	int Variation_180();
	// @cmember DBPROP is DBPROP_RESETDATASOURCE - S_OK
	int Variation_181();
	// @cmember DBPROP is DBPROP_INIT_CATALOG - S_OK
	int Variation_182();
	// @cmember DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK
	int Variation_183();
	// @cmember DBPROP is DBPROP_COLUMNLCID - S_OK
	int Variation_184();
	// @cmember DBPROP is DBPROP_ACCESSORDER - S_OK
	int Variation_185();
	// @cmember DBPROP is DBPROP_BOOKMARKINFO - S_OK
	int Variation_186();
	// @cmember DBPROP is DBPROP_HIDDENCOLUMNS - S_OK
	int Variation_187();
	// @cmember DBPROP is DBPROP_LOCKMODE - S_OK
	int Variation_188();
	// @cmember DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK
	int Variation_189();
	// @cmember DBPROP is DBPROP_ROW_BULKOPS - S_OK
	int Variation_190();
	// @cmember DBPROP is DBPROP_SERVERDATAONINSERT - S_OK
	int Variation_191();
	// @cmember DBPROP is DBPROP_STORAGEFLAGS - S_OK
	int Variation_192();
	// @cmember DBPROP is DBPROP_UNIQUEROWS - S_OK
	int Variation_193();
	// @cmember DBPROP is DBPROP_IMultipleResults - S_OK
	int Variation_194();
	// @cmember DBPROP is DBPROP_IRowsetRefresh - S_OK
	int Variation_195();
	// @cmember DBPROP is DBPROP_IParentRowset - S_OK
	int Variation_196();
	// @cmember DBPROP is DBPROP_COL_INCREMENT - S_OK
	int Variation_197();
	// @cmember DBPROP is DBPROP_COL_ISLONG - S_OK
	int Variation_198();
	// @cmember DBPROP is DBPROP_COL_SEED - S_OK
	int Variation_199();
	// @cmember DBPROP is DBPROP_COMSERVICES - S_OK
	int Variation_200();
	// @cmember DBPROP is DBPROP_DATASOURCETYPE - S_OK
	int Variation_201();
	// @cmember DBPROP is DBPROP_GENERATEURL - S_OK
	int Variation_202();
	// @cmember DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK
	int Variation_203();
	// @cmember DBPROP is DBPROP_INIT_BINDFLAGS - S_OK
	int Variation_204();
	// @cmember DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK
	int Variation_205();
	// @cmember DBPROP is DBPROP_INIT_LOCKOWNER - S_OK
	int Variation_206();
	// @cmember DBPROP is DBPROP_CLIENTCURSOR - S_OK
	int Variation_207();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK
	int Variation_208();
	// @cmember DBPROP is DBPROP_IBindResource - S_OK
	int Variation_209();
	// @cmember DBPROP is DBPROP_IColumnsInfo2 - S_OK
	int Variation_210();
	// @cmember DBPROP is DBPROP_ICreateRow - S_OK
	int Variation_211();
	// @cmember DBPROP is DBPROP_IGetRow - S_OK
	int Variation_212();
	// @cmember DBPROP is DBPROP_IGetSession - S_OK
	int Variation_213();
	// @cmember DBPROP is DBPROP_IGetSourceRow - S_OK
	int Variation_214();
	// @cmember DBPROP is DBPROP_IRow - S_OK
	int Variation_215();
	// @cmember DBPROP is DBPROP_IRowChange - S_OK
	int Variation_216();
	// @cmember DBPROP is DBPROP_IRowSchemaChange - S_OK
	int Variation_217();
	// @cmember DBPROP is DBPROP_IRowsetCurrentIndex - S_OK
	int Variation_218();
	// @cmember DBPROP is DBPROP_IScopedOperations - S_OK
	int Variation_219();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCIDProperties_SetProperties)
#define THE_CLASS TCIDProperties_SetProperties
BEG_TEST_CASE(TCIDProperties_SetProperties, TCIDProperties, L"set all supported properties")
	TEST_VARIATION(1, 		L"DBPROP is DBPROP_ACTIVESESSIONS - S_OK")
	TEST_VARIATION(2, 		L"DBPROP is DBPROP_ASYNCTXNABORT - S_OK")
	TEST_VARIATION(3, 		L"DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK")
	TEST_VARIATION(4, 		L"DBPROP is DBPROP_BYREFACCESSORS - S_OK")
	TEST_VARIATION(5, 		L"DBPROP is DBPROP_CATALOGLOCATION - S_OK")
	TEST_VARIATION(6, 		L"DBPROP is DBPROP_CATALOGTERM - S_OK")
	TEST_VARIATION(7, 		L"DBPROP is DBPROP_CATALOGUSAGE - S_OK")
	TEST_VARIATION(8, 		L"DBPROP is DBPROP_COLUMNDEFINITION - S_OK")
	TEST_VARIATION(9, 		L"DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK")
	TEST_VARIATION(10, 		L"DBPROP is DBPROP_DATASOURCENAME - S_OK")
	TEST_VARIATION(11, 		L"DBPROP is DBPROP_DATASOURCEREADONLY - S_OK")
	TEST_VARIATION(12, 		L"DBPROP is DBPROP_DBMSNAME - S_OK")
	TEST_VARIATION(13, 		L"DBPROP is DBPROP_DBMSVER - S_OK")
	TEST_VARIATION(14, 		L"DBPROP is DBPROP_DSOTHREADMODEL - S_OK")
	TEST_VARIATION(15, 		L"DBPROP is DBPROP_GROUPBY - S_OK")
	TEST_VARIATION(16, 		L"DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK")
	TEST_VARIATION(17, 		L"DBPROP is DBPROP_IDENTIFIERCASE - S_OK")
	TEST_VARIATION(18, 		L"DBPROP is DBPROP_MAXINDEXSIZE - S_OK")
	TEST_VARIATION(19, 		L"DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK")
	TEST_VARIATION(20, 		L"DBPROP is DBPROP_MAXORSINFILTER - S_OK")
	TEST_VARIATION(21, 		L"DBPROP is DBPROP_MAXROWSIZE - S_OK")
	TEST_VARIATION(22, 		L"DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK")
	TEST_VARIATION(23, 		L"DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK")
	TEST_VARIATION(24, 		L"DBPROP is DBPROP_MAXTABLESINSELECT - S_OK")
	TEST_VARIATION(25, 		L"DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK")
	TEST_VARIATION(26, 		L"DBPROP is DBPROP_MULTIPLERESULTS - S_OK")
	TEST_VARIATION(27, 		L"DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK")
	TEST_VARIATION(28, 		L"DBPROP is DBPROP_MULTITABLEUPDATE - S_OK")
	TEST_VARIATION(29, 		L"DBPROP is DBPROP_NULLCOLLATION - S_OK")
	TEST_VARIATION(30, 		L"DBPROP is DBPROP_OLEOBJECTS - S_OK")
	TEST_VARIATION(31, 		L"DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK")
	TEST_VARIATION(32, 		L"DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK")
	TEST_VARIATION(33, 		L"DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK")
	TEST_VARIATION(34, 		L"DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK")
	TEST_VARIATION(35, 		L"DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK")
	TEST_VARIATION(36, 		L"DBPROP is DBPROP_PROCEDURETERM - S_OK")
	TEST_VARIATION(37, 		L"DBPROP is DBPROP_PROVIDERNAME - S_OK")
	TEST_VARIATION(38, 		L"DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK")
	TEST_VARIATION(39, 		L"DBPROP is DBPROP_PROVIDERVER - S_OK")
	TEST_VARIATION(40, 		L"DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK")
	TEST_VARIATION(41, 		L"DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK")
	TEST_VARIATION(42, 		L"DBPROP is DBPROP_SCHEMATERM - S_OK")
	TEST_VARIATION(43, 		L"DBPROP is DBPROP_SCHEMAUSAGE - S_OK")
	TEST_VARIATION(44, 		L"DBPROP is DBPROP_SORTONINDEX - S_OK")
	TEST_VARIATION(45, 		L"DBPROP is DBPROP_SQLSUPPORT - S_OK")
	TEST_VARIATION(46, 		L"DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK")
	TEST_VARIATION(47, 		L"DBPROP is DBPROP_SUBQUERIES - S_OK")
	TEST_VARIATION(48, 		L"DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK")
	TEST_VARIATION(49, 		L"DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK")
	TEST_VARIATION(50, 		L"DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK")
	TEST_VARIATION(51, 		L"DBPROP is DBPROP_TABLETERM - S_OK")
	TEST_VARIATION(52, 		L"DBPROP is DBPROP_USERNAME - S_OK")
	TEST_VARIATION(53, 		L"DBPROP is DBPROP_CURRENTCATALOG - S_OK")
	TEST_VARIATION(54, 		L"DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK")
	TEST_VARIATION(55, 		L"DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK")
	TEST_VARIATION(56, 		L"DBPROP is DBPROP_AUTH_INTEGRATED - S_OK")
	TEST_VARIATION(57, 		L"DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK")
	TEST_VARIATION(58, 		L"DBPROP is DBPROP_AUTH_PASSWORD - S_OK")
	TEST_VARIATION(59, 		L"DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK")
	TEST_VARIATION(60, 		L"DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK")
	TEST_VARIATION(61, 		L"DBPROP is DBPROP_AUTH_USERID - S_OK")
	TEST_VARIATION(62, 		L"DBPROP is DBPROP_INIT_ASYNCH - S_OK")
	TEST_VARIATION(63, 		L"DBPROP is DBPROP_INIT_DATASOURCE - S_OK")
	TEST_VARIATION(64, 		L"DBPROP is DBPROP_INIT_HWND - S_OK")
	TEST_VARIATION(65, 		L"DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK")
	TEST_VARIATION(66, 		L"DBPROP is DBPROP_INIT_LCID - S_OK")
	TEST_VARIATION(67, 		L"DBPROP is DBPROP_INIT_LOCATION - S_OK")
	TEST_VARIATION(68, 		L"DBPROP is DBPROP_INIT_MODE - S_OK")
	TEST_VARIATION(69, 		L"DBPROP is DBPROP_INIT_PROMPT - S_OK")
	TEST_VARIATION(70, 		L"DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK")
	TEST_VARIATION(71, 		L"DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK")
	TEST_VARIATION(72, 		L"DBPROP is DBPROP_INIT_TIMEOUT - S_OK")
	TEST_VARIATION(73, 		L"DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK")
	TEST_VARIATION(74, 		L"DBPROP is DBPROP_COL_DEFAULT - S_OK")
	TEST_VARIATION(75, 		L"DBPROP is DBPROP_COL_DESCRIPTION - S_OK")
	TEST_VARIATION(76, 		L"DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK")
	TEST_VARIATION(77, 		L"DBPROP is DBPROP_COL_NULLABLE - S_OK")
	TEST_VARIATION(78, 		L"DBPROP is DBPROP_COL_PRIMARYKEY - S_OK")
	TEST_VARIATION(79, 		L"DBPROP is DBPROP_COL_UNIQUE - S_OK")
	TEST_VARIATION(80, 		L"DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK")
	TEST_VARIATION(81, 		L"DBPROP is DBPROP_INDEX_CLUSTERED - S_OK")
	TEST_VARIATION(82, 		L"DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK")
	TEST_VARIATION(83, 		L"DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK")
	TEST_VARIATION(84, 		L"DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK")
	TEST_VARIATION(85, 		L"DBPROP is DBPROP_INDEX_NULLS - S_OK")
	TEST_VARIATION(86, 		L"DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK")
	TEST_VARIATION(87, 		L"DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK")
	TEST_VARIATION(88, 		L"DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK")
	TEST_VARIATION(89, 		L"DBPROP is DBPROP_INDEX_TYPE - S_OK")
	TEST_VARIATION(90, 		L"DBPROP is DBPROP_INDEX_UNIQUE - S_OK")
	TEST_VARIATION(91, 		L"DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK")
	TEST_VARIATION(92, 		L"DBPROP is DBPROP_TBL_TEMPTABLE - S_OK")
	TEST_VARIATION(93, 		L"DBPROP is DBPROP_ABORTPRESERVE - S_OK")
	TEST_VARIATION(94, 		L"DBPROP is DBPROP_APPENDONLY - S_OK")
	TEST_VARIATION(95, 		L"DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK")
	TEST_VARIATION(96, 		L"DBPROP is DBPROP_BOOKMARKS - S_OK")
	TEST_VARIATION(97, 		L"DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK")
	TEST_VARIATION(98, 		L"DBPROP is DBPROP_BOOKMARKTYPE - S_OK")
	TEST_VARIATION(99, 		L"DBPROP is DBPROP_CACHEDEFERRED - S_OK")
	TEST_VARIATION(100, 		L"DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK")
	TEST_VARIATION(101, 		L"DBPROP is DBPROP_CANHOLDROWS - S_OK")
	TEST_VARIATION(102, 		L"DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK")
	TEST_VARIATION(103, 		L"DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK")
	TEST_VARIATION(104, 		L"DBPROP is DBPROP_COLUMNRESTRICT - S_OK")
	TEST_VARIATION(105, 		L"DBPROP is DBPROP_COMMANDTIMEOUT - S_OK")
	TEST_VARIATION(106, 		L"DBPROP is DBPROP_COMMITPRESERVE - S_OK")
	TEST_VARIATION(107, 		L"DBPROP is DBPROP_DEFERRED - S_OK")
	TEST_VARIATION(108, 		L"DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK")
	TEST_VARIATION(109, 		L"DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK")
	TEST_VARIATION(110, 		L"DBPROP is DBPROP_FINDCOMPAREOPS - S_OK")
	TEST_VARIATION(111, 		L"DBPROP is DBPROP_IMMOBILEROWS - S_OK")
	TEST_VARIATION(112, 		L"DBPROP is DBPROP_LITERALBOOKMARKS - S_OK")
	TEST_VARIATION(113, 		L"DBPROP is DBPROP_LITERALIDENTITY - S_OK")
	TEST_VARIATION(114, 		L"DBPROP is DBPROP_MAXOPENROWS - S_OK")
	TEST_VARIATION(115, 		L"DBPROP is DBPROP_MAXPENDINGROWS - S_OK")
	TEST_VARIATION(116, 		L"DBPROP is DBPROP_MAXROWS - S_OK")
	TEST_VARIATION(117, 		L"DBPROP is DBPROP_MAYWRITECOLUMN - S_OK")
	TEST_VARIATION(118, 		L"DBPROP is DBPROP_MEMORYUSAGE - S_OK")
	TEST_VARIATION(119, 		L"DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK")
	TEST_VARIATION(120, 		L"DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK")
	TEST_VARIATION(121, 		L"DBPROP is DBPROP_NOTIFYROWDELETE - S_OK")
	TEST_VARIATION(122, 		L"DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK")
	TEST_VARIATION(123, 		L"DBPROP is DBPROP_NOTIFYROWINSERT - S_OK")
	TEST_VARIATION(124, 		L"DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK")
	TEST_VARIATION(125, 		L"DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK")
	TEST_VARIATION(126, 		L"DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK")
	TEST_VARIATION(127, 		L"DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK")
	TEST_VARIATION(128, 		L"DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK")
	TEST_VARIATION(129, 		L"DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK")
	TEST_VARIATION(130, 		L"DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK")
	TEST_VARIATION(131, 		L"DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK")
	TEST_VARIATION(132, 		L"DBPROP is DBPROP_OTHERINSERT - S_OK")
	TEST_VARIATION(133, 		L"DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK")
	TEST_VARIATION(134, 		L"DBPROP is DBPROP_OWNINSERT - S_OK")
	TEST_VARIATION(135, 		L"DBPROP is DBPROP_OWNUPDATEDELETE - S_OK")
	TEST_VARIATION(136, 		L"DBPROP is DBPROP_QUICKRESTART - S_OK")
	TEST_VARIATION(137, 		L"DBPROP is DBPROP_REENTRANTEVENTS - S_OK")
	TEST_VARIATION(138, 		L"DBPROP is DBPROP_REMOVEDELETED - S_OK")
	TEST_VARIATION(139, 		L"DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK")
	TEST_VARIATION(140, 		L"DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK")
	TEST_VARIATION(141, 		L"DBPROP is DBPROP_ROWRESTRICT - S_OK")
	TEST_VARIATION(142, 		L"DBPROP is DBPROP_ROWSET_ASYNCH - S_OK")
	TEST_VARIATION(143, 		L"DBPROP is DBPROP_ROWTHREADMODEL - S_OK")
	TEST_VARIATION(144, 		L"DBPROP is DBPROP_SERVERCURSOR - S_OK")
	TEST_VARIATION(145, 		L"DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK")
	TEST_VARIATION(146, 		L"DBPROP is DBPROP_UPDATABILITY - S_OK")
	TEST_VARIATION(147, 		L"DBPROP is DBPROP_STRONGIDENTITY - S_OK")
	TEST_VARIATION(148, 		L"DBPROP is DBPROP_IAccessor - S_OK")
	TEST_VARIATION(149, 		L"DBPROP is DBPROP_IChapteredRowset - S_OK")
	TEST_VARIATION(150, 		L"DBPROP is DBPROP_IColumnsInfo - S_OK")
	TEST_VARIATION(151, 		L"DBPROP is DBPROP_IColumnsRowset - S_OK")
	TEST_VARIATION(152, 		L"DBPROP is DBPROP_IConnectionPointContainer - S_OK")
	TEST_VARIATION(153, 		L"DBPROP is DBPROP_IConvertType - S_OK")
	TEST_VARIATION(154, 		L"DBPROP is DBPROP_IDBAsynchStatus - S_OK")
	TEST_VARIATION(155, 		L"DBPROP is DBPROP_IRowset - S_OK")
	TEST_VARIATION(156, 		L"DBPROP is DBPROP_IRowsetChange - S_OK")
	TEST_VARIATION(157, 		L"DBPROP is DBPROP_IRowsetFind - S_OK")
	TEST_VARIATION(158, 		L"DBPROP is DBPROP_IRowsetIdentity - S_OK")
	TEST_VARIATION(159, 		L"DBPROP is DBPROP_IRowsetIndex - S_OK")
	TEST_VARIATION(160, 		L"DBPROP is DBPROP_IRowsetInfo - S_OK")
	TEST_VARIATION(161, 		L"DBPROP is DBPROP_IRowsetLocate - S_OK")
	TEST_VARIATION(162, 		L"DBPROP is DBPROP_IRowsetResynch - S_OK")
	TEST_VARIATION(163, 		L"DBPROP is DBPROP_IRowsetScroll - S_OK")
	TEST_VARIATION(164, 		L"DBPROP is DBPROP_IRowsetUpdate - S_OK")
	TEST_VARIATION(165, 		L"DBPROP is DBPROP_IRowsetView - S_OK")
	TEST_VARIATION(166, 		L"DBPROP is DBPROP_IViewChapter - S_OK")
	TEST_VARIATION(167, 		L"DBPROP is DBPROP_IViewFilter - S_OK")
	TEST_VARIATION(168, 		L"DBPROP is DBPROP_IViewRowset - S_OK")
	TEST_VARIATION(169, 		L"DBPROP is DBPROP_IViewSort - S_OK")
	TEST_VARIATION(170, 		L"DBPROP is DBPROP_ILockBytes - S_OK")
	TEST_VARIATION(171, 		L"DBPROP is DBPROP_ISequentialStream - S_OK")
	TEST_VARIATION(172, 		L"DBPROP is DBPROP_IStorage - S_OK")
	TEST_VARIATION(173, 		L"DBPROP is DBPROP_IStream - S_OK")
	TEST_VARIATION(174, 		L"DBPROP is DBPROP_ISupportErrorInfo - S_OK")
	TEST_VARIATION(175, 		L"DBPROP is DBPROP_ALTERCOLUMN - S_OK")
	TEST_VARIATION(176, 		L"DBPROP is DBPROP_CONNECTIONSTATUS - S_OK")
	TEST_VARIATION(177, 		L"DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK")
	TEST_VARIATION(178, 		L"DBPROP is DBPROP_PROVIDERMEMORY - S_OK")
	TEST_VARIATION(179, 		L"DBPROP is DBPROP_SERVERNAME - S_OK")
	TEST_VARIATION(180, 		L"DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK")
	TEST_VARIATION(181, 		L"DBPROP is DBPROP_RESETDATASOURCE - S_OK")
	TEST_VARIATION(182, 		L"DBPROP is DBPROP_INIT_CATALOG - S_OK")
	TEST_VARIATION(183, 		L"DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK")
	TEST_VARIATION(184, 		L"DBPROP is DBPROP_COLUMNLCID - S_OK")
	TEST_VARIATION(185, 		L"DBPROP is DBPROP_ACCESSORDER - S_OK")
	TEST_VARIATION(186, 		L"DBPROP is DBPROP_BOOKMARKINFO - S_OK")
	TEST_VARIATION(187, 		L"DBPROP is DBPROP_HIDDENCOLUMNS - S_OK")
	TEST_VARIATION(188, 		L"DBPROP is DBPROP_LOCKMODE - S_OK")
	TEST_VARIATION(189, 		L"DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK")
	TEST_VARIATION(190, 		L"DBPROP is DBPROP_ROW_BULKOPS - S_OK")
	TEST_VARIATION(191, 		L"DBPROP is DBPROP_SERVERDATAONINSERT - S_OK")
	TEST_VARIATION(192, 		L"DBPROP is DBPROP_STORAGEFLAGS - S_OK")
	TEST_VARIATION(193, 		L"DBPROP is DBPROP_UNIQUEROWS - S_OK")
	TEST_VARIATION(194, 		L"DBPROP is DBPROP_IMultipleResults - S_OK")
	TEST_VARIATION(195, 		L"DBPROP is DBPROP_IRowsetRefresh - S_OK")
	TEST_VARIATION(196, 		L"DBPROP is DBPROP_IParentRowset - S_OK")
	TEST_VARIATION(197, 		L"DBPROP is DBPROP_COL_INCREMENT - S_OK")
	TEST_VARIATION(198, 		L"DBPROP is DBPROP_COL_ISLONG - S_OK")
	TEST_VARIATION(199, 		L"DBPROP is DBPROP_COL_SEED - S_OK")
	TEST_VARIATION(200, 		L"DBPROP is DBPROP_COMSERVICES - S_OK")
	TEST_VARIATION(201, 		L"DBPROP is DBPROP_DATASOURCETYPE - S_OK")
	TEST_VARIATION(202, 		L"DBPROP is DBPROP_GENERATEURL - S_OK")
	TEST_VARIATION(203, 		L"DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK")
	TEST_VARIATION(204, 		L"DBPROP is DBPROP_INIT_BINDFLAGS - S_OK")
	TEST_VARIATION(205, 		L"DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK")
	TEST_VARIATION(206, 		L"DBPROP is DBPROP_INIT_LOCKOWNER - S_OK")
	TEST_VARIATION(207, 		L"DBPROP is DBPROP_CLIENTCURSOR - S_OK")
	TEST_VARIATION(208, 		L"DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK")
	TEST_VARIATION(209, 		L"DBPROP is DBPROP_IBindResource - S_OK")
	TEST_VARIATION(210, 		L"DBPROP is DBPROP_IColumnsInfo2 - S_OK")
	TEST_VARIATION(211, 		L"DBPROP is DBPROP_ICreateRow - S_OK")
	TEST_VARIATION(212, 		L"DBPROP is DBPROP_IGetRow - S_OK")
	TEST_VARIATION(213, 		L"DBPROP is DBPROP_IGetSession - S_OK")
	TEST_VARIATION(214, 		L"DBPROP is DBPROP_IGetSourceRow - S_OK")
	TEST_VARIATION(215, 		L"DBPROP is DBPROP_IRow - S_OK")
	TEST_VARIATION(216, 		L"DBPROP is DBPROP_IRowChange - S_OK")
	TEST_VARIATION(217, 		L"DBPROP is DBPROP_IRowSchemaChange - S_OK")
	TEST_VARIATION(218, 		L"DBPROP is DBPROP_IRowsetCurrentIndex - S_OK")
	TEST_VARIATION(219, 		L"DBPROP is DBPROP_IScopedOperations - S_OK")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// {{ TCW_TEST_CASE_MAP(TCZombie)
//--------------------------------------------------------------------
// @class Induce zombie states on the Session
//
class TCZombie : public CTransaction { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();
	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCZombie,CTransaction);
	// }} TCW_DECLARE_FUNCS_END

	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();
	// @cmember TestTxn
	int TestTxn(ETXN eTxn, BOOL fRetaining);

	// {{ TCW_TESTVARS()
	// @cmember S_OK - Abort ISessionProperties with fRetaining=TRUE
	int Variation_1();
	// @cmember S_OK - Abort ISessionProperties with fRetaining=FALSE
	int Variation_2();
	// @cmember S_OK - Commit ISessionProperties with fRetaining=TRUE
	int Variation_3();
	// @cmember S_OK - Commit ISessionProperties with fRetaining=FALSE
	int Variation_4();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCZombie)
#define THE_CLASS TCZombie
BEG_TEST_CASE(TCZombie, CTransaction, L"Induce zombie states on the Session")
	TEST_VARIATION(1, 		L"S_OK - Abort ISessionProperties with fRetaining=TRUE")
	TEST_VARIATION(2, 		L"S_OK - Abort ISessionProperties with fRetaining=FALSE")
	TEST_VARIATION(3, 		L"S_OK - Commit ISessionProperties with fRetaining=TRUE")
	TEST_VARIATION(4, 		L"S_OK - Commit ISessionProperties with fRetaining=FALSE")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// {{ TCW_TEST_CASE_MAP(TCExtendedErrors)
//--------------------------------------------------------------------
// @class Extended Errors
//
class TCExtendedErrors : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();

public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCExtendedErrors,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();
	
	// {{ TCW_TESTVARS()
	// @cmember Valid GetProperties call with previous error object existing.
	int Variation_1();
	// @cmember DB_E_ERRORSOCCURRED GetProperties call with previous error object existing.
	int Variation_2();
	// @cmember E_INVALIDARG GetProperties call with previous error object existing.
	int Variation_3();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCExtendedErrors)
#define THE_CLASS TCExtendedErrors
BEG_TEST_CASE(TCExtendedErrors, TCIDProperties, L"Extended Errors")
	TEST_VARIATION(1, 		L"Valid GetProperties call with previous error object existing.")
	TEST_VARIATION(2, 		L"DB_E_ERRORSOCCURRED GetProperties call with previous error object existing.")
	TEST_VARIATION(3, 		L"E_INVALIDARG GetProperties call with previous error object existing.")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END

// }} END_DECLARE_TEST_CASES()

// {{ TCW_TESTMODULE(ThisModule)
TEST_MODULE(4, ThisModule, gwszModuleDescrip)
	TEST_CASE(1, TCIDProperties_Parameters)
	TEST_CASE(2, TCIDProperties_SetProperties)
	TEST_CASE(3, TCZombie)
	TEST_CASE(4, TCExtendedErrors)
END_TEST_MODULE()
// }} TCW_TESTMODULE_END


// {{ TCW_TC_PROTOTYPE(TCIDProperties_Parameters)
//*-----------------------------------------------------------------------
//| Test Case:		TCIDProperties_Parameters - ISessionProperties::Parameters
//|	Created:		08/12/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_Parameters::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK
	if( TCIDProperties::Init() )
	// }}
	{
		//Get a IDBProperties pointer
		TESTC(VerifyInterface(m_pThisTestModule->m_pIUnknown, IID_IDBProperties, 
							DATASOURCE_INTERFACE, (IUnknown **)&m_pIDBProperties));

		//Get a ISessionProperties pointer
		TESTC(VerifyInterface(m_pThisTestModule->m_pIUnknown2, IID_ISessionProperties, 
							SESSION_INTERFACE, (IUnknown **)&m_pISessionProperties));

		//Initialize
		m_cPropertyIDSets = 1;
		m_rgPropertyIDSets->cPropertyIDs = 1;
		m_rgPropertyIDSets->rgPropertyIDs = m_rgPropertyIDs;
		m_rgPropertyIDSets->guidPropertySet = DBPROPSET_SESSION;

		//Get the default values if we have not done it already
		if( !g_fInitGetPropDefault )
		{
			TESTC(InitGetPropDefault());
			g_fInitGetPropDefault = TRUE;
		}

		return TRUE;
	}

CLEANUP:

	return FALSE;
}


// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a NULL pcPropertySets - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_1()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	//Null pcPropertySets should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
			m_rgPropertyIDSets, NULL, &m_prgPropertySets), E_INVALIDARG);
	
	//Needs to be NULL on output
	TESTC(!m_prgPropertySets);

CLEANUP:
    TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a NULL prgPropertySets - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_2()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	//Null pcPropertySets should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
			m_rgPropertyIDSets, &m_pcPropertySets, NULL), E_INVALIDARG);
	
	//Needs to be NULL on output
	TESTC(!m_pcPropertySets);

CLEANUP:
    TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with cPropertyIDSets!=0, rgPropertyIDSets=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_3()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	//Null pcPropertySets should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(2, NULL, 
					&m_pcPropertySets, &m_prgPropertySets), E_INVALIDARG);
	
	//Needs to be NULL on output
	TESTC(!m_pcPropertySets);
	TESTC(!m_prgPropertySets);

CLEANUP:
    TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with cPropertyIDs!=0, rgPropertyIDs=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_4()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertyIDSets->rgPropertyIDs = NULL;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, m_rgPropertyIDSets, 
					&m_pcPropertySets, &m_prgPropertySets), E_INVALIDARG);

	//Needs to be NULL on output
	TESTC(!m_pcPropertySets);
	TESTC(!m_prgPropertySets);

CLEANUP:

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc GetProperties DBPROPSET_PROPERTIESINERROR with cPropertyIDs>0 - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_5()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertyIDSets->cPropertyIDs = 0;
	m_rgPropertyIDSets->guidPropertySet = DBPROPSET_PROPERTIESINERROR;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(1, m_rgPropertyIDSets, 
					&m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED);

	//Count of cPropertySets sets
	TESTC(m_pcPropertySets == 1);
	TESTC(m_prgPropertySets != NULL);

	//Verify that the element of the array
	TESTC(m_prgPropertySets->cProperties == 0);
	TESTC(m_prgPropertySets->rgProperties == NULL);
	TESTC(m_prgPropertySets->guidPropertySet == DBPROPSET_PROPERTIESINERROR);

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc GetProperties DBPROPSET_PROPERTIESINERROR with rgPropertyIDs != NULL - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_6()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertyIDSets->cPropertyIDs = 0;
	m_rgPropertyIDSets->guidPropertySet = DBPROPSET_PROPERTIESINERROR;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(1, m_rgPropertyIDSets, 
					&m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED);

	//Count of cPropertySets sets
	TESTC(m_pcPropertySets == 1);
	TESTC(m_prgPropertySets != NULL);

	//Verify that the element of the array
	TESTC(m_prgPropertySets->cProperties == 0);
	TESTC(m_prgPropertySets->rgProperties == NULL);
	TESTC(m_prgPropertySets->guidPropertySet == DBPROPSET_PROPERTIESINERROR);

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc GetProperties DBPROPSET_PROPERTIESINERROR with 2 PropertyIDSets - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_7()
{
	TBEGIN

	HRESULT Exphr = DB_S_ERRORSOCCURRED;

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertyIDSets[0].cPropertyIDs    = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs   = NULL;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_SESSION;

	m_rgPropertyIDSets[1].cPropertyIDs    = 0;
	m_rgPropertyIDSets[1].rgPropertyIDs   = NULL;
	m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_PROPERTIESINERROR;

	//Check to see if the Session Property is Supported
	if( !g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported )
		Exphr = DB_E_ERRORSOCCURRED;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(2, m_rgPropertyIDSets, 
							&m_pcPropertySets, &m_prgPropertySets), Exphr);

	//Count of cPropertySets sets
	TESTC(m_pcPropertySets == 2);
	TESTC(m_prgPropertySets != NULL);

	//Verify that the element of the array
	if( SUCCEEDED(Exphr) )
	{
		TESTC(m_prgPropertySets[0].cProperties == 1);
		TESTC(m_prgPropertySets[0].rgProperties != NULL);
		TESTC(m_prgPropertySets[0].guidPropertySet == DBPROPSET_SESSION);

		TESTC(m_prgPropertySets[0].rgProperties->dwPropertyID == DBPROP_SESS_AUTOCOMMITISOLEVELS);
		TESTC(m_prgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_OK);
		TESTC(m_prgPropertySets[0].rgProperties->colid.eKind == 0);
		TESTC(V_VT(&m_prgPropertySets[0].rgProperties->vValue) == VT_I4);
	}
	else
	{
		TESTC(m_prgPropertySets[0].cProperties == 0);
		TESTC(m_prgPropertySets[0].rgProperties == NULL);
		TESTC(m_prgPropertySets[0].guidPropertySet == DBPROPSET_SESSION);
	}

	TESTC(m_prgPropertySets[1].cProperties == 0);
	TESTC(m_prgPropertySets[1].rgProperties == NULL);
	TESTC(m_prgPropertySets[1].guidPropertySet == DBPROPSET_PROPERTIESINERROR);

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_8()
{
	TBEGIN

	HRESULT  Exphr = DB_S_ERRORSOCCURRED;
	DBPROPID rgPropertyIDs1 = 0;

	//Reset the Property Structures
	ResetProperties();

	//Get a settable DBInit or DataSourceInfo property 
	if( DBSessionNotSupported(&m_rgPropertyIDs[0]) )
		Exphr = DB_E_ERRORSOCCURRED;

	// Assignments
	m_cPropertyIDSets					  = 2;
	
	m_rgPropertyIDSets[0].cPropertyIDs    = 1;
	m_rgPropertyIDSets[0].rgPropertyIDs   = &rgPropertyIDs1;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_SESSION;

	m_rgPropertyIDSets[1].cPropertyIDs    = 1;
	m_rgPropertyIDSets[1].rgPropertyIDs   = &m_rgPropertyIDs[0];
	m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_SESSION;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
		m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), Exphr);

	//Count of cPropertySets sets
	TESTC(m_pcPropertySets == 2);
	TESTC(m_prgPropertySets != NULL);

	//Verify that the element of the array
	TESTC(m_prgPropertySets[0].cProperties == 1);
	TESTC(m_prgPropertySets[0].rgProperties != NULL);
	TESTC(m_prgPropertySets[0].guidPropertySet == DBPROPSET_SESSION);

	TESTC(m_prgPropertySets[0].rgProperties->dwPropertyID == 0);
	TESTC(m_prgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);
	TESTC(m_prgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	TESTC(m_prgPropertySets[0].rgProperties->colid.eKind == 0);
	TESTC(V_VT(&m_prgPropertySets[0].rgProperties->vValue) == VT_EMPTY);

	TESTC(m_prgPropertySets[1].cProperties == 1);
	TESTC(m_prgPropertySets[1].rgProperties != NULL);
	TESTC(m_prgPropertySets[1].guidPropertySet == DBPROPSET_SESSION);

	if( SUCCEEDED(Exphr) )
	{
		TESTC(m_prgPropertySets[1].rgProperties->dwPropertyID == DBPROP_SESS_AUTOCOMMITISOLEVELS);
		TESTC(m_prgPropertySets[1].rgProperties->dwStatus == DBPROPSTATUS_OK);
		TESTC(m_prgPropertySets[1].rgProperties->colid.eKind == 0);
	}
	else
	{
		TESTC(m_prgPropertySets[1].rgProperties->dwPropertyID == DBPROP_SESS_AUTOCOMMITISOLEVELS);
		TESTC(m_prgPropertySets[1].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);
		TESTC(m_prgPropertySets[1].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
		TESTC(m_prgPropertySets[1].rgProperties->colid.eKind == 0);
		TESTC(V_VT(&m_prgPropertySets[1].rgProperties->vValue) == VT_EMPTY);
	}

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_9()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	//Get a settable DBInit or DataSourceInfo property 
	if( !DBSessionNotSupported(&m_rgPropertyIDs[0]) )
		m_rgPropertyIDs[0] = 0;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
		m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED);

	//Count of cPropertySets sets
	TESTC(m_pcPropertySets == 1);
	TESTC(m_prgPropertySets != NULL);

	//Verify that the element of the array
	TESTC(m_prgPropertySets[0].cProperties == 1);
	TESTC(m_prgPropertySets[0].rgProperties != NULL);
	TESTC(m_prgPropertySets[0].guidPropertySet == DBPROPSET_SESSION);

	TESTC(m_prgPropertySets[0].rgProperties->dwPropertyID == m_rgPropertyIDs[0]);
	TESTC(m_prgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);
	TESTC(m_prgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	TESTC(m_prgPropertySets[0].rgProperties->colid.eKind == 0);
	TESTC(V_VT(&m_prgPropertySets[0].rgProperties->vValue) == VT_EMPTY);

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with cPropertyIDs!=0, rgPropertyID=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_10()
{
	TBEGIN

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->SetProperties(1, NULL), E_INVALIDARG);

CLEANUP:
    TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with cProperties!=0, rgProperties=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_11()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
   	m_rgPropertySets->rgProperties = NULL;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->SetProperties(1, m_rgPropertySets), E_INVALIDARG);

CLEANUP:
    
	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_12()
{
	TBEGIN

	HRESULT	Exphr = DB_S_ERRORSOCCURRED;
	
	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertySets[0].guidPropertySet = DBPROPSET_DBINIT;

	//Get a not supported property 
	if( !DBInitNotSupported(&m_rgProperties[0].dwPropertyID) )
		m_rgProperties[0].dwPropertyID = 0;

	//Get a settable Session property 
	if( !g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported )
		Exphr = DB_E_ERRORSOCCURRED;

	//Call SetProperties
	TESTC_(m_pISessionProperties->SetProperties(2, m_rgPropertySets), Exphr);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].rgProperties->dwPropertyID == m_rgProperties[0].dwPropertyID);
	TESTC(m_rgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);
	TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	TESTC(V_VT(&m_rgPropertySets[0].rgProperties->vValue) == VT_EMPTY);
	TESTC(m_rgPropertySets[0].guidPropertySet == DBPROPSET_DBINIT);

	TESTC(m_rgPropertySets[1].rgProperties->dwPropertyID == m_rgProperties[1].dwPropertyID);
	TESTC(m_rgPropertySets[1].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);
	if( g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported )	{
		TESTC(m_rgPropertySets[1].rgProperties->dwStatus == DBPROPSTATUS_OK);
	}
	else {
		TESTC(m_rgPropertySets[1].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	}
	TESTC(V_VT(&m_rgPropertySets[1].rgProperties->vValue) == VT_EMPTY);
	TESTC(m_rgPropertySets[1].guidPropertySet == DBPROPSET_SESSION);

CLEANUP:
    
	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_13()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertySets[0].guidPropertySet = DBPROPSET_DBINIT;

	//Get a not supported property 
	if( !DBInitNotSupported(&m_rgProperties[0].dwPropertyID) )
		m_rgProperties[0].dwPropertyID = 0;

	//Call SetProperties
	TESTC_(m_pISessionProperties->SetProperties(1, m_rgPropertySets), DB_E_ERRORSOCCURRED);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].rgProperties->dwPropertyID == m_rgProperties[0].dwPropertyID);
	TESTC(m_rgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);
	TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	TESTC(V_VT(&m_rgPropertySets[0].rgProperties->vValue) == VT_EMPTY);
	TESTC(m_rgPropertySets[0].guidPropertySet == DBPROPSET_DBINIT);

CLEANUP:
    
	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Compare DBPROP_SUPPORTEDTXNISOLEVELS with DBPROP_SESS_AUTOCOMMITISOLEVELS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_14()
{
	TBEGIN

	ULONG_PTR ulSupportedTxnIsoLevels = 0;
	ULONG_PTR ulAutocommitIsoLevels   = 0;

	//Call GetProperties 
	GetProperty(DBPROP_SUPPORTEDTXNISOLEVELS, DBPROPSET_DATASOURCEINFO, 
								m_pIDBProperties, &ulSupportedTxnIsoLevels);

	//Call GetProperties 
	GetProperty(DBPROP_SESS_AUTOCOMMITISOLEVELS, DBPROPSET_SESSION, 
								m_pISessionProperties, &ulAutocommitIsoLevels);

	//Compare both values should be the same
	if( ulSupportedTxnIsoLevels || ulAutocommitIsoLevels )
		TESTC(!!(ulSupportedTxnIsoLevels & ulAutocommitIsoLevels));

CLEANUP:

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with 0 for cPropertySets - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_15()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertySets[0].guidPropertySet = DBPROPSET_DBINIT;

	//Zero cPropertyIDSets should return S_OK
	TESTC_(m_pISessionProperties->SetProperties(0, m_rgPropertySets), S_OK);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].rgProperties->dwPropertyID == m_rgProperties[0].dwPropertyID);
	TESTC(m_rgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);
	TESTC(V_VT(&m_rgPropertySets[0].rgProperties->vValue) == VT_EMPTY);
	TESTC(m_rgPropertySets[0].guidPropertySet == DBPROPSET_DBINIT);

CLEANUP:

    TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc SetProperties and GetProperties with all Isolation Levels - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_16()
{
	TBEGIN

	ULONG_PTR	ulSupportedTxnIsoLevels = 0;
	ULONG	ulTxnIsolations[] = {0, DBPROPVAL_TI_CHAOS, DBPROPVAL_TI_READUNCOMMITTED, 
								 DBPROPVAL_TI_READCOMMITTED, DBPROPVAL_TI_REPEATABLEREAD,
								 DBPROPVAL_TI_SERIALIZABLE};

	//Reset the Property Structures
	ResetProperties();

	//Call GetProperties 
	GetProperty(DBPROP_SUPPORTEDTXNISOLEVELS, DBPROPSET_DATASOURCEINFO, 
								m_pIDBProperties, &ulSupportedTxnIsoLevels);

	//Loop thru all of the ISO Levels
	for(ULONG i=0; i < (sizeof(ulTxnIsolations)/sizeof(ulTxnIsolations[0])); i++)
	{
		//Assignments
		m_rgPropertySets[0].rgProperties->vValue.vt = VT_I4;
		m_rgPropertySets[0].rgProperties->vValue.lVal = ulTxnIsolations[i];

		//Set all of the Isolation Levels
		if( (!g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported) ||
			((ulSupportedTxnIsoLevels != ulTxnIsolations[i]) &&
			 (!(ulSupportedTxnIsoLevels & ulTxnIsolations[i]))) )
		{
			TESTC_(m_hr=m_pISessionProperties->SetProperties(1, m_rgPropertySets), DB_E_ERRORSOCCURRED);

			// Check the Status
			if( g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported &&
				g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSettable ) {
				TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_BADVALUE);
			}
			else if( g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported ) {
				TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSETTABLE);
			}
			else {
				TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
			}
		}
		else
		{
			TESTC_(m_hr=m_pISessionProperties->SetProperties(1, m_rgPropertySets), S_OK);
			TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_OK);
		}

		//Get all of the Isolation Levels
		if( g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported ) 
		{
			TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
				m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), S_OK);
			TESTC(m_prgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_OK);

			// If the SetProperties Succeeded
			if( m_hr )
				TESTC(m_prgPropertySets[0].rgProperties->vValue.lVal != (long)ulTxnIsolations[i]);
		}
		else 
		{
			TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
				m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED);
			TESTC(m_prgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
		}

		//Free the memory
		FreeProperties(&m_pcPropertySets, &m_prgPropertySets);
	}

CLEANUP:

    TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with cProperties=0, rgProperties=NULL - S_OK or DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_17()
{
	TBEGIN

	HRESULT Exphr = S_OK;

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertyIDSets[0].cPropertyIDs  = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs = NULL;

	if( !g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported )
		Exphr = DB_E_ERRORSOCCURRED;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
		m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), Exphr);

	//Count of cPropertySets sets
	TESTC(m_pcPropertySets == 1);
	TESTC(m_prgPropertySets != NULL);

	if( SUCCEEDED(Exphr) )
	{
		TESTC(m_prgPropertySets->cProperties == 1);
		TESTC(m_prgPropertySets->rgProperties != NULL);
		TESTC(m_prgPropertySets->guidPropertySet == DBPROPSET_SESSION);

		TESTC(m_prgPropertySets->rgProperties->dwPropertyID == DBPROP_SESS_AUTOCOMMITISOLEVELS);
		TESTC(m_prgPropertySets->rgProperties->dwStatus == DBPROPSTATUS_OK);
		TESTC(m_prgPropertySets->rgProperties->colid.eKind == 0);
	}
	else
	{
		COMPARE(m_prgPropertySets->cProperties, 0);
		COMPARE(m_prgPropertySets->rgProperties, NULL);
		COMPARE(m_prgPropertySets->guidPropertySet, DBPROPSET_SESSION);
	}

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with 0, NULL PropSets first - S_OK or DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_18()
{
	TBEGIN

	HRESULT Exphr = S_OK;

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_cPropertyIDSets=2;
	
	m_rgPropertyIDSets[0].cPropertyIDs  = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs = NULL;

	//Assignments
	if( !g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported ) 
		Exphr = DB_E_ERRORSOCCURRED;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
		m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), Exphr);

	//Count of cPropertySets sets
	TESTC(m_pcPropertySets == 2);
	TESTC(m_prgPropertySets != NULL);

	//Verify that the element of the array
	if( SUCCEEDED(Exphr) )
	{
		TESTC(m_prgPropertySets[0].cProperties == 1);
		TESTC(m_prgPropertySets[0].rgProperties != NULL);
		TESTC(m_prgPropertySets[0].guidPropertySet == DBPROPSET_SESSION);

		TESTC(m_prgPropertySets[0].rgProperties->dwPropertyID == DBPROP_SESS_AUTOCOMMITISOLEVELS);
		TESTC(m_prgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_OK);
		TESTC(m_prgPropertySets[0].rgProperties->colid.eKind == 0);
	}
	else
	{
		TESTC(m_prgPropertySets[0].cProperties == 0);
		TESTC(m_prgPropertySets[0].rgProperties == NULL);
		TESTC(m_prgPropertySets[0].guidPropertySet == DBPROPSET_SESSION);
	}

	TESTC(m_prgPropertySets[1].cProperties == 1);
	TESTC(m_prgPropertySets[1].rgProperties != NULL);
	TESTC(m_prgPropertySets[1].guidPropertySet == DBPROPSET_SESSION);

	TESTC(m_prgPropertySets[1].rgProperties->dwPropertyID == DBPROP_SESS_AUTOCOMMITISOLEVELS);
	TESTC(m_prgPropertySets[1].rgProperties->colid.eKind == 0);

	if( SUCCEEDED(Exphr) )
	{
		TESTC(m_prgPropertySets[1].rgProperties->dwStatus == DBPROPSTATUS_OK);
	}
	else
	{
		TESTC(m_prgPropertySets[1].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);
		TESTC(m_prgPropertySets[1].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
		TESTC(V_VT(&m_prgPropertySets[1].rgProperties->vValue) == VT_EMPTY);
	}

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with 0, NULL PropSets second - S_OK or DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_19()
{
	TBEGIN

	HRESULT Exphr = S_OK;

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_cPropertyIDSets = 2;
	
	m_rgPropertyIDSets[1].cPropertyIDs  = 0;
	m_rgPropertyIDSets[1].rgPropertyIDs = NULL;

	//Assignments
	if( !g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported ) 
		Exphr = DB_E_ERRORSOCCURRED;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
			m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), Exphr);

	// Check the return values
	TESTC(m_pcPropertySets == 2);
	TESTC(m_prgPropertySets != NULL);

	//Verify that the element of the array
	TESTC(m_prgPropertySets[0].cProperties == 1);
	TESTC(m_prgPropertySets[0].rgProperties != NULL);
	TESTC(m_prgPropertySets[0].guidPropertySet == DBPROPSET_SESSION);
	TESTC(m_prgPropertySets[0].rgProperties->dwPropertyID == DBPROP_SESS_AUTOCOMMITISOLEVELS);
	TESTC(m_prgPropertySets[0].rgProperties->colid.eKind == 0);

	if( SUCCEEDED(Exphr) ) {
		TESTC(m_prgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_OK);

		TESTC(m_prgPropertySets[1].cProperties == 1);
		TESTC(m_prgPropertySets[1].rgProperties != NULL);
		TESTC(m_prgPropertySets[1].guidPropertySet == DBPROPSET_SESSION);
		TESTC(m_prgPropertySets[1].rgProperties->dwStatus == DBPROPSTATUS_OK);
		TESTC(m_prgPropertySets[1].rgProperties->dwPropertyID == DBPROP_SESS_AUTOCOMMITISOLEVELS);
		TESTC(m_prgPropertySets[1].rgProperties->colid.eKind == 0);
	}
	else{
		TESTC(m_prgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);

		TESTC(m_prgPropertySets[1].cProperties == 0);
		TESTC(m_prgPropertySets[1].rgProperties == NULL);
		TESTC(m_prgPropertySets[1].guidPropertySet == DBPROPSET_SESSION);
	}

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with 0, NULL for cProperties and rgProperties - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_20()
{
	//Reset the Property Structures
	ResetProperties();

	//Assignments
	m_rgPropertySets[0].cProperties = 0;
   	m_rgPropertySets[0].rgProperties = NULL;

	//Call SetProperties
	TESTC_(m_pISessionProperties->SetProperties(1, m_rgPropertySets), S_OK);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].cProperties == 0);
	TESTC(m_rgPropertySets[0].rgProperties == NULL);
	TESTC(m_rgPropertySets[0].guidPropertySet == DBPROPSET_SESSION);

CLEANUP:
	
	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc GetProperties DBPROPSET_SESSIONALL as the PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_21()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertyIDSets[0].cPropertyIDs  = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs = NULL;
	m_rgPropertyIDSets->guidPropertySet = DBPROPSET_SESSIONALL;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
		m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED);

	// Check the return values
	TESTC(m_pcPropertySets == 1);
	TESTC(m_prgPropertySets != NULL);

	TESTC(m_prgPropertySets->cProperties == 0);
	TESTC(m_prgPropertySets->rgProperties == NULL);
	TESTC(m_prgPropertySets->guidPropertySet == DBPROPSET_SESSIONALL);

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with DBPROPOPTIONS_OPTIONAL - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_22()
{
	TBEGIN

	HRESULT ExpHR = DB_E_ERRORSOCCURRED;

	//Reset the Property Structures
	ResetProperties();
	
	// Assignments
	m_rgPropertySets[0].rgProperties->dwOptions = DBPROPOPTIONS_OPTIONAL;
	m_rgPropertySets[0].guidPropertySet = DBPROPSET_DBINIT;

	m_rgPropertySets[1].rgProperties->dwOptions = DBPROPOPTIONS_OPTIONAL;

	//Get a not supported property 
	if( !DBInitNotSupported(&m_rgProperties[0].dwPropertyID) )
		m_rgProperties[0].dwPropertyID = 0;

	//Figure out the return code
	if( g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported )
		ExpHR = DB_S_ERRORSOCCURRED;

	//Call SetProperties
	TESTC_(m_pISessionProperties->SetProperties(2, m_rgPropertySets), ExpHR);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].rgProperties->dwPropertyID == m_rgProperties[0].dwPropertyID);
	TESTC(m_rgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_OPTIONAL);
	TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	TESTC(V_VT(&m_rgPropertySets[0].rgProperties->vValue) == VT_EMPTY);
	TESTC(m_rgPropertySets[0].guidPropertySet == DBPROPSET_DBINIT);

	TESTC(m_rgPropertySets[1].rgProperties->dwPropertyID == m_rgProperties[1].dwPropertyID);
	TESTC(m_rgPropertySets[1].rgProperties->dwOptions == DBPROPOPTIONS_OPTIONAL);
	if( g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported )	{
		TESTC(m_rgPropertySets[1].rgProperties->dwStatus == DBPROPSTATUS_OK);
	}
	else {
		TESTC(m_rgPropertySets[1].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	}
	TESTC(V_VT(&m_rgPropertySets[1].rgProperties->vValue) == VT_EMPTY);
	TESTC(m_rgPropertySets[1].guidPropertySet == DBPROPSET_SESSION);

CLEANUP:

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with an unsupported PropertySet with DBPROPOPTIONS_OPTIONAL - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_23()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();
	
	// Assignments
	m_rgPropertySets[0].rgProperties->dwOptions = DBPROPOPTIONS_OPTIONAL;
	m_rgPropertySets[0].guidPropertySet = DBPROPSET_DBINIT;

	//Get a not supported property 
	if( !DBInitNotSupported(&m_rgProperties[0].dwPropertyID) )
		m_rgProperties[0].dwPropertyID = 0;

	//Call SetProperties
	TESTC_(m_pISessionProperties->SetProperties(1, m_rgPropertySets), DB_E_ERRORSOCCURRED);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].rgProperties->dwPropertyID == m_rgProperties[0].dwPropertyID);
	TESTC(m_rgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_OPTIONAL);
	TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	TESTC(V_VT(&m_rgPropertySets[0].rgProperties->vValue) == VT_EMPTY);
	TESTC(m_rgPropertySets[0].guidPropertySet == DBPROPSET_DBINIT);

CLEANUP:

	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with 0, NULL, DBPROPSET_DBINIT - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_24()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();
	
	// Assignments
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
		m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED);

	// Check the return values
	TESTC(m_pcPropertySets == 1);
	TESTC(m_prgPropertySets != NULL);

	TESTC(m_prgPropertySets->cProperties == 0);
	TESTC(m_prgPropertySets->rgProperties == NULL);
	TESTC(m_prgPropertySets->guidPropertySet == DBPROPSET_DBINIT);

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);
    
	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with 0, NULL, DBPROPSET_DBINITALL - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_25()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();
	
	// Assignments
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINITALL;

	//Should fail gracefully 
	TESTC_(m_pISessionProperties->GetProperties(m_cPropertyIDSets, 
		m_rgPropertyIDSets, &m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED);

	// Check the return values
	TESTC(m_pcPropertySets == 1);
	TESTC(m_prgPropertySets != NULL);

	TESTC(m_prgPropertySets->cProperties == 0);
	TESTC(m_prgPropertySets->rgProperties == NULL);
	TESTC(m_prgPropertySets->guidPropertySet == DBPROPSET_DBINITALL);

CLEANUP:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);
    
	TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with invalid value - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_26()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertySets[0].rgProperties->vValue.vt = VT_I4;
	m_rgPropertySets[0].rgProperties->vValue.lVal = LONG_MAX;

	//Zero cPropertyIDSets should return S_OK
	TESTC_(m_pISessionProperties->SetProperties(1, m_rgPropertySets), DB_E_ERRORSOCCURRED);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);

	if( !g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported )  {
		TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	}
	else if( g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSettable ) {
		TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_BADVALUE);
	}
	else if( m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSETTABLE ) {
		TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSETTABLE);
	}
	else {
		// Could be either DBPROPSTATUS_BADVALUE or DBPROPSTATUS_NOTSETTABLE  
		if( m_rgPropertySets[0].rgProperties->dwStatus != DBPROPSTATUS_NOTSETTABLE ) {
			TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_BADVALUE);
		}
	}

CLEANUP:

    TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with Optional invalid value - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_27()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgPropertySets[0].rgProperties->dwOptions = DBPROPOPTIONS_OPTIONAL;
	m_rgPropertySets[0].rgProperties->vValue.vt = VT_I4;
	m_rgPropertySets[0].rgProperties->vValue.lVal = LONG_MAX;

	//Zero cPropertyIDSets should return S_OK
	TESTC_(m_pISessionProperties->SetProperties(1, m_rgPropertySets), DB_E_ERRORSOCCURRED);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_OPTIONAL);

	if( !g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSupported )  {
		TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);
	}
	else if( g_rgDBProperties[IDX_SESS_AUTOCOMMITISOLEVELS].fSettable ) {
		TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_BADVALUE);
	}
	else if( m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSET ) {
		TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSET);
	}
	else {
		// Could be either DBPROPSTATUS_BADVALUE or DBPROPSTATUS_NOTSETTABLE  
		if( m_rgPropertySets[0].rgProperties->dwStatus != DBPROPSTATUS_NOTSET ) {
			TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_BADVALUE);
		}
	}																			   

CLEANUP:

    TRETURN
}
// }}


// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with invalid propid - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_28()
{
	TBEGIN

	//Reset the Property Structures
	ResetProperties();

	// Assignments
	m_rgProperties[0].dwPropertyID = 0;

	//Zero cPropertyIDSets should return S_OK
	TESTC_(m_pISessionProperties->SetProperties(1, m_rgPropertySets), DB_E_ERRORSOCCURRED);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_REQUIRED);
	TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);

	// Assignments
	m_rgPropertySets[0].rgProperties->dwOptions = DBPROPOPTIONS_OPTIONAL;

	//Zero cPropertyIDSets should return S_OK
	TESTC_(m_pISessionProperties->SetProperties(1, m_rgPropertySets), DB_E_ERRORSOCCURRED);

	//Verify that the element of the array
	TESTC(m_rgPropertySets[0].rgProperties->dwOptions == DBPROPOPTIONS_OPTIONAL);
	TESTC(m_rgPropertySets[0].rgProperties->dwStatus == DBPROPSTATUS_NOTSUPPORTED);

CLEANUP:

    TRETURN
}
// }}


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_Parameters::Terminate()
{
	// Release the Interfaces
	SAFE_RELEASE(m_pISessionProperties);
	SAFE_RELEASE(m_pIDBProperties);

	// {{ TCW_TERM_BASECLASS_CHECK2
	return(TCIDProperties::Terminate());
}	// }}
// }}
// }}


// {{ TCW_TC_PROTOTYPE(TCIDProperties_SetProperties)
//*-----------------------------------------------------------------------
//| Test Case:		TCIDProperties_SetProperties - set all supported properties
//|	Created:		09/19/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_SetProperties::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK
	if( TCIDProperties::Init() )
	// }}
	{
		//Get a IDBProperties pointer
		TESTC(VerifyInterface(m_pThisTestModule->m_pIUnknown, IID_IDBProperties, 
							DATASOURCE_INTERFACE, (IUnknown **)&m_pIDBProperties));

		//Get a ISessionProperties pointer
		TESTC(VerifyInterface(m_pThisTestModule->m_pIUnknown2, IID_ISessionProperties, 
							SESSION_INTERFACE, (IUnknown **)&m_pISessionProperties));

		// Get the default values if we have not done it already
		if( !g_fInitGetPropDefault )
		{
			TESTC(InitGetPropDefault());
			g_fInitGetPropDefault = TRUE;
		}

		return TRUE;
	}

CLEANUP:

	return FALSE;
}


// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ACTIVESESSIONS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_1()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ACTIVESESSIONS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ASYNCTXNABORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_2()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ASYNCTXNABORT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_3()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ASYNCTXNCOMMIT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BYREFACCESSORS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_4()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_BYREFACCESSORS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGLOCATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_5()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CATALOGLOCATION));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGTERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_6()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CATALOGTERM));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_7()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CATALOGUSAGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNDEFINITION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_8()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COLUMNDEFINITION));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_9()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CONCATNULLBEHAVIOR));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCENAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_10()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_DATASOURCENAME));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCEREADONLY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_11()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_DATASOURCEREADONLY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DBMSNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_12()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_DBMSNAME));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DBMSVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_13()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_DBMSVER));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DSOTHREADMODEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_14()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_DSOTHREADMODEL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_GROUPBY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_15()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_GROUPBY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_16()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_HETEROGENEOUSTABLES));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IDENTIFIERCASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_17()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IDENTIFIERCASE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXINDEXSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_18()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXINDEXSIZE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_19()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXOPENCHAPTERS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXORSINFILTER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_20()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXORSINFILTER));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_21()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXROWSIZE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_22()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXROWSIZEINCLUDESBLOB));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_23()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXSORTCOLUMNS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXTABLESINSELECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_24()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXTABLESINSELECT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_25()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MULTIPLEPARAMSETS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLERESULTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_26()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MULTIPLERESULTS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_27()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MULTIPLESTORAGEOBJECTS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTITABLEUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_28()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MULTITABLEUPDATE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NULLCOLLATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_29()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NULLCOLLATION));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OLEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_30()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_OLEOBJECTS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_31()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ORDERBYCOLUMNSINSELECT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_32()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_OUTPUTPARAMETERAVAILABILITY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_33()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_PERSISTENTIDTYPE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_34()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_PREPAREABORTBEHAVIOR));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_35()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_PREPARECOMMITBEHAVIOR));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROCEDURETERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_36()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_PROCEDURETERM));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_37()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_PROVIDERFILENAME));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_38()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_PROVIDEROLEDBVER));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_39()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_PROVIDERVER));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_40()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_QUOTEDIDENTIFIERCASE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_41()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ROWSETCONVERSIONSONCOMMAND));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SCHEMATERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_42()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SCHEMATERM));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SCHEMAUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_43()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SCHEMAUSAGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SORTONINDEX - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_44()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SORTONINDEX));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SQLSUPPORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_45()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SQLSUPPORT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_46()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_STRUCTUREDSTORAGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUBQUERIES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_47()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SUBQUERIES));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_48()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SUPPORTEDTXNDDL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_49()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SUPPORTEDTXNISOLEVELS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_50()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SUPPORTEDTXNISORETAIN));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TABLETERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_51()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_TABLETERM));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_USERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_52()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_USERNAME));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CURRENTCATALOG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_53()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CURRENTCATALOG));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_54()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_AUTH_CACHE_AUTHINFO));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_55()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_AUTH_ENCRYPT_PASSWORD));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_INTEGRATED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_56()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_AUTH_INTEGRATED));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_57()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_AUTH_MASK_PASSWORD));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_58()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_AUTH_PASSWORD));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_59()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_AUTH_PERSIST_ENCRYPTED));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_60()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_USERID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_61()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_AUTH_USERID));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(62)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_ASYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_62()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_ASYNCH));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(63)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_DATASOURCE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_63()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_DATASOURCE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(64)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_HWND - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_64()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_HWND));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(65)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_65()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_IMPERSONATION_LEVEL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(66)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LCID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_66()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_LCID));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(67)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LOCATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_67()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_LOCATION));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(68)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_MODE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_68()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_MODE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(69)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROMPT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_69()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_PROMPT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(70)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_70()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_PROTECTION_LEVEL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(71)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_71()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_PROVIDERSTRING));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(72)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_TIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_72()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_TIMEOUT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(73)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_73()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_AUTOINCREMENT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(74)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_DEFAULT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_74()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_DEFAULT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(75)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_DESCRIPTION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_75()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_DESCRIPTION));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(76)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_76()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_FIXEDLENGTH));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(77)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_NULLABLE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_77()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_NULLABLE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(78)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_PRIMARYKEY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_78()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_PRIMARYKEY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(79)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_UNIQUE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_79()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_UNIQUE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(80)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_80()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_AUTOUPDATE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(81)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_CLUSTERED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_81()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_CLUSTERED));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(82)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_82()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_FILLFACTOR));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(83)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_83()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_INITIALSIZE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(84)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_84()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_NULLCOLLATION));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(85)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_NULLS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_85()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_NULLS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(86)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_86()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_PRIMARYKEY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(87)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_87()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_SORTBOOKMARKS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(88)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_88()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_TEMPINDEX));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(89)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_TYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_89()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_TYPE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(90)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_UNIQUE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_90()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INDEX_UNIQUE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(91)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_91()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SESS_AUTOCOMMITISOLEVELS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(92)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TBL_TEMPTABLE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_92()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_TBL_TEMPTABLE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(93)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ABORTPRESERVE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_93()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ABORTPRESERVE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(94)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_APPENDONLY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_94()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_APPENDONLY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(95)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_95()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_BLOCKINGSTORAGEOBJECTS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(96)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_96()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_BOOKMARKS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(97)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_97()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_BOOKMARKSKIPPED));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(98)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKTYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_98()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_BOOKMARKTYPE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(99)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CACHEDEFERRED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_99()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CACHEDEFERRED));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(100)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_100()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CANFETCHBACKWARDS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(101)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANHOLDROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_101()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CANHOLDROWS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(102)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_102()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CANSCROLLBACKWARDS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(103)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_103()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CHANGEINSERTEDROWS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(104)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNRESTRICT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_104()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COLUMNRESTRICT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(105)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMMANDTIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_105()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COMMANDTIMEOUT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(106)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMMITPRESERVE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_106()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COMMITPRESERVE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(107)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DEFERRED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_107()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_DEFERRED));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(108)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_108()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_DELAYSTORAGEOBJECTS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(109)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_109()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_FILTERCOMPAREOPS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(110)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_FINDCOMPAREOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_110()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_FINDCOMPAREOPS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(111)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IMMOBILEROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_111()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IMMOBILEROWS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(112)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LITERALBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_112()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_LITERALBOOKMARKS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(113)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LITERALIDENTITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_113()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_LITERALIDENTITY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(114)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXOPENROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_114()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXOPENROWS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(115)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXPENDINGROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_115()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXPENDINGROWS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(116)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_116()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAXROWS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(117)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAYWRITECOLUMN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_117()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MAYWRITECOLUMN));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(118)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MEMORYUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_118()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MEMORYUSAGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(119)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_119()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFICATIONPHASES));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(120)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_120()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYCOLUMNSET));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(121)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_121()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWDELETE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(122)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_122()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWFIRSTCHANGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(123)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_123()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWINSERT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(124)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_124()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWRESYNCH));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(125)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_125()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWSETRELEASE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(126)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_126()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWSETFETCHPOSITIONCHANGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(127)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_127()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWUNDOCHANGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(128)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_128()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWUNDODELETE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(129)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_129()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWUNDOINSERT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(130)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_130()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWUPDATE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(131)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_131()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ORDEREDBOOKMARKS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(132)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OTHERINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_132()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_OTHERINSERT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(133)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_133()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_OTHERUPDATEDELETE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(134)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OWNINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_134()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_OWNINSERT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(135)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OWNUPDATEDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_135()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_OWNUPDATEDELETE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(136)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_QUICKRESTART - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_136()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_QUICKRESTART));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(137)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REENTRANTEVENTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_137()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_REENTRANTEVENTS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(138)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REMOVEDELETED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_138()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_REMOVEDELETED));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(139)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_139()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_REPORTMULTIPLECHANGES));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(140)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_140()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_RETURNPENDINGINSERTS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(141)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWRESTRICT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_141()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ROWRESTRICT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(142)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWSET_ASYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_142()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ROWSET_ASYNCH));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(143)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWTHREADMODEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_143()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ROWTHREADMODEL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(144)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERCURSOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_144()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SERVERCURSOR));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(145)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_145()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_TRANSACTEDOBJECT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(146)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_UPDATABILITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_146()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_UPDATABILITY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(147)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STRONGIDENTITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_147()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_STRONGIDENTITY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(148)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IAccessor - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_148()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IACCESSOR));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(149)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IChapteredRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_149()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ICHAPTEREDROWSET));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(150)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_150()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ICOLUMNSINFO));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(151)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_151()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ICOLUMNSROWSET));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(152)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IConnectionPointContainer - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_152()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ICONNECTIONPOINTCONTAINER));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(153)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IConvertType - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_153()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ICONVERTTYPE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(154)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IDBAsynchStatus - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_154()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IDBASYNCHSTATUS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(155)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_155()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSET));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(156)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_156()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETCHANGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(157)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetFind - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_157()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETFIND));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(158)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetIdentity - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_158()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETIDENTITY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(159)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetIndex - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_159()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETINDEX));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(160)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_160()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETINFO));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(161)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetLocate - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_161()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETLOCATE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(162)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetResynch - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_162()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETRESYNCH));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(163)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetScroll - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_163()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETSCROLL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(164)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetUpdate - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_164()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETUPDATE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(165)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetView - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_165()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETVIEW));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(166)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewChapter - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_166()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IVIEWCHAPTER));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(167)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewFilter - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_167()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IVIEWFILTER));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(168)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_168()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IVIEWROWSET));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(169)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewSort - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_169()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IVIEWSORT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(170)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ILockBytes - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_170()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ILOCKBYTES));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(171)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ISequentialStream - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_171()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ISEQUENTIALSTREAM));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(172)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IStorage - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_172()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ISTORAGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(173)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IStream - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_173()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ISTREAM));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(174)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ISupportErrorInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_174()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ISUPPORTERRORINFO));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(175)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ALTERCOLUMN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_175()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ALTERCOLUMN));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(176)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CONNECTIONSTATUS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_176()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CONNECTIONSTATUS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(177)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_177()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_PROVIDERFRIENDLYNAME));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(178)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERMEMORY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_178()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_PROVIDERMEMORY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(179)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_179()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SERVERNAME));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(180)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_180()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_MULTIPLECONNECTIONS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(181)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_RESETDATASOURCE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_181()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_RESETDATASOURCE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(182)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_CATALOG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_182()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_CATALOG));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(183)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_183()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_OLEDBSERVICES));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(184)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNLCID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_184()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COLUMNLCID));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(185)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ACCESSORDER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_185()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ACCESSORDER));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(186)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_186()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_BOOKMARKINFO));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(187)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_HIDDENCOLUMNS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_187()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_HIDDENCOLUMNS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(188)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LOCKMODE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_188()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_LOCKMODE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(189)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_189()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFICATIONGRANULARITY));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(190)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROW_BULKOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_190()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ROW_BULKOPS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(191)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERDATAONINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_191()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_SERVERDATAONINSERT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(192)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STORAGEFLAGS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_192()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_STORAGEFLAGS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(193)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_UNIQUEROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_193()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_UNIQUEROWS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(194)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IMultipleResults - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_194()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IMULTIPLERESULTS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(195)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetRefresh - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_195()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETREFRESH));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(196)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IParentRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_196()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IPARENTROWSET));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(197)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_INCREMENT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_197()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_INCREMENT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(198)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_ISLONG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_198()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_ISLONG));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(199)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_SEED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_199()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COL_SEED));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(200)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMSERVICES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_200()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_COMSERVICES));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(201)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCETYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_201()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_DATASOURCETYPE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(202)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_GENERATEURL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_202()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_GENERATEURL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(203)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_203()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_OPENROWSETSUPPORT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(204)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_BINDFLAGS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_204()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_BINDFLAGS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(205)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_205()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_GENERALTIMEOUT));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(206)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LOCKOWNER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_206()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_INIT_LOCKOWNER));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(207)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CLIENTCURSOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_207()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_CLIENTCURSOR));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(208)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_208()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_NOTIFYROWSETCHANGED));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(209)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IBindResource - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_209()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IBINDRESOURCE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(210)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsInfo2 - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_210()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ICOLUMNSINFO2));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(211)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ICreateRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_211()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ICREATEROW));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(212)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_212()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IGETROW));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(213)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetSession - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_213()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IGETSESSION));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(214)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetSourceRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_214()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IGETSOURCEROW));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(215)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_215()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROW));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(216)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_216()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWCHANGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(217)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowSchemaChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_217()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSCHEMACHANGE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(218)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetCurrentIndex - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_218()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_IROWSETCURRENTINDEX));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(219)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IScopedOperations - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_219()
{
	TBEGIN;

	// Verify this property
	TESTC(VerifyProperty(IDX_ISCOPEDOPERATIONS));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_SetProperties::Terminate()
{
	// Release the Interfaces
	SAFE_RELEASE(m_pIDBProperties)
	SAFE_RELEASE(m_pISessionProperties);

	// {{ TCW_TERM_BASECLASS_CHECK2
	return (TCIDProperties::Terminate());
}	// }}
// }}
// }}


// {{ TCW_TC_PROTOTYPE(TCZombie)
//*-----------------------------------------------------------------------
//| Test Case:		TCZombie - Induce zombie states on the Session
//|	Created:		08/15/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCZombie::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*);
	
	// {{ TCW_INIT_BASECLASS_CHECK
	if(CTransaction::Init())
	// }}
	{
		// Register Interface with Zombie
		if(RegisterInterface(SESSION_INTERFACE, IID_ISessionProperties, 0, NULL))
			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;
}

// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Abort ISessionProperties with fRetaining=TRUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCZombie::Variation_1()
{
	// S_OK - Abort ISessionProperties::GetProperties with fRetaining=TRUE
	return TestTxn(ETXN_ABORT, TRUE);
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Abort ISessionProperties with fRetaining=FALSE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCZombie::Variation_2()
{
	// S_OK - Abort ISessionProperties::GetProperties with fRetaining=FALSE
	return TestTxn(ETXN_ABORT, FALSE);
}
// }}

// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Commit ISessionProperties with fRetaining=TRUE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCZombie::Variation_3()
{
	// S_OK - Commit ISessionProperties::GetProperties with fRetaining=TRUE
	return TestTxn(ETXN_COMMIT, TRUE);
}
// }}

// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc S_OK - Commit ISessionProperties with fRetaining=FALSE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCZombie::Variation_4()
{
	// S_OK - Commit ISessionProperties::GetProperties with fRetaining=FALSE
	return TestTxn(ETXN_COMMIT, FALSE);
}
// }}

// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCZombie::Terminate()
{
	// {{ TCW_TERM_BASECLASS_CHECK2
	return(CTransaction::Terminate());
}	// }}
// }}
// }}


// {{ TCW_TC_PROTOTYPE(TCExtendedErrors)
//*-----------------------------------------------------------------------
//| Test Case:		TCExtendedErrors - Extended Errors
//|	Created:		07/04/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//

BOOL TCExtendedErrors::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK	
	if(TCIDProperties::Init())
	// }}
	{
		//Get a ISessionProperties pointer
		if(!SUCCEEDED(((IDBCreateCommand *)(m_pThisTestModule->m_pIUnknown2))->
				QueryInterface(IID_ISessionProperties,(LPVOID *)&m_pISessionProperties)))
			return FALSE;

		m_cPropertyIDSets=1;
		m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;
		m_rgPropertyIDSets->cPropertyIDs=1;
		m_rgPropertyIDSets->guidPropertySet=DBPROPSET_SESSION;

		return TRUE;
	}
	return FALSE;
}


// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc Valid GetProperties call with previous error object existing.
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_1()
{
	// For method GetProperties of the interface, first create an error object on
	// the current thread, then try get S_OK from the method.
	// We then check extended errors to verify nothing is set since an 
	// error object shouldn't exist following a successful call.
	
	// Assignments
	m_fSuccess = TEST_FAIL;
	
	//Create an error object
	m_pExtError->CauseError();
	
	//All properties
	m_hr=m_pISessionProperties->GetProperties(0, NULL,
								&m_pcPropertySets, &m_prgPropertySets);

	if(m_hr==ResultFromScode(S_OK))
	{
		//Do extended check following GetProperties
		m_fSuccess = XCHECK(m_pISessionProperties, IID_ISessionProperties, m_hr);	
	}
	
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc DB_E_ERRORSOCCURRED GetProperties call with previous error object existing.
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_2()
{
	//For method GetProperties of the interface, first create an error object on
	//the current thread, then try get an failure from the method.
	//We then check extended errors to verify the right extended error behavior.
	
	//Assignments
	m_rgPropertyIDs[0]	= DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DBINIT;
	m_fSuccess = TEST_FAIL;
	
	//Create an error object
	m_pExtError->CauseError();
	
	//DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
	m_hr=m_pISessionProperties->GetProperties(m_cPropertyIDSets, m_rgPropertyIDSets,
								&m_pcPropertySets, &m_prgPropertySets);

	if(m_hr==ResultFromScode(DB_E_ERRORSOCCURRED))
	{
		//Do extended check following GetProperties
		m_fSuccess = XCHECK(m_pISessionProperties, IID_ISessionProperties, m_hr);	
	}

	//Free memory from GetProperties
	FreeProperties(	&m_pcPropertySets, &m_prgPropertySets);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc E_INVALIDARG GetProperties call with previous error object existing.
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_3()
{
	//For method GetProperties of the interface, with no error object on
	//the current thread, then try get an failure from the method.
	//We then check extended errors to verify the right extended error behavior.
	
	//Assignments
	m_fSuccess = TEST_FAIL;

	//Null pcPropertySets should fail gracefully 
	if(CHECK(m_hr=m_pISessionProperties->GetProperties(0, NULL,
								NULL, &m_prgPropertySets), E_INVALIDARG))
	{
		//Do extended check following GetProperties
		m_fSuccess = XCHECK(m_pISessionProperties, IID_ISessionProperties, m_hr);	
		if(!m_prgPropertySets)
			m_fSuccess &= TEST_PASS;
	}

	return m_fSuccess;
}
// }}


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCExtendedErrors::Terminate()
{
	// Release IDBInitialize Pointer
	SAFE_RELEASE(m_pISessionProperties);

	// {{ TCW_TERM_BASECLASS_CHECK2
	return(TCIDProperties::Terminate());
}	// }}

// }}

//--------------------------------------------------------------------
// @mfunc Test Zombie cases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCZombie::TestTxn(ETXN eTxn, BOOL fRetaining)
{
	TBEGIN;

	int					fPassFail			= TEST_FAIL;	// ReturnValue
	HRESULT				ExpectedHr			= E_UNEXPECTED;	// Expected HRESULT
	DBCOUNTITEM			cRowsObtained		= 0;			// Number of rows returned, should be 1
	HROW *				rghRows				= NULL;			// Array of Row Handles
	ISessionProperties*	pISessionProperties	= NULL;			// ISessionProperties Pointer
	ULONG				cPropertySets		= 0;
	DBPROPSET *			pPropertySets		= NULL;

	// Retrieve an Interface pointer to ISessionProperties within a Transaction
 	TESTC(StartTransaction(SELECT_ALLFROMTBL, (IUnknown**)&pISessionProperties));

	// Obtain the ABORT or COMMIT PRESERVE flag and adjust ExpectedHr 
	if( ((eTxn == ETXN_COMMIT) && (m_fCommitPreserve)) ||
	    ((eTxn == ETXN_ABORT) && (m_fAbortPreserve)) )
		ExpectedHr = S_OK;

	// Commit or Abort the transaction, with retention as specified
	if( ((eTxn == ETXN_COMMIT) && (!GetCommit(fRetaining))) ||
	    ((eTxn == ETXN_ABORT)  && (!GetAbort(fRetaining))) )
		goto CLEANUP;

	// Test zombie
	TESTC_(m_pIRowset->GetNextRows(0,0,1,&cRowsObtained,&rghRows), ExpectedHr);
		
	// Call ISessionProperties::GetProperties
	TESTC_(pISessionProperties->GetProperties(0,NULL,&cPropertySets,&pPropertySets),S_OK);

CLEANUP:
	
	// Release the row handle on the 1st rowset
	CHECK(m_pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL), S_OK);
	PROVIDER_FREE(rghRows);

	// Cleanup Transactions
	CleanUpTransaction(fRetaining ? S_OK : XACT_E_NOTRANSACTION);

	// Release the ISessionProperties
	SAFE_RELEASE(pISessionProperties);
	FreeProperties(&cPropertySets,&pPropertySets);

    TRETURN;
}
