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

28132 lines
699 KiB
C++

//--------------------------------------------------------------------
// Microsoft OLE DB Test
//
// Copyright (C) 1995-2000 Microsoft Corporation
//
// @doc
//
// @module IRNotify.cpp | This module is a general library for interface testing
//
///////////////////////////////////////////////////////////////////
// Includes
//
///////////////////////////////////////////////////////////////////
#define DBINITCONSTANTS // Must be defined to initialize constants in OLEDB.H
#define INITGUID
#include "MODStandard.hpp"
#include "IRNotify.h"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Module Values
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// {{ TCW_MODULE_GLOBALS
DECLARE_MODULE_CLSID = { 0x7cd27cb8, 0xa1f8, 0x11d0, { 0x94, 0xda, 0x00, 0xc0, 0x4f, 0xb6, 0x6a, 0x50 }};
DECLARE_MODULE_NAME("IRowsetNotify");
DECLARE_MODULE_OWNER("Microsoft");
DECLARE_MODULE_DESCRIP("Test IRowsetNotify Interface");
DECLARE_MODULE_VERSION(795921705);
// TCW_WizardVersion(2)
// TCW_Automation(True)
// }} TCW_MODULE_GLOBALS_END
//--------------------------------------------------------------------
// @func Module level initialization routine
//
// @rdesc Success or Failure
// @flag TRUE | Successful initialization
// @flag FALSE | Initialization problems
//
BOOL ModuleInit(CThisTestModule* pThisTestModule)
{
return CommonModuleInit(pThisTestModule, IID_IRowsetNotify, SIZEOF_TABLE, ROWSET_INTERFACE);
}
//--------------------------------------------------------------------
// @func Module level termination routine
//
// @rdesc Success or Failure
// @flag TRUE | Successful initialization
// @flag FALSE | Initialization problems
//
BOOL ModuleTerminate(CThisTestModule* pThisTestModule)
{
return CommonModuleTerminate(pThisTestModule);
}
///////////////////////////////////////////////////////////////////////////////
// Helper Functions
//
///////////////////////////////////////////////////////////////////////////////
BOOL IsValidEvent(DBREASON eReason, DBEVENTPHASE ePhase)
{
//This check is a little more than just making sure eReason/ePhase
//fall into a valid range. Some reasons only have 1 phase, while others
//have all phases...
//So this comparion is, "is this a valid phase for this reason"...
switch(eReason)
{
//All Phases can occur
case DBREASON_ROWSET_FETCHPOSITIONCHANGE:
case DBREASON_ROWSET_CHANGED:
case DBREASON_COLUMN_SET:
case DBREASON_ROW_DELETE:
case DBREASON_ROW_FIRSTCHANGE:
case DBREASON_ROW_INSERT:
case DBREASON_ROW_RESYNCH:
case DBREASON_ROW_UNDOCHANGE:
case DBREASON_ROW_UNDOINSERT:
case DBREASON_ROW_UNDODELETE:
case DBREASON_ROW_UPDATE:
switch(ePhase)
{
case DBEVENTPHASE_OKTODO:
case DBEVENTPHASE_ABOUTTODO:
case DBEVENTPHASE_SYNCHAFTER:
case DBEVENTPHASE_DIDEVENT:
case DBEVENTPHASE_FAILEDTODO:
return TRUE;
default:
break;
}
//DIDEVENT can occur
case DBREASON_ROWSET_RELEASE:
case DBREASON_COLUMN_RECALCULATED:
case DBREASON_ROW_ACTIVATE:
case DBREASON_ROW_RELEASE:
switch(ePhase)
{
case DBEVENTPHASE_DIDEVENT:
return TRUE;
default:
break;
}
}
return FALSE;
}
REASONTYPE ReasonType(DBREASON eReason)
{
ASSERT(IsValidEvent(eReason));
switch(eReason)
{
//All Phases can occur
case DBREASON_ROWSET_FETCHPOSITIONCHANGE:
case DBREASON_ROWSET_CHANGED:
case DBREASON_ROWSET_RELEASE:
return REASONTYPE_ROWSET;
case DBREASON_COLUMN_SET:
case DBREASON_COLUMN_RECALCULATED:
return REASONTYPE_COLUMN;
case DBREASON_ROW_DELETE:
case DBREASON_ROW_FIRSTCHANGE:
case DBREASON_ROW_INSERT:
case DBREASON_ROW_RESYNCH:
case DBREASON_ROW_UNDOCHANGE:
case DBREASON_ROW_UNDOINSERT:
case DBREASON_ROW_UNDODELETE:
case DBREASON_ROW_UPDATE:
case DBREASON_ROW_ACTIVATE:
case DBREASON_ROW_RELEASE:
return REASONTYPE_ROW;
}
return REASONTYPE_INVALID;
}
BOOL IsMultiPhaseReason(DBREASON eReason)
{
ASSERT(IsValidEvent(eReason));
switch(eReason)
{
//All Single Phase Reasons
case DBREASON_ROWSET_RELEASE:
case DBREASON_COLUMN_RECALCULATED:
case DBREASON_ROW_ACTIVATE:
case DBREASON_ROW_RELEASE:
return FALSE;
}
return TRUE;
}
BOOL DisplayNotification(WCHAR* pwszHeader, DBCOUNTITEM cRows, const HROW rghRows[], DBORDINAL cColumns, DBORDINAL* rgColumns, DBREASON eReason, DBEVENTPHASE ePhase, BOOL fError)
{
//Header
TOUTPUT_(pwszHeader);
//Reason
TOUTPUT_(L" - " << GetReasonDesc(eReason));
//Phase
TOUTPUT_(L" - " << GetPhaseDesc(ePhase));
//cRows
if(cRows)
{
TOUTPUT_(L" - cRows - " << cRows);
TOUTPUT_(L"[");
for(DBCOUNTITEM i=0; i<cRows; i++)
{
if(rghRows)
TOUTPUT_(rghRows[i]);
if(i < cRows-1)
TOUTPUT_(",");
}
TOUTPUT_(L"]");
}
//cColumns
if(cColumns)
{
TOUTPUT_(L" - cColumns - " << cColumns);
TOUTPUT_(L"[");
for(DBORDINAL i=0; i<cColumns; i++)
{
if(rgColumns)
TOUTPUT_(rgColumns[i]);
if(i < cColumns-1)
TOUTPUT_(",");
}
TOUTPUT_(L"]");
}
//End on line
TOUTPUT("");
//Increment Error Count (if an error)
if(fError)
(*(GetModInfo()->GetErrorObject()))++;
return TRUE;
}
BOOL IsSameRow(IUnknown* pIUnkRowset, HROW hRow1, HROW hRow2)
{
TBEGIN
IRowsetIdentity* pIRowsetIdentity = NULL;
if(hRow1 != hRow2)
{
//Obtain the IRowsetIdentity interface
TESTC_(QI(pIUnkRowset, IID_IRowsetIdentity, (void**)&pIRowsetIdentity),S_OK);
//See of these rows are equal...
QTESTC_(pIRowsetIdentity->IsSameRow(hRow1, hRow2),S_OK);
}
CLEANUP:
SAFE_RELEASE(pIRowsetIdentity);
TRETURN
}
///////////////////////////////////////////////////////////////////////////////
// COMMAND
//
///////////////////////////////////////////////////////////////////////////////
COMMAND::COMMAND
(
COMMANDTYPE eCommandType
)
{
m_eCommandType = eCommandType;
m_pvObjectId = NULL;
m_ulCommandLevel = 0;
m_cThreads = 0;
m_eReason = 0;
m_ePhase = 0;
m_cRows = 0;
m_cColumns = 0;
m_rgColumns = NULL;
m_dwOption = 0;
m_hrExpected = S_OK;
m_fCanceled = FALSE;
}
COMMAND::COMMAND
(
COMMANDTYPE eCommandType,
void* pvObjectId,
ULONG ulCommandLevel,
ULONG cThreads,
DBREASON eReason,
DBEVENTPHASE ePhase,
HRESULT hrExpected,
DBCOUNTITEM cRows,
ULONG rgRowIds[],
DBORDINAL cColumns,
ULONG rgColumns[],
DWORD dwOption
)
{
ASSERT(pvObjectId);
m_pvObjectId = pvObjectId;
m_eCommandType = eCommandType;
m_ulCommandLevel= ulCommandLevel;
m_cThreads = cThreads;
m_eReason = eReason;
m_ePhase = ePhase;
m_cRows = cRows;
memset(m_rgRowIds, 0, MAX_ROW_COUNT * sizeof(DBCOUNTITEM));
memset(m_rghRows, 0, MAX_ROW_COUNT * sizeof(HROW));
DBCOUNTITEM sum = 0;
DBCOUNTITEM i = 0;
for(i=0; i<cRows; i++)
{
m_rgRowIds[i] = rgRowIds[i];
sum = sum + rgRowIds[i];
}
for(i=cRows; i<MAX_ROW_COUNT; i++)
{
m_rgRowIds[i] = sum + i-cRows+1;
}
m_cColumns = cColumns;
SAFE_ALLOC(m_rgColumns, DBORDINAL, cColumns);
memset(m_rgColumns, 0, (size_t)(cColumns*sizeof(DBORDINAL)));
for(i=0; i<cColumns; i++)
m_rgColumns[i] = rgColumns[i];
m_dwOption = dwOption;
m_hrExpected = hrExpected;
m_fCanceled = FALSE;
CLEANUP:
;
}
COMMAND::~COMMAND()
{
SAFE_FREE(m_rgColumns);
}
BOOL COMMAND::DisplayCommand()
{
TOUTPUT_("Unreached Command - ");
switch(m_eCommandType)
{
case RETURN_ACCEPT: TOUTPUT_("RETURN_ACCEPT"); break;
case RETURN_VETO: TOUTPUT_("RETURN_VETO"); break;
case RETURN_EFAIL: TOUTPUT_("RETURN_EFAIL"); break;
case RETURN_EOUTOFMEMORY: TOUTPUT_("RETURN_EOUTOFMEMORY"); break;
case RETURN_EINVALIDARG: TOUTPUT_("RETURN_EINVALIDARG"); break;
case RETURN_UNWANTEDREASON: TOUTPUT_("RETURN_UNWANTEDREASON"); break;
case RETURN_UNWANTEDPHASE: TOUTPUT_("RETURN_UNWANTEDPHASE"); break;
case RETURN_ADVISE: TOUTPUT_("RETURN_ADVISE"); break;
case RETURN_UNADVISE: TOUTPUT_("RETURN_UNADVISE"); break;
default:
TOUTPUT_("OLEDB Method ");
break;
}
//Display the rest of the info
return DisplayNotification(NULL, m_cRows, m_rghRows, m_cColumns, m_rgColumns, m_eReason, m_ePhase, FALSE);
}
///////////////////////////////////////////////////////////////////////////////
// ROWINFO
//
///////////////////////////////////////////////////////////////////////////////
ROWINFO::ROWINFO(HROW hRow)
{
m_eRowStatus = ROWSTATUS_NOCHANGE;
m_hRow = hRow;
m_cRefCount = 1;
m_cbBookmark = 0;
m_pBookmark = NULL;
m_fFirstChange = TRUE;
m_pNewData = NULL;
m_pOrgData = NULL;
}
ROWINFO::~ROWINFO()
{
PROVIDER_FREE(m_pBookmark);
PROVIDER_FREE(m_pNewData);
PROVIDER_FREE(m_pOrgData);
}
///////////////////////////////////////////////////////////////////////////////
// EXPECT (Constructor)
//
///////////////////////////////////////////////////////////////////////////////
EXPECT::EXPECT(CImpIListener* pListener, IRowset* pIRowset, DBCOUNTITEM cRows, HROW* rghRows, DBORDINAL cColumns, DBORDINAL rgColumns[], DBREASON eReason, DBEVENTPHASE ePhase)
{
ASSERT(pListener);
ASSERT(pIRowset);
DBCOUNTITEM i = 0;
m_pListener = pListener;
m_pIRowset = pIRowset;
//Rows
m_cRows = cRows;
memset(m_rghRows, 0, sizeof(m_rghRows));
for(i=0; i<cRows; i++)
m_rghRows[i] = rghRows[i];
//Columns
m_cColumns = cColumns;
SAFE_ALLOC(m_rgColumns, DBORDINAL, cColumns);
memset(m_rgColumns, 0, (size_t)(cColumns*sizeof(DBORDINAL)));
for(i=0; i<cColumns; i++)
m_rgColumns[i] = rgColumns[i];
//Notification
m_eReason = eReason;
m_ePhase = ePhase;
m_ulTimesNotified = 0;
m_fCanceled = FALSE;
m_bCompleted = FALSE;
m_fOptional = FALSE;
CLEANUP:
;
}
///////////////////////////////////////////////////////////////////////////////
// EXPECT (Copy Constructor)
//
///////////////////////////////////////////////////////////////////////////////
EXPECT::EXPECT(const EXPECT& rExpect)
{
m_pListener = rExpect.m_pListener;
m_pIRowset = rExpect.m_pIRowset;
DBCOUNTITEM i = 0;
//Rows
m_cRows = rExpect.m_cRows;
for(i=0; i<rExpect.m_cRows; i++)
m_rghRows[i] = rExpect.m_rghRows[i];
//Columns
m_cColumns = rExpect.m_cColumns;
SAFE_ALLOC(m_rgColumns, DBORDINAL, m_cColumns);
memset(m_rgColumns, 0, (size_t)(m_cColumns*sizeof(DBORDINAL)));
for(i=0; i<rExpect.m_cColumns; i++)
m_rgColumns[i] = rExpect.m_rgColumns[i];
//Notification
m_eReason = rExpect.m_eReason;
m_ePhase = rExpect.m_ePhase;
m_ulTimesNotified = rExpect.m_ulTimesNotified;
m_fCanceled = rExpect.m_fCanceled;
m_bCompleted = rExpect.m_bCompleted;
m_fOptional = rExpect.m_fOptional;
CLEANUP:
;
}
EXPECT::~EXPECT()
{
SAFE_FREE(m_rgColumns);
}
BOOL EXPECT::SetPhase(DBEVENTPHASE ePhase)
{
m_ePhase = ePhase;
return TRUE;
}
BOOL EXPECT::SetNextPhase()
{
if(m_pListener->NextPhase(m_eReason, m_ePhase))
{
SetPhase(m_pListener->NextPhase(m_eReason, m_ePhase));
}
else
{
m_bCompleted = TRUE;
}
return TRUE;
}
BOOL EXPECT::IsEqual(DBEVENTPHASE ePhase)
{
return IsEqual(m_pListener, m_pIRowset, m_cRows, m_rghRows, m_cColumns, m_rgColumns, m_eReason, ePhase);
}
BOOL EXPECT::IsEqual(CImpIListener* pListener, IRowset* pIRowset, DBCOUNTITEM cRows, HROW* rghRows, DBORDINAL cColumns, DBORDINAL rgColumns[], DBREASON eReason, DBEVENTPHASE ePhase)
{
TBEGIN
ASSERT(pListener);
ASSERT(pIRowset);
DBORDINAL i;
//Listener
QTESTC(m_pListener == pListener);
//IRowset
QTESTC(m_pIRowset == pIRowset);
//Rows
QTESTC(m_cRows == cRows);
for(i=0; i<cRows; i++)
QTESTC(IsSameRow(m_pIRowset, m_rghRows[i], rghRows[i]));
//Columns
QTESTC(m_cColumns == cColumns);
for(i=0; i<cColumns; i++)
QTESTC(m_rgColumns[i] == rgColumns[i]);
//Notification
QTESTC(m_eReason == eReason);
QTESTC(m_ePhase == ePhase);
CLEANUP:
TRETURN
}
BOOL EXPECT::VerifyEqual(DBEVENTPHASE ePhase)
{
// return VerifyEqual(m_pListener, m_pIRowset, m_cRows, m_rghRows, m_cColumns, m_rgColumns, m_eReason, ePhase);
if (!IsEqual(ePhase))
{
DisplayNotification(L"Expected: ", m_cRows, m_rghRows, m_cColumns, m_rgColumns, m_eReason, ePhase);
return FALSE;
}
return TRUE;
}
BOOL EXPECT::VerifyEqual(CImpIListener* pListener, IRowset* pIRowset, DBCOUNTITEM cRows, HROW rghRows[], DBORDINAL cColumns, DBORDINAL rgColumns[], DBREASON eReason, DBEVENTPHASE ePhase)
{
ASSERT(pListener);
ASSERT(pIRowset);
if(!IsEqual(pListener, pIRowset, cRows, rghRows, cColumns, rgColumns, eReason, ePhase))
{
DisplayNotification(L"Unexpected: ", cRows, rghRows, cColumns, rgColumns, eReason, ePhase);
return FALSE;
}
return TRUE;
}
BOOL EXPECT::DisplayExpectation(WCHAR* pwszTitle)
{
return DisplayNotification(pwszTitle, m_cRows, m_rghRows, m_cColumns, m_rgColumns, m_eReason, m_ePhase);
}
BOOL EXPECT::VerifyComplete()
{
TBEGIN
if(m_pListener->IsWantedReason(m_eReason))
{
if(!m_pListener->IsWantedPhase(m_eReason, DBEVENTPHASE_DIDEVENT))
{
if(IsMultiPhaseReason(m_eReason) && m_ulTimesNotified==0)
DisplayExpectation();
QTESTC(VerifyEqual(DBEVENTPHASE_DIDEVENT));
}
else
{
//We should have been notified for this reason
//If not we have a problem, display expected notification
//The only exception to the rule is ROW_RELEASE.
//Some providers may not have exact refcounts, or the rows may always
//be active, (row count always 1), so just indicate warning...
//The other exception to the rule is DBREASON_COLUMN_RECALCULATED
//Providers are not required to support notifications for this reason (see MDAC bug 16595)
if(m_eReason == DBREASON_ROW_RELEASE)
{
if(m_ulTimesNotified == 0 || !m_bCompleted)
TWARNING(L"ROW_RELEASE never called, Row RefCounts may not be exact...");
QTESTC(VerifyEqual(DBEVENTPHASE_DIDEVENT));
}
else if (m_eReason == DBREASON_COLUMN_RECALCULATED)
{ if(m_ulTimesNotified == 0 || !m_bCompleted)
TWARNING(L"Did not receive notifications for DBREASON_COLUMN_RECALCULATED ...");
QTESTC(VerifyEqual(DBEVENTPHASE_DIDEVENT));
}
else if (m_eReason == DBREASON_ROW_ACTIVATE)
{ if(m_ulTimesNotified == 0)
{
DBCOUNTITEM cRowsExpected = 0;
for (DBCOUNTITEM i=0; i<m_cRows; i++)
if (m_rghRows[i] == DB_NULL_HROW)
cRowsExpected++;
if(cRowsExpected)
DisplayExpectation();
}
}
else
{
if(m_ulTimesNotified == 0 || !m_bCompleted)
DisplayExpectation();
QTESTC(VerifyEqual(DBEVENTPHASE_DIDEVENT));
}
}
}
CLEANUP:
TRETURN;
}
BOOL EXPECT::VerifyInComplete()
{
TBEGIN
if(m_ulTimesNotified)
{
QTESTC(VerifyEqual(DBEVENTPHASE_FAILEDTODO));
if(!m_bCompleted)
DisplayExpectation();
}
if(m_ulTimesNotified == 0)
{
if(m_bCompleted)
DisplayExpectation();
if(IsMultiPhaseReason(m_eReason))
{
QTESTC(VerifyEqual(DBEVENTPHASE_OKTODO));
}
else
{
QTESTC(VerifyEqual(DBEVENTPHASE_DIDEVENT));
}
}
CLEANUP:
TRETURN;
}
///////////////////////////////////////////////////////////////////////////////
// CRowsetObj
//
///////////////////////////////////////////////////////////////////////////////
CRowsetObj::CRowsetObj()
{
InitializeCriticalSection(&m_DataCriticalSection);
m_cRowsetRef = 0;
m_ulNextFetchPos = 0;
m_fTableAltered = FALSE;
m_dwRowsetMode = 0;
//Initialize all properties
m_ulSupportedGranularity = 0;
m_ulSupportedPhases = 0;
m_bReentrantEvents = TRUE;
m_bQuickRestart = TRUE;
//SetData(Updatable) Accessor and bindings.
m_cUpBindings = 0;
m_rgUpBindings = NULL;
m_hUpAccessor = NULL;
memset(m_rgCancelableEvents, 0, sizeof(m_rgCancelableEvents));
}
CRowsetObj::~CRowsetObj()
{
//SetData(Updatable) Accessor and bindings.
FreeAccessorBindings(m_cUpBindings, m_rgUpBindings);
ReleaseAccessor(m_hUpAccessor);
DeleteCriticalSection(&m_DataCriticalSection);
DestroyRowData();
}
BOOL CRowsetObj::IsBufferedMode()
{
return (m_dwRowsetMode & CHANGE_BUFFERRED);
}
HRESULT CRowsetObj::CreateRowset(ROWSET_MODE dwRowsetMode)
{
HRESULT hr = S_OK;
m_dwRowsetMode = dwRowsetMode;
//Query for table, default: Select * from table
EQUERY eQuery = USE_SUPPORTED_SELECT_ALLFROMTBL;
//Set required properties
TESTC(SetProperty(DBPROP_CANHOLDROWS));
TESTC(SetProperty(DBPROP_IConnectionPointContainer));
TESTC(SetProperty(DBPROP_IRowsetIdentity));
//EMPTY_ROWSET
if(dwRowsetMode & EMPTY_ROWSET)
eQuery = SELECT_EMPTYROWSET;
//ROWSETSCROLL_ROWSET
if(dwRowsetMode & ROWSETSCROLL_ROWSET)
TESTC(SetProperty(DBPROP_IRowsetScroll));
//ROWSETINDEX_ROWSET
if(dwRowsetMode & ROWSETINDEX_ROWSET)
TESTC(SetProperty(DBPROP_IRowsetIndex));
//ROWSETLOCATE_ROWSET
if(dwRowsetMode & ROWSETLOCATE_ROWSET)
TESTC(SetProperty(DBPROP_IRowsetLocate));
//SCROLLBACKWARDS
if(dwRowsetMode & SCROLLBACKWARDS)
TESTC(SetProperty(DBPROP_CANSCROLLBACKWARDS));
//FETCHBACKWARDS
if(dwRowsetMode & FETCHBACKWARDS)
TESTC(SetProperty(DBPROP_CANFETCHBACKWARDS));
//RESYNCH_ROWSET
if(dwRowsetMode & RESYNCH_ROWSET)
TESTC(SetProperty(DBPROP_IRowsetResynch));
//REFRESH_ROWSET
if(dwRowsetMode & REFRESH_ROWSET)
TESTC(SetProperty(DBPROP_IRowsetRefresh));
//CHANGE_IMMEDIATE
if(dwRowsetMode & CHANGE_IMMEDIATE)
TESTC(SetProperty(DBPROP_IRowsetChange));
//CHANGE_BUFFERRED
if(dwRowsetMode & CHANGE_BUFFERRED)
{
TESTC(SetProperty(DBPROP_IRowsetChange));
TESTC(SetProperty(DBPROP_IRowsetUpdate));
}
//CHANGE_QBU
if(dwRowsetMode & CHANGE_QBU)
{
TESTC(SetProperty(DBPROP_IRowsetChange));
TESTC(SetProperty(KAGPROP_QUERYBASEDUPDATES, DBPROPSET_PROVIDERROWSET));
}
//COMPUTED_COLUMNS
if((dwRowsetMode & COMPUTED_COLUMNS) || (dwRowsetMode & COMPUTED_COLUMNS_INCLUDE))
eQuery = SELECT_COMPUTEDCOLLIST;
//delegate to the CRowset object
if(dwRowsetMode & COMPUTED_COLUMNS_INCLUDE)
//Need to use ALL_COLS_BOUND to get the computed column. CreateRowset() uses UPDATEABLE_COLS_BOUND by defalt
hr = CRowset::CreateRowset(eQuery, IID_IRowset, NULL, DBACCESSOR_ROWDATA, DBPART_ALL, ALL_COLS_BOUND);
else
hr = CRowset::CreateRowset(eQuery);
//Other setup items...
if(hr==S_OK)
{
//Now get the Notification Properties
GetNotificationProperties();
//We need to obtain bindings for all the updatable(non-index) columns
//if we are creating a rowset with IRowsetChange. We do this ahead of time so we know
//exactly which columns to expect notifications from when SetData(OnFieldChange) is called.
if (dwRowsetMode & COMPUTED_COLUMNS_INCLUDE)
{
//We need the only column - cumputed column and
//acording to SELECT_COMPUTEDCOLLIST it should be the last one
DB_LORDINAL rgColsToBind[1];
rgColsToBind[0] = m_rgBinding[m_cBindings-1].iOrdinal;
TESTC_(hr = GetAccessorAndBindings(pIRowset(), DBACCESSOR_ROWDATA, &m_hUpAccessor,
&m_rgUpBindings, &m_cUpBindings, NULL, DBPART_ALL, USE_COLS_TO_BIND_ARRAY,
FORWARD, NO_COLS_BY_REF, NULL, NULL, NULL, DBTYPE_EMPTY, 1, rgColsToBind,
NULL, NO_COLS_OWNED_BY_PROV, DBPARAMIO_NOTPARAM, NO_BLOB_COLS),S_OK);
}
else
TESTC_(hr = GetAccessorAndBindings(pIRowset(), DBACCESSOR_ROWDATA, &m_hUpAccessor,
&m_rgUpBindings, &m_cUpBindings, NULL, DBPART_ALL, UPDATEABLE_NONINDEX_COLS_BOUND,
FORWARD, NO_COLS_BY_REF, NULL, NULL, NULL, DBTYPE_EMPTY, 0, NULL,
NULL, NO_COLS_OWNED_BY_PROV, DBPARAMIO_NOTPARAM, NO_BLOB_COLS),S_OK);
}
CLEANUP:
return hr;
}
ULONG CRowsetObj::AddRefRowset()
{
//Keep track how many extra references we have put on the rowset
//Mainly used to AddRef -> Release testing making sure no notifications
m_cRowsetRef++;
//AddRef the rowset so it doesn't fire a notification
pIRowset()->AddRef();
return m_cRowsetRef;
}
ULONG CRowsetObj::ReleaseRowset()
{
if(m_cRowsetRef)
{
m_cRowsetRef--;
pIRowset()->Release();
return m_cRowsetRef;
}
return m_cRowsetRef;
}
BOOL CRowsetObj::GetReentrantEvents()
{
return m_bReentrantEvents;
}
BOOL CRowsetObj::IsQuickRestart()
{
return m_bQuickRestart;
}
ULONG_PTR CRowsetObj::GetGranularity()
{
return m_ulSupportedGranularity;
}
ULONG_PTR CRowsetObj::GetSupportedPhases()
{
return m_ulSupportedPhases;
}
BOOL CRowsetObj::IsSupportedPhase(DBEVENTPHASE ePhase)
{
ASSERT(IsValidEvent(DBREASON_ROWSET_FETCHPOSITIONCHANGE, ePhase));
switch(ePhase)
{
case DBEVENTPHASE_OKTODO:
return ((m_ulSupportedPhases & DBPROPVAL_NP_OKTODO) != 0);
case DBEVENTPHASE_ABOUTTODO:
return ((m_ulSupportedPhases & DBPROPVAL_NP_ABOUTTODO) != 0);
case DBEVENTPHASE_SYNCHAFTER:
return ((m_ulSupportedPhases & DBPROPVAL_NP_SYNCHAFTER) != 0);
case DBEVENTPHASE_DIDEVENT:
return ((m_ulSupportedPhases & DBPROPVAL_NP_DIDEVENT) != 0);
case DBEVENTPHASE_FAILEDTODO:
return ((m_ulSupportedPhases & DBPROPVAL_NP_FAILEDTODO) != 0);
}
return FALSE;
}
BOOL CRowsetObj::GetNotificationProperties()
{
TBEGIN
//Initialize all property values, incase some are not supported
m_ulSupportedGranularity = DBPROPVAL_NT_SINGLEROW;
m_ulSupportedPhases = DBPROPVAL_NP_FAILEDTODO | DBPROPVAL_NP_DIDEVENT;
m_bReentrantEvents = TRUE;
m_bQuickRestart = TRUE;
VARIANT_BOOL bValue = VARIANT_TRUE;
//DBPROP_NOTIFICATIONGRANULARITY
if(SupportedProperty(DBPROP_NOTIFICATIONGRANULARITY, DBPROPSET_ROWSET))
TCHECK(GetProperty(DBPROP_NOTIFICATIONGRANULARITY, DBPROPSET_ROWSET, &m_ulSupportedGranularity),TRUE);
//DBPROP_NOTIFICATIONPHASES
if(SupportedProperty(DBPROP_NOTIFICATIONPHASES, DBPROPSET_ROWSET))
TCHECK(GetProperty(DBPROP_NOTIFICATIONPHASES, DBPROPSET_ROWSET, &m_ulSupportedPhases),TRUE);
//DBPROP_REENTRANTEVENTS
if(SupportedProperty(DBPROP_REENTRANTEVENTS, DBPROPSET_ROWSET))
TCHECK(GetProperty(DBPROP_REENTRANTEVENTS, DBPROPSET_ROWSET, &bValue),TRUE);
m_bReentrantEvents = ((bValue==VARIANT_TRUE) ? TRUE : FALSE);
//DBPROP_QUICKRESTART
if(SupportedProperty(DBPROP_QUICKRESTART, DBPROPSET_ROWSET))
TCHECK(GetProperty(DBPROP_QUICKRESTART, DBPROPSET_ROWSET, &bValue),TRUE);
m_bQuickRestart = ((bValue==VARIANT_TRUE) ? TRUE : FALSE);
//DBPROP_NOTIFY* Cancelable Events
GetProperty(DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROWSET_FETCHPOSITIONCHANGE]);
GetProperty(DBPROP_NOTIFYROWSETRELEASE, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROWSET_RELEASE]);
GetProperty(DBPROP_NOTIFYROWSETCHANGED, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROWSET_CHANGED]);
GetProperty(DBPROP_NOTIFYCOLUMNSET, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_COLUMN_SET]);
GetProperty(DBPROP_NOTIFYROWDELETE, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROW_DELETE]);
GetProperty(DBPROP_NOTIFYROWFIRSTCHANGE, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROW_FIRSTCHANGE]);
GetProperty(DBPROP_NOTIFYROWINSERT, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROW_INSERT]);
GetProperty(DBPROP_NOTIFYROWRESYNCH, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROW_RESYNCH]);
GetProperty(DBPROP_NOTIFYROWUNDOCHANGE, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROW_UNDOCHANGE]);
GetProperty(DBPROP_NOTIFYROWUNDOINSERT, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROW_UNDOINSERT]);
GetProperty(DBPROP_NOTIFYROWUNDODELETE, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROW_UNDODELETE]);
GetProperty(DBPROP_NOTIFYROWUPDATE, DBPROPSET_ROWSET, &m_rgCancelableEvents[DBREASON_ROW_UPDATE]);
TRETURN;
}
BOOL CRowsetObj::IsCancelableEvent(DBREASON eReason, DBEVENTPHASE ePhase)
{
ASSERT(IsValidEvent(eReason, ePhase));
switch(ePhase)
{
case DBEVENTPHASE_OKTODO:
return ((m_rgCancelableEvents[eReason] & DBPROPVAL_NP_OKTODO) != 0);
case DBEVENTPHASE_ABOUTTODO:
return ((m_rgCancelableEvents[eReason] & DBPROPVAL_NP_ABOUTTODO) != 0);
case DBEVENTPHASE_SYNCHAFTER:
return ((m_rgCancelableEvents[eReason] & DBPROPVAL_NP_SYNCHAFTER) != 0);
}
return FALSE;
}
HRESULT CRowsetObj::SetData(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
void* pMakeData = NULL;
IRowsetChange* pIRowsetChange = NULL;
ROWINFO* pRowInfo = GetRowInfo(pCommand->m_rgRowIds[0]);
//Make Data for the row
MakeRowData(&pMakeData, m_hUpAccessor);
//Obtain IRowsetChange interface...
TESTC_(hr = QI(pIRowset(), IID_IRowsetChange, (void**)&pIRowsetChange),S_OK);
//The test will sometime expect BADROWHANDLE since it thinks that previous calls may have veto'd
//an insertion. Some providers don't allow vetos, so the badrowhandle is dependent upon wither
//it was successful or not. If the row is in our cache, then it must have been allowed...
// if(pCommand->m_hrExpected == DB_E_BADROWHANDLE)
// {
// if(pRowInfo && pRowInfo->m_h`Row)
// pCommand->m_hrExpected = S_OK;
// }
//Now finally Modify the row...
//Can return an Error such as DB_E_CANCELED within a listener
switch(pCommand->m_hrExpected)
{
case DB_E_BADACCESSORHANDLE:
hr = pIRowsetChange->SetData(pCommand->m_rghRows[0], DB_NULL_HACCESSOR, pMakeData);
break;
default:
hr = pIRowsetChange->SetData(pCommand->m_rghRows[0], m_hUpAccessor, pMakeData);
break;
};
//If SetData is successful then we can mark this row as having been changed.
if(SUCCEEDED(hr))
{
TESTC(pRowInfo != NULL);
pRowInfo->m_fFirstChange = FALSE;
//Get the Data for this row
PROVIDER_FREE(pRowInfo->m_pNewData);
pRowInfo->m_pNewData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pNewData),S_OK);
}
CLEANUP:
ReleaseRowData(pMakeData, m_hUpAccessor);
SAFE_RELEASE(pIRowsetChange);
return hr;
}
HRESULT CRowsetObj::Update(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
IRowsetUpdate* pIRowsetUpdate = NULL;
DBCOUNTITEM cRowsUpdated = 0;
HROW* rghRowsUpdated = NULL;
DBROWSTATUS* rgRowStatus = NULL;
//IRowsetUpdate->Update
TESTC_(hr = pIRowset()->QueryInterface(IID_IRowsetUpdate,(void**)&pIRowsetUpdate),S_OK);
//Can return an error DB_S/DB_E if canceled from within a listener
hr = pIRowsetUpdate->Update(NULL, pCommand->m_cRows, pCommand->m_rghRows, &cRowsUpdated, &rghRowsUpdated, &rgRowStatus);
//If the Update succeeded, then we can clear the RowStatus flags
//only for those rows actually updated
if(SUCCEEDED(hr))
{
//Verify the results first
if(pCommand->m_cRows)
{
TESTC(cRowsUpdated == pCommand->m_cRows);
TESTC(rgRowStatus != NULL);
}
if(pCommand->m_dwOption)
{
TESTC(cRowsUpdated == pCommand->m_dwOption);
TESTC(rgRowStatus != NULL);
}
//dwOptions represent the number of pending rows for the (0,NULL) case...
for(DBCOUNTITEM i=0; i<pCommand->m_cRows || i<pCommand->m_dwOption; i++)
{
ROWINFO* pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i]);
if(pRowInfo == NULL)
continue;
//Only update our flags if row was successflly updated
if(rgRowStatus && rgRowStatus[i] != DBROWSTATUS_S_OK)
continue;
//Update of a DeletedRow forces the row to no longer be valid
if(pRowInfo->m_eRowStatus != ROWSTATUS_DELETED)
{
//Save the current Data
PROVIDER_FREE(pRowInfo->m_pOrgData);
pRowInfo->m_pOrgData = PROVIDER_ALLOC(SIZEOF_ONEROW);
memmove(pRowInfo->m_pOrgData, pRowInfo->m_pNewData, (size_t) SIZEOF_ONEROW);
//Get the Data for this row
PROVIDER_FREE(pRowInfo->m_pNewData);
pRowInfo->m_pNewData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pNewData),S_OK);
//Verify Update, actually Updated the Values
TESTC(CompareRowData(pRowInfo->m_pOrgData, pRowInfo->m_pNewData, m_hAccessor));
//Get the Original Data for this row
PROVIDER_FREE(pRowInfo->m_pOrgData);
pRowInfo->m_pOrgData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetOriginalData(pRowInfo->m_hRow, pRowInfo->m_pOrgData),S_OK);
//Verify OrginalData matches current Data after Update
TESTC(CompareRowData(pRowInfo->m_pOrgData, pRowInfo->m_pNewData, m_hAccessor));
}
//Clear the FirstChange status
pRowInfo->m_fFirstChange = TRUE;
//Clear the ChangeStatus
pRowInfo->m_eRowStatus = ROWSTATUS_NOCHANGE;
}
}
CLEANUP:
SAFE_RELEASE(pIRowsetUpdate);
PROVIDER_FREE(rghRowsUpdated);
PROVIDER_FREE(rgRowStatus);
return hr;
}
HRESULT CRowsetObj::Undo(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
IRowsetUpdate* pIRowsetUpdate = NULL;
DBCOUNTITEM cRowsUndone = 0;
HROW* rghRowsUndone = NULL;
DBROWSTATUS* rgRowStatus = NULL;
//IRowsetUpdate->Update
TESTC_(hr = pIRowset()->QueryInterface(IID_IRowsetUpdate,(void**)&pIRowsetUpdate),S_OK);
//Can return an error DB_S/DB_E if canceled from within a listener
hr = pIRowsetUpdate->Undo(NULL, pCommand->m_cRows, pCommand->m_rghRows, &cRowsUndone, &rghRowsUndone, &rgRowStatus);
//If the Undo succeeded, then we can clear the UndoStatus flags
if(SUCCEEDED(hr))
{
//Verify the results first
if(pCommand->m_cRows)
{
TESTC(cRowsUndone == pCommand->m_cRows);
TESTC(rgRowStatus != NULL);
}
if(pCommand->m_dwOption)
{
TESTC(cRowsUndone == pCommand->m_dwOption);
TESTC(rgRowStatus != NULL);
}
//dwOptions represent the number of pending rows for the (0,NULL) case...
for(DBCOUNTITEM i=0; i<pCommand->m_cRows || i<pCommand->m_dwOption; i++)
{
ROWINFO* pRowInfo = NULL;
TESTC((pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i])) != NULL);
//Only update our flags if row was successflly undone
if(rgRowStatus && rgRowStatus[i] != DBROWSTATUS_S_OK)
continue;
//Undo of an InsertedRow forces the row to no longer be valid
if(pRowInfo->m_eRowStatus != ROWSTATUS_INSERTED)
{
//Get the Data for this row
PROVIDER_FREE(pRowInfo->m_pNewData);
pRowInfo->m_pNewData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pNewData),S_OK);
//Verify Undo, actually undoes the Data
TESTC(CompareRowData(pRowInfo->m_pOrgData, pRowInfo->m_pNewData, m_hAccessor));
}
//Clear the FirstChange status
pRowInfo->m_fFirstChange = TRUE;
//Clear the ChangeStatus
pRowInfo->m_eRowStatus = ROWSTATUS_NOCHANGE;
}
}
CLEANUP:
SAFE_RELEASE(pIRowsetUpdate);
PROVIDER_FREE(rghRowsUndone);
PROVIDER_FREE(rgRowStatus);
return hr;
}
HRESULT CRowsetObj::AddRefRows(COMMAND* pCommand)
{
ASSERT(pCommand);
ROWINFO* pRowInfo = NULL;
ULONG rgRefCounts[MAX_ROW_COUNT];
//IRowset::AddRefRows
HRESULT hr = pIRowset()->AddRefRows(pCommand->m_cRows, pCommand->m_rghRows, rgRefCounts, NULL);
//Increment reference counts
if(SUCCEEDED(hr))
{
for(DBCOUNTITEM i=0; i<pCommand->m_cRows; i++)
if(pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i]))
{
//Update the reference count.
pRowInfo->m_cRefCount = rgRefCounts[i];
}
}
return hr;
}
HRESULT CRowsetObj::ReleaseRows(COMMAND* pCommand)
{
ASSERT(pCommand);
ROWINFO* pRowInfo = NULL;
HRESULT hr = S_OK;
ULONG rgRefCounts[MAX_ROW_COUNT];
//IRowset::ReleaseRows
switch(pCommand->m_hrExpected)
{
case E_INVALIDARG:
hr = pIRowset()->ReleaseRows(pCommand->m_cRows, NULL, NULL, NULL, NULL);
break;
default:
hr = pIRowset()->ReleaseRows(pCommand->m_cRows, pCommand->m_rghRows, NULL, rgRefCounts, NULL);
break;
}
//Store reference counts
if(SUCCEEDED(hr))
{
for(DBCOUNTITEM i=0; i<pCommand->m_cRows; i++)
if(pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i]))
{
//Update the reference count.
pRowInfo->m_cRefCount = rgRefCounts[i];
}
}
return hr;
}
HRESULT CRowsetObj::InsertRow(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
IRowsetChange* pIRowsetChange = NULL;
ROWINFO* pRowInfo = NULL;
//Make data for the inserted row
TESTC(m_mapRowInfo.Lookup(pCommand->m_rgRowIds[0], pRowInfo));
PROVIDER_FREE(pRowInfo->m_pOrgData);
pRowInfo->m_pOrgData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC(MakeRowData(&pRowInfo->m_pOrgData))
//InsertRow
//Can return an error such as DB_E_CANCELED inside a listener
TESTC_(hr = QI(pIRowset(), IID_IRowsetChange, (void**)&pIRowsetChange),S_OK);
switch(pCommand->m_hrExpected)
{
case DB_E_BADACCESSORHANDLE:
hr = pIRowsetChange->InsertRow(NULL, DB_NULL_HACCESSOR, pRowInfo->m_pOrgData, &pCommand->m_rghRows[0]);
break;
default:
hr = pIRowsetChange->InsertRow(NULL, m_hAccessor, pRowInfo->m_pOrgData, &pCommand->m_rghRows[0]);
break;
}
//If successful, we have store the row handle!
if(SUCCEEDED(hr))
{
//Verify row handle
TESTC(pCommand->m_rghRows[0]!=DB_NULL_HROW)
//Set the row handle
//ROWINFO* pRowInfo = NULL;
//TESTC(m_mapRowInfo.Lookup(pCommand->m_rgRowIds[0], pRowInfo));
pRowInfo->m_hRow = pCommand->m_rghRows[0];
//Get the Data for this row
PROVIDER_FREE(pRowInfo->m_pNewData);
pRowInfo->m_pNewData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pNewData),S_OK);
//Make sure the newly inserted row matches the original data...
TESTC(CompareRowData(pRowInfo->m_pNewData/*pGetData*/, pRowInfo->m_pOrgData/*pSetData*/, m_hAccessor, TRUE/*fSetData*/));
}
CLEANUP:
SAFE_RELEASE(pIRowsetChange);
return hr;
}
HRESULT CRowsetObj::GetNextRows(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
DBCOUNTITEM cOffset = 0;
DBCOUNTITEM cRows = pCommand->m_cRows;
HROW* rghRows = pCommand->m_rghRows;
DBCOUNTITEM cRowsObtained = 0;
DBCOUNTITEM i;
//GetNextRows
//The Command may want to produce a particualr error condition
switch(pCommand->m_hrExpected)
{
case DB_S_ENDOFROWSET:
{
if (cRows==0)
hr = pIRowset()->GetNextRows(NULL, 0, MAX_ROW_COUNT, &cRowsObtained, &rghRows);
else
hr = pIRowset()->GetNextRows(NULL, 0, cRows, &cRowsObtained, &rghRows);
pCommand->m_cRows = cRowsObtained;
}
break;
case DB_E_BADSTARTPOSITION:
hr = pIRowset()->GetNextRows(NULL, MAX_ROW_COUNT, cRows, &cRowsObtained, &rghRows);
break;
case E_INVALIDARG:
hr = pIRowset()->GetNextRows(NULL, 0, cRows, NULL, NULL);
break;
default:
hr = pIRowset()->GetNextRows(NULL, 0, cRows, &cRowsObtained, &rghRows);
break;
}
//Loop through rows obtained
for(i=0; i<cRowsObtained; i++)
{
ROWINFO* pRowInfo = NULL;
if(m_mapRowInfo.Lookup(pCommand->m_rgRowIds[i],pRowInfo))
SAFE_DELETE(pRowInfo);
pRowInfo = new ROWINFO(pCommand->m_rghRows[i]);
//Get the bookmark for this row, if bookmarks are on...
if(m_dwRowsetMode & ROWSETLOCATE_ROWSET)
TESTC_(GetBookmark(pRowInfo->m_hRow, pRowInfo),S_OK);
//Get the Data for this row
PROVIDER_FREE(pRowInfo->m_pNewData);
pRowInfo->m_pNewData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pNewData),S_OK);
//Save the OrgData for this row
PROVIDER_FREE(pRowInfo->m_pOrgData);
pRowInfo->m_pOrgData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pOrgData),S_OK);
m_mapRowInfo.SetAt(pCommand->m_rgRowIds[i], pRowInfo);
}
//Increment the NextFetchPosition
if(SUCCEEDED(hr) && cRowsObtained)
m_ulNextFetchPos += (cOffset + cRowsObtained);
CLEANUP:
return hr;
}
HRESULT CRowsetObj::RestartPosition(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
// Provider may require release of existing rows before restarting
// if DBPROP_QUICKRESTART=FALSE even if the provider supports a value of VARIANT_TRUE for DBPROP_CANHOLDROWS
if (!IsQuickRestart())
{
DBCOUNTITEM cRows = 0;
HROW rghRows[MAX_ROW_COUNT];
ROWINFO* pRowInfo = NULL;
ULONG rgRefCounts[MAX_ROW_COUNT];
GetRowsToRelease(MAX_ROW_COUNT, cRows, rghRows);
if (cRows)
{
hr = pIRowset()->ReleaseRows(cRows, rghRows, NULL, rgRefCounts, NULL);
//Store reference counts
if(SUCCEEDED(hr))
{
POSITION pos = m_mapRowInfo.GetStartPosition();
while(pos)
{
DBCOUNTITEM Key = 0;
ROWINFO* pRowInfo = NULL;
m_mapRowInfo.GetNextAssoc(pos, Key, pRowInfo);
SAFE_DELETE(pRowInfo);
pRowInfo = new ROWINFO(DB_NULL_HROW);
m_mapRowInfo.SetAt(Key, pRowInfo);
}
}
}
}
//RestartPosition
hr = pIRowset()->RestartPosition(NULL);
//Can return DB_S_COMMANDREEXECUTED
if(hr==DB_S_COMMANDREEXECUTED)
hr = S_OK;
//Reset the rowset values
if(SUCCEEDED(hr))
{
m_ulNextFetchPos = 0;
m_fTableAltered = FALSE;
}
return hr;
}
HRESULT CRowsetObj::GetRowsAt(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
IRowsetLocate* pIRowsetLocate = NULL;
DBCOUNTITEM cRowsObtained = 0;
DBCOUNTITEM cRows = pCommand->m_cRows;
HROW* rghRows = pCommand->m_rghRows;
DBCOUNTITEM i=0;
//Bookmark for this row should be DBBMK_FIRST or DBBMK_LAST
ULONG Bookmark = pCommand->m_dwOption;
TESTC(Bookmark==DBBMK_FIRST || Bookmark==DBBMK_LAST);
//GetRowsAt
TESTC_(hr = pIRowset()->QueryInterface(IID_IRowsetLocate,(void**)&pIRowsetLocate),S_OK);
//Can return an error if canceled from within a listener
//Standard BMK size is 1 byte for DBBMK_FIRST or DBBMK_LAST
switch(pCommand->m_hrExpected)
{
case DB_E_BADSTARTPOSITION:
hr = pIRowsetLocate->GetRowsAt(NULL, NULL, sizeof(BYTE), (BYTE*)&Bookmark, MAX_ROW_COUNT, cRows, &cRowsObtained, &rghRows);
break;
case DB_S_ENDOFROWSET:
hr = pIRowsetLocate->GetRowsAt(NULL, NULL, sizeof(BYTE), (BYTE*)&Bookmark, 0, MAX_ROW_COUNT, &cRowsObtained, &rghRows);
break;
default:
hr = pIRowsetLocate->GetRowsAt(NULL, NULL, sizeof(BYTE), (BYTE*)&Bookmark, 0, cRows, &cRowsObtained, &rghRows);
break;
}
//Verify results
if(hr==S_OK)
TESTC(cRows == cRowsObtained);
//Loop through rows obtained
for(i=0; i<cRowsObtained; i++)
{
ROWINFO* pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i]);
SAFE_DELETE(pRowInfo);
pRowInfo = new ROWINFO(pCommand->m_rghRows[i]);
//Get the bookmark for this row
if(m_dwRowsetMode & ROWSETLOCATE_ROWSET)
TESTC_(GetBookmark(pRowInfo->m_hRow, pRowInfo),S_OK);
//Get the Data for this row
PROVIDER_FREE(pRowInfo->m_pNewData);
pRowInfo->m_pNewData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pNewData),S_OK);
//Save the Data for this row
PROVIDER_FREE(pRowInfo->m_pOrgData);
pRowInfo->m_pOrgData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pOrgData),S_OK);
m_mapRowInfo.SetAt(pCommand->m_rgRowIds[i], pRowInfo);
}
CLEANUP:
SAFE_RELEASE(pIRowsetLocate);
return hr;
}
HRESULT CRowsetObj::GetRowsAtRatio(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
IRowsetScroll* pIRowsetScroll = NULL;
DBCOUNTITEM cRows = pCommand->m_cRows;
HROW* rghRows = pCommand->m_rghRows;
ULONG ulRatio = pCommand->m_dwOption;
DBCOUNTITEM cRowsObtained = 0;
DBCOUNTITEM i;
//GetRowsAtRatio
TESTC_(hr = pIRowset()->QueryInterface(IID_IRowsetScroll,(void**)&pIRowsetScroll),S_OK);
//Can return an error if canceled from within a listener
switch(pCommand->m_hrExpected)
{
case DB_S_ENDOFROWSET:
hr = pIRowsetScroll->GetRowsAtRatio(NULL, NULL, 0, ulRatio, MAX_ROW_COUNT, &cRowsObtained, &rghRows);
break;
default:
hr = pIRowsetScroll->GetRowsAtRatio(NULL, NULL, 0, ulRatio, cRows, &cRowsObtained, &rghRows);
break;
}
//Verify results
if(hr==S_OK)
TESTC(cRows == cRowsObtained);
//Loop over rows retrived
for(i=0; i<cRowsObtained; i++)
{
ROWINFO* pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i]);
SAFE_DELETE(pRowInfo);
pRowInfo = new ROWINFO(pCommand->m_rghRows[i]);
//Get the bookmark for this row
if(m_dwRowsetMode & ROWSETLOCATE_ROWSET)
TESTC_(GetBookmark(pRowInfo->m_hRow, pRowInfo),S_OK);
//Get the Data for this row
PROVIDER_FREE(pRowInfo->m_pNewData);
pRowInfo->m_pNewData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pNewData),S_OK);
//Save the Data for this row
PROVIDER_FREE(pRowInfo->m_pOrgData);
pRowInfo->m_pOrgData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pOrgData),S_OK);
m_mapRowInfo.SetAt(pCommand->m_rgRowIds[i],pRowInfo);
}
CLEANUP:
SAFE_RELEASE(pIRowsetScroll);
return hr;
}
HRESULT CRowsetObj::GetRowsByBookmark(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
IRowsetLocate* pIRowsetLocate = NULL;
DBCOUNTITEM i = 0;
//Need to lookup the bookmark value for these rows
ROWINFO* pRowInfo = NULL;
DBBKMARK rgcbBookmarks[MAX_ROW_COUNT];
const BYTE* rgpBookmarks[MAX_ROW_COUNT];
for(i=0; i<pCommand->m_cRows; i++)
{
if(pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i]))
{
rgcbBookmarks[i] = pRowInfo->m_cbBookmark; //Bookmark size
rgpBookmarks[i] = pRowInfo->m_pBookmark;
}
}
//IRowsetLocate
TESTC_(hr = pIRowset()->QueryInterface(IID_IRowsetLocate,(void**)&pIRowsetLocate),S_OK);
switch(pCommand->m_hrExpected)
{
case E_INVALIDARG:
hr = pIRowsetLocate->GetRowsByBookmark(NULL, pCommand->m_cRows, NULL, NULL, pCommand->m_rghRows, NULL);
break;
default:
hr = pIRowsetLocate->GetRowsByBookmark(NULL, pCommand->m_cRows, rgcbBookmarks, rgpBookmarks, pCommand->m_rghRows, NULL);
break;
};
//Loop through rows obtained
for(i=0; i<pCommand->m_cRows; i++)
{
if(SUCCEEDED(hr) && pCommand->m_rghRows[i]!=DB_NULL_HROW)
{
ROWINFO* pRowInfo = NULL;
if(m_mapRowInfo.Lookup(pCommand->m_rgRowIds[i],pRowInfo))
SAFE_DELETE(pRowInfo);
pRowInfo = new ROWINFO(pCommand->m_rghRows[i]);
//Get the bookmark for this row, if bookmarks are on...
if(m_dwRowsetMode & ROWSETLOCATE_ROWSET)
TESTC_(GetBookmark(pRowInfo->m_hRow, pRowInfo),S_OK);
//Get the Data for this row
PROVIDER_FREE(pRowInfo->m_pNewData);
pRowInfo->m_pNewData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pNewData),S_OK);
//Save the OrgData for this row
PROVIDER_FREE(pRowInfo->m_pOrgData);
pRowInfo->m_pOrgData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pOrgData),S_OK);
m_mapRowInfo.SetAt(pCommand->m_rgRowIds[i], pRowInfo);
}
}
CLEANUP:
SAFE_RELEASE(pIRowsetLocate);
return hr;
}
HRESULT CRowsetObj::DeleteRows(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
IRowsetChange* pIRowsetChange = NULL;
//DeleteRows
TESTC_(hr = QI(pIRowset(), IID_IRowsetChange, (void**)&pIRowsetChange),S_OK);
hr = pIRowsetChange->DeleteRows(NULL, pCommand->m_cRows, pCommand->m_rghRows, NULL);
CLEANUP:
SAFE_RELEASE(pIRowsetChange);
return hr;
}
HRESULT CRowsetObj::ResynchRows(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
void* pVisibleData = NULL;
DBROWSTATUS* rgRowStatus = NULL;
//ResynchRows
hr = CRowset::ResynchRows(pCommand->m_cRows, pCommand->m_rghRows, NULL, NULL, &rgRowStatus);
//Loop over rows Resynched
if(SUCCEEDED(hr))
{
for(DBCOUNTITEM i=0; i<pCommand->m_cRows; i++)
{
//Only update our flags if row was successfully resynched
if(rgRowStatus[i] != DBROWSTATUS_S_OK)
continue;
if(pCommand->m_rghRows[i] != DB_NULL_HROW)
{
ROWINFO* pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i]);
SAFE_DELETE(pRowInfo);
pRowInfo = new ROWINFO(pCommand->m_rghRows[i]);
m_mapRowInfo.SetAt(pCommand->m_rgRowIds[i],pRowInfo);
//Get the Data for this row
PROVIDER_FREE(pRowInfo->m_pNewData);
pRowInfo->m_pNewData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetData(pRowInfo->m_hRow, pRowInfo->m_pNewData),S_OK);
//GetVisible Data for this row
PROVIDER_FREE(pVisibleData);
pVisibleData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(GetVisibleData(pRowInfo->m_hRow, pVisibleData),S_OK);
//Verify both Visible and Current Data are equal after Resynch
TESTC(CompareRowData(pRowInfo->m_pNewData, pVisibleData, m_hAccessor));
}
}
}
CLEANUP:
PROVIDER_FREE(pVisibleData);
PROVIDER_FREE(rgRowStatus);
return hr;
}
BOOL CRowsetObj::MapRowIds(COMMAND* pCommand)
{
TBEGIN
ASSERT(pCommand);
DBCOUNTITEM cRows = pCommand->m_cRows;
DBCOUNTITEM* rgRowIds = pCommand->m_rgRowIds;
HROW* rghRows = pCommand->m_rghRows;
ROWINFO* pRowInfo = NULL;
switch (pCommand->m_eCommandType)
{
case INSERTROW:
{ pRowInfo = new ROWINFO(DB_NULL_HROW);
pRowInfo->m_eRowStatus = ROWSTATUS_INSERTED;
m_mapRowInfo.SetAt(rgRowIds[0], pRowInfo);
}
break;
case DELETEROWS:
{ // Set HROW's to delete
for(DBCOUNTITEM i=0; i<cRows; i++)
{
TESTC((pRowInfo = GetRowInfo(rgRowIds[i])) != NULL);
rghRows[i] = pRowInfo->m_hRow;
//Insert -> Deleted row is not change,
//Otherwsie this is considerd a deleted row
if(pRowInfo->m_eRowStatus == ROWSTATUS_INSERTED)
pRowInfo->m_eRowStatus = ROWSTATUS_INVALID;
else
pRowInfo->m_eRowStatus = ROWSTATUS_DELETED;
}
}
break;
case SETDATA:
{
if(pRowInfo = GetRowInfo(rgRowIds[0]))
{
rghRows[0] = pRowInfo->m_hRow;
//This row is now treated as modiifed, unless it is an inserted row.
//If inserted it still is treated as inserted
if(pRowInfo->m_eRowStatus != ROWSTATUS_INSERTED)
pRowInfo->m_eRowStatus = ROWSTATUS_CHANGED;
}
}
break;
case UNDO:
case UPDATE:
case RESYNCHROWS:
{
//Set HROW's to Get
for(DBCOUNTITEM i=0; i<cRows; i++)
{
rghRows[i] = DB_NULL_HROW;
if(pRowInfo = GetRowInfo(rgRowIds[i]))
rghRows[i] = pRowInfo->m_hRow;
}
//If cRows==0, (0,NULL) will "do" all rows with
//pending changes. So loop through all rows
if(cRows==0)
{
DBCOUNTITEM key = 0;
DBCOUNTITEM cRowsPending = 0;
POSITION pos = m_mapRowInfo.GetStartPosition();
while(pos)
{
m_mapRowInfo.GetNextAssoc(pos, key, pRowInfo);
if(pRowInfo && pRowInfo->m_eRowStatus != ROWSTATUS_NOCHANGE)
{
rgRowIds[cRowsPending] = key;
rghRows[cRowsPending] = pRowInfo->m_hRow;
cRowsPending++;
}
}
pCommand->m_dwOption = (DWORD) cRowsPending;
}
}
break;
case REFRESHROWS:
{
//Set HROW's to Get
for(DBCOUNTITEM i=0; i<cRows; i++)
{
rghRows[i] = DB_NULL_HROW;
if(pRowInfo = GetRowInfo(rgRowIds[i]))
rghRows[i] = pRowInfo->m_hRow;
}
//If cRows==0, (0,NULL) will "do" all active
//rows. So loop through all rows
if(cRows==0)
{
DBCOUNTITEM key = 0;
DBCOUNTITEM cRowsActive = 0;
POSITION pos = m_mapRowInfo.GetStartPosition();
while(pos)
{
m_mapRowInfo.GetNextAssoc(pos, key, pRowInfo);
if(pRowInfo && pRowInfo->m_eRowStatus != ROWSTATUS_INSERTED &&
pRowInfo->m_eRowStatus != ROWSTATUS_DELETED)
{
rgRowIds[cRowsActive] = key;
rghRows[cRowsActive] = pRowInfo->m_hRow;
cRowsActive++;
}
}
pCommand->m_dwOption = (ULONG) cRowsActive;
}
}
break;
default:
{
//Set HROW's to Get
for(DBCOUNTITEM i=0; i<cRows; i++)
{
rghRows[i] = DB_NULL_HROW;
if(pRowInfo = GetRowInfo(rgRowIds[i]))
rghRows[i] = pRowInfo->m_hRow;
}
}
break;
}
CLEANUP:
TRETURN;
}
HRESULT CRowsetObj::GetData(HROW hRow, void* pData)
{
ASSERT(hRow != DB_NULL_HROW);
ASSERT(pData);
HRESULT hr = S_OK;
//GetData
TESTC_(pIRowset()->GetData(hRow, m_hAccessor, pData),S_OK);
CLEANUP:
return hr;
}
HRESULT CRowsetObj::GetOriginalData(HROW hRow, void* pData)
{
ASSERT(hRow != DB_NULL_HROW);
ASSERT(pData);
HRESULT hr = S_OK;
IRowsetUpdate* pIRowsetUpdate = NULL;
//Obtain IRowsetUpdate
TESTC_(QI(pIRowset(), IID_IRowsetUpdate, (void**)&pIRowsetUpdate),S_OK);
//GetOriginalData
hr = pIRowsetUpdate->GetOriginalData(hRow, m_hAccessor, pData);
CLEANUP:
SAFE_RELEASE(pIRowsetUpdate);
return hr;
}
HRESULT CRowsetObj::GetVisibleData(HROW hRow, void* pData)
{
ASSERT(hRow != DB_NULL_HROW);
ASSERT(pData);
HRESULT hr = S_OK;
IRowsetResynch* pIRowsetResynch = NULL;
//Obtain IRowsetResynch
TESTC_(QI(pIRowset(), IID_IRowsetResynch, (void**)&pIRowsetResynch),S_OK);
//GetVisibleData
hr = pIRowsetResynch->GetVisibleData(hRow, m_hAccessor, pData);
CLEANUP:
SAFE_RELEASE(pIRowsetResynch);
return hr;
}
HRESULT CRowsetObj::GetLastVisibleData(HROW hRow, void* pData)
{
ASSERT(hRow != DB_NULL_HROW);
ASSERT(pData);
HRESULT hr = S_OK;
IRowsetRefresh* pIRowsetRefresh = NULL;
//Obtain IRowsetRefresh
TESTC_(QI(pIRowset(), IID_IRowsetRefresh, (void**)&pIRowsetRefresh),S_OK);
//RefreshVisibleData
hr = pIRowsetRefresh->GetLastVisibleData(hRow, m_hAccessor, pData);
CLEANUP:
SAFE_RELEASE(pIRowsetRefresh);
return hr;
}
HRESULT CRowsetObj::GetData(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
HRESULT hrExpected = S_OK;
ROWINFO* pRowInfo = NULL;
void* pData = NULL;
//Loop though all specificed rows and make sure GetData returns the correc
//data for this row
for(DBCOUNTITEM i=0; i<pCommand->m_cRows; i++)
{
if (pCommand->m_rghRows[i] != DB_NULL_HROW)
{
//Get the "Current" Data for this row
pData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(pIRowset()->GetData(pCommand->m_rghRows[i], m_hAccessor, pData),S_OK);
//Lookup the Saved data for this row
TESTC((pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i])) != NULL);
//Compare data
TESTC(CompareRowData(pData, pRowInfo->m_pNewData, m_hAccessor));
PROVIDER_FREE(pData);
}
}
CLEANUP:
PROVIDER_FREE(pData);
return hr;
}
HRESULT CRowsetObj::GetOriginalData(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
HRESULT hrExpected = pCommand->m_hrExpected;
ROWINFO* pRowInfo = NULL;
void* pData = NULL;
IRowsetUpdate* pIRowsetUpdate = NULL;
DBCOUNTITEM i=0;
//Obtain IRowsetUpdate interface
TESTC_(hr = QI(pIRowset(), IID_IRowsetUpdate, (void**)&pIRowsetUpdate),S_OK);
//Loop though all rows and make sure GetData returns the correct data
for(i=0; i<pCommand->m_cRows; i++)
{
//Get the "Current" Data for this row
pData = PROVIDER_ALLOC(SIZEOF_ONEROW);
//As can call during notification may receive DB_E_NOTREENTRANT (pCommand->m_hrExpected)
TEST2C_(hr = pIRowsetUpdate->GetOriginalData(pCommand->m_rghRows[i], m_hAccessor, pData), S_OK, hrExpected);
if (hr==S_OK)
{
// if received S_OK for one row should receive it for all
if (i==0) hrExpected = S_OK;
//Lookup the Saved data for this row
TESTC((pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i])) != NULL);
//Compare data
TESTC(CompareRowData(pRowInfo->m_pOrgData, pData, m_hAccessor));
}
PROVIDER_FREE(pData);
}
CLEANUP:
SAFE_RELEASE(pIRowsetUpdate);
PROVIDER_FREE(pData);
return hr;
}
HRESULT CRowsetObj::GetVisibleData(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
HRESULT hrExpected = pCommand->m_hrExpected;
ROWINFO* pRowInfo = NULL;
void* pData = NULL;
IRowsetResynch* pIRowsetResynch = NULL;
DBCOUNTITEM i=0;
//Obtain IRowsetUpdate interface
TESTC_(hr = QI(pIRowset(), IID_IRowsetResynch, (void**)&pIRowsetResynch),S_OK);
//Loop though all rows and make sure GetData returns the correct data
for(i=0; i<pCommand->m_cRows; i++)
{
//Get the "Current" Data for this row
pData = PROVIDER_ALLOC(SIZEOF_ONEROW);
//As can call during notification may receive DB_E_NOTREENTRANT (pCommand->m_hrExpected)
TEST2C_(hr = pIRowsetResynch->GetVisibleData(pCommand->m_rghRows[i], m_hAccessor, pData), S_OK, hrExpected);
if (hr==S_OK)
{
// if received S_OK for one row should receive it for all
if (i==0) hrExpected = S_OK;
//Lookup the Saved data for this row
TESTC((pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i])) != NULL);
//Compare data
TESTC(CompareRowData(pData, pRowInfo->m_pOrgData, m_hAccessor));
}
PROVIDER_FREE(pData);
}
CLEANUP:
SAFE_RELEASE(pIRowsetResynch);
PROVIDER_FREE(pData);
return hr;
}
HRESULT CRowsetObj::GetLastVisibleData(COMMAND* pCommand)
{
ASSERT(pCommand);
HRESULT hr = S_OK;
ROWINFO* pRowInfo = NULL;
void* pData = NULL;
IRowsetRefresh* pIRowsetRefresh = NULL;
DBCOUNTITEM i=0;
//Obtain IRowsetUpdate interface
TESTC_(hr = QI(pIRowset(), IID_IRowsetRefresh, (void**)&pIRowsetRefresh),S_OK);
//Loop though all rows and make sure GetData returns the correct data
for(i=0; i<pCommand->m_cRows; i++)
{
//Get the "Current" Data for this row
pData = PROVIDER_ALLOC(SIZEOF_ONEROW);
TESTC_(pIRowsetRefresh->GetLastVisibleData(pCommand->m_rghRows[i], m_hAccessor, pData),S_OK);
//Lookup the Saved data for this row
TESTC((pRowInfo = GetRowInfo(pCommand->m_rgRowIds[i])) != NULL);
//Compare data
TESTC(CompareRowData(pData, pRowInfo->m_pOrgData, m_hAccessor));
PROVIDER_FREE(pData);
}
CLEANUP:
SAFE_RELEASE(pIRowsetRefresh);
PROVIDER_FREE(pData);
return hr;
}
HRESULT CRowsetObj::AddColumn()
{
ASSERT(g_pTable);
HRESULT hr = S_OK;
//Add a column to the table
WCHAR strColName[80];
CCol cCol;
//Get first column information
g_pTable->GetColInfo(1, cCol);
//Provider Type name may be NULL. If running with an INI File, or
//just the fact that our Privlib addColumn loses all the provider typenames when it regenerates
//the columninfo after an add...
if(cCol.GetProviderTypeName())
swprintf(strColName, L"C%02lu%.4s", GetTotalColumns() + 1, cCol.GetProviderTypeName());
else
swprintf(strColName, L"C%02lu", GetTotalColumns() + 1);
cCol.SetColName(strColName);
// add the column
hr = g_pTable->AddColumn(cCol);
//Indicate the underlying Table has been altered
if(SUCCEEDED(hr))
m_fTableAltered = TRUE;
return hr;
}
HRESULT CRowsetObj::DropColumn()
{
ASSERT(g_pTable);
HRESULT hr = S_OK;
const DBORDINAL nColNum = 1;
//Drop the first column from the table
hr = g_pTable->DropColumn(nColNum);
//Indicate the underlying Table has been altered
if(SUCCEEDED(hr))
m_fTableAltered = TRUE;
return hr;
}
HRESULT CRowsetObj::GetColumnInfo()
{
HRESULT hr = S_OK;
DBORDINAL cColInfo = 0;
DBCOLUMNINFO* rgColInfo = NULL;
WCHAR* pStringBuffer = NULL;
//IColumnsInfo::GetColumnInfo
hr = GetColInfo(&cColInfo, &rgColInfo, &pStringBuffer);
SAFE_FREE(rgColInfo);
SAFE_FREE(pStringBuffer);
return hr;
}
HRESULT CRowsetObj::GetBookmark
(
HROW hRow,
ROWINFO* pRowInfo
)
{
ASSERT(pRowInfo);
HRESULT hr = S_OK;
//GetBookmark
TESTC_(hr = CRowset::GetBookmark(hRow, &pRowInfo->m_cbBookmark, &pRowInfo->m_pBookmark),S_OK);
CLEANUP:
return hr;
}
ROWINFO* CRowsetObj::GetRowInfo(DBCOUNTITEM ulRowId)
{
ROWINFO* pRowInfo = NULL;
m_mapRowInfo.Lookup(ulRowId, pRowInfo);
return pRowInfo;
}
BOOL CRowsetObj::DestroyRowData()
{
POSITION pos = m_mapRowInfo.GetStartPosition();
while(pos)
{
DBCOUNTITEM Key = 0;
ROWINFO* pRowInfo = NULL;
m_mapRowInfo.GetNextAssoc(pos, Key, pRowInfo);
if(pIRowset())
{
HRESULT hr = pIRowset()->ReleaseRows(1, &pRowInfo->m_hRow, NULL, NULL, NULL);
}
SAFE_DELETE(pRowInfo);
}
m_mapRowInfo.RemoveAll();
return TRUE;
}
BOOL CRowsetObj::GetRowsToRelease(DBCOUNTITEM cRows, DBCOUNTITEM &cRowsObtained, HROW *rghRows)
{
ASSERT(rghRows);
cRowsObtained = 0;
POSITION pos = m_mapRowInfo.GetStartPosition();
int i=0;
while(pos && cRowsObtained<cRows)
{
DBCOUNTITEM Key = 0;
ROWINFO* pRowInfo = NULL;
i++;
m_mapRowInfo.GetNextAssoc(pos, Key, pRowInfo);
if(pRowInfo->m_hRow != DB_NULL_HROW && pRowInfo->m_cRefCount)
rghRows[cRowsObtained++] = pRowInfo->m_hRow;
pRowInfo = NULL;
}
return TRUE;
}
////////////////////////////////////////////////////////////////////////
// CImpIListener
//
////////////////////////////////////////////////////////////////////////
CImpIListener::CImpIListener(CExecutionManager* pExecutionManager)
{
ASSERT(pExecutionManager);
m_pExecutionManager = pExecutionManager;
m_cRef = 1;
m_dwCookie = 0;
//Set all WantedEvents to TRUE
memset(&m_rgWantedEvent, TRUE, sizeof(m_rgWantedEvent));
//Set times notified to 0
ResetTimesNotified();
}
CImpIListener::~CImpIListener()
{
ASSERT(m_cRef==0);
}
ULONG CImpIListener::AddRef(void)
{
return ++m_cRef;
}
ULONG CImpIListener::Release(void)
{
ASSERT(m_cRef > 0);
if(--m_cRef)
return m_cRef;
delete this;
return 0;
}
HRESULT CImpIListener::QueryInterface(REFIID riid, void** ppv)
{
if(!ppv)
return E_INVALIDARG;
if(riid == IID_IUnknown)
*ppv = this;
else if(riid == IID_IRowsetNotify)
*ppv = this;
else
{
*ppv = NULL;
return E_NOINTERFACE;
}
((IUnknown*)*ppv)->AddRef();
return S_OK;
}
ULONG CImpIListener::GetTimesNotified(DBREASON eReason, DBEVENTPHASE ePhase)
{
ASSERT(eReason <= DBREASON_ALL);
ASSERT(ePhase <= DBEVENTPHASE_ALL);
//Can return the number of times notified for either all reasons / phases
//or just a particular reason / phase
ULONG cTimesNotified = 0;
for(ULONG iReason=0; iReason<DBREASON_ALL; iReason++)
if(iReason == eReason || eReason == DBREASON_ALL)
for(ULONG iPhase=0; iPhase<DBEVENTPHASE_ALL; iPhase++)
if(iPhase == ePhase || ePhase == DBEVENTPHASE_ALL)
cTimesNotified += m_rgTimesNotified[iReason][iPhase];
return cTimesNotified;
}
BOOL CImpIListener::ResetTimesNotified(DBREASON eReason, DBEVENTPHASE ePhase)
{
ASSERT(eReason <= DBREASON_ALL);
ASSERT(ePhase <= DBEVENTPHASE_ALL);
//Can Reaset all times notified for either all reasons / phases
//or just a particular reason / phase
for(ULONG iReason=0; iReason<DBREASON_ALL; iReason++)
if(iReason == eReason || eReason == DBREASON_ALL)
for(ULONG iPhase=0; iPhase<DBEVENTPHASE_ALL; iPhase++)
if(iPhase == ePhase || ePhase == DBEVENTPHASE_ALL)
m_rgTimesNotified[iReason][iPhase] = 0;
return TRUE;
}
HRESULT CImpIListener::AcceptOrVeto
(
IRowset* pIRowset,
DBCOUNTITEM cRows,
const HROW rghRows[],
DBORDINAL cColumns,
DBORDINAL rgColumns[],
DBREASON eReason,
DBEVENTPHASE ePhase,
BOOL fCantDeny
)
{
HRESULT hr = S_OK;
EXPECT* pExpect = NULL;
COMMAND* pCommand = NULL;
//Make sure this is a valid Reason/Phase
TESTC(IsValidEvent(eReason, ePhase));
//Record this Notification
m_rgTimesNotified[eReason][ePhase]++;
//Verify this Notification matches the Expectation
while(pExpect = pExpectationsManager()->FindExpectation(this, pIRowset, cRows, (HROW*)rghRows, cColumns, rgColumns, eReason, ePhase, fCantDeny))
{
//Find the Command which corresponds to this Reason/Phase
pCommand = pExecutionManager()->PopCommand(this, eReason, ePhase);
TESTC(pCommand != NULL);
switch(pCommand->m_eCommandType)
{
case RETURN_ACCEPT:
pExpectationsManager()->PushNextExpectation(pExpect);
SAFE_DELETE(pCommand);
return S_OK;
case RETURN_VETO:
if(pExecutionManager()->IsCancelableEvent(eReason, ePhase))
{
TESTC(pExpectationsManager()->PushFalseExpectation(pExpect));
}
else
{
TESTC(pExpectationsManager()->PushNextExpectation(pExpect));
}
SAFE_DELETE(pCommand);
return S_FALSE;
case RETURN_UNWANTEDREASON:
//We no longer want this Reason
//Mark as completed since we might not get any more Notifications
SetUnwantedReason(eReason);
pExpectationsManager()->PushUnwantedReason(this, pIRowset, eReason);
SAFE_DELETE(pCommand);
return DB_S_UNWANTEDREASON;
case RETURN_UNWANTEDPHASE:
//Since this Phase is no longer wanted,
//set the expectation to the next wanted phase...
SetUnwantedPhase(eReason, ePhase);
pExpectationsManager()->PushUnwantedPhase(this, pIRowset, eReason, ePhase);
SAFE_DELETE(pCommand);
return DB_S_UNWANTEDPHASE;
case RETURN_EFAIL:
case RETURN_EOUTOFMEMORY:
case RETURN_EINVALIDARG:
//Errors returned should be treated like S_OK (no VETO)
pExpectationsManager()->PushNextExpectation(pExpect);
switch(pCommand->m_eCommandType)
{
case RETURN_EFAIL:
SAFE_DELETE(pCommand);
return E_FAIL;
case RETURN_EOUTOFMEMORY:
SAFE_DELETE(pCommand);
return E_OUTOFMEMORY;
case RETURN_EINVALIDARG:
SAFE_DELETE(pCommand);
return E_INVALIDARG;
}
break;
case RETURN_ADVISE:
{
//Create a new Listener and add to list
pExpectationsManager()->PushAdviseExpectation(pExpect);
return S_OK;
}
case RETURN_UNADVISE:
{ //Unadvise this listener from the Rowset and remove from list
pExpectationsManager()->PushUnadviseExpectation(pExpect);
return S_OK;
}
default:
{
//Execute the nested Command
QTESTC(pExpectationsManager()->PushNestedExpectation(pCommand));
QTESTC(pExecutionManager()->ExecuteCommand(pCommand));
QTESTC(pExpectationsManager()->PopNestedExpectation(pCommand))
SAFE_DELETE(pCommand);
}
}
}
CLEANUP:
SAFE_DELETE(pCommand);
return hr;
}
HRESULT CImpIListener::OnFieldChange
(
IRowset* pIRowset,
HROW hRow,
DBORDINAL cColumns,
DBORDINAL rgColumns[],
DBREASON eReason,
DBEVENTPHASE ePhase,
BOOL fCantDeny
)
{
//Accept / Veto the change, and do processing
HRESULT hr = AcceptOrVeto(pIRowset, ONE_ROW, &hRow, cColumns, rgColumns, eReason, ePhase, fCantDeny);
//Display Notification is user is interested...
PRVTRACE(L" 0x%08x::OnFieldChange(0x%08x, 0x%08x, %d, 0x%08x, %s, %s, %s) - %s\n", this, pIRowset, hRow, cColumns, rgColumns, GetReasonDesc(eReason), GetPhaseDesc(ePhase), fCantDeny==TRUE ? L"TRUE" : L"FALSE", GetErrorName(hr));
return hr;
}
HRESULT CImpIListener::OnRowChange
(
IRowset* pIRowset,
DBCOUNTITEM cRows,
const HROW rghRows[],
DBREASON eReason,
DBEVENTPHASE ePhase,
BOOL fCantDeny
)
{
//Accept / Veto the change, and do processing
HRESULT hr = AcceptOrVeto(pIRowset, cRows, rghRows, 0, NULL, eReason, ePhase, fCantDeny);
//Display Notification is user is interested...
PRVTRACE(L" 0x%08x::OnRowChange(0x%08x, %d, 0x%08x, %s, %s, %s) - %s\n", this, pIRowset, cRows, rghRows, GetReasonDesc(eReason), GetPhaseDesc(ePhase), fCantDeny==TRUE ? L"TRUE" : L"FALSE", GetErrorName(hr));
return hr;
}
HRESULT CImpIListener::OnRowsetChange
(
IRowset* pIRowset,
DBREASON eReason,
DBEVENTPHASE ePhase,
BOOL fCantDeny
)
{
//Accept / Veto the change, and do processing
HRESULT hr = AcceptOrVeto(pIRowset, 0, NULL, 0, NULL, eReason, ePhase, fCantDeny);
//Display Notification is user is interested...
PRVTRACE(L" 0x%08x::OnRowsetChange(0x%08x, %s, %s, %s) - %s\n", this, pIRowset, GetReasonDesc(eReason), GetPhaseDesc(ePhase), fCantDeny==TRUE ? L"TRUE" : L"FALSE", GetErrorName(hr));
return hr;
}
HRESULT CImpIListener::Advise(IRowset* pIRowset)
{
ASSERT(pIRowset);
ASSERT(m_dwCookie == 0); //Implementation only suited for 1 advise per listener
//We can't just use m_pIRowset, since we could Advise / Connect this listener
//to other rowsets besides just the one we wer created with
//But if no rowset* is passed in, we'll use the current one
IConnectionPoint* pICP = NULL;
IConnectionPointContainer* pICPC = NULL;
HRESULT hr = S_OK;
//Obtain the connection point container
TESTC_(hr = pIRowset->QueryInterface(IID_IConnectionPointContainer,(void**)&pICPC),S_OK)
TESTC(pICPC != NULL);
//Obtain the IRowsetNotify connection point
TESTC_(hr = pICPC->FindConnectionPoint(IID_IRowsetNotify,&pICP),S_OK)
TESTC(pICP != NULL);
//Now we can advise the connection
TESTC_(hr = pICP->Advise(this, &m_dwCookie),S_OK)
CLEANUP:
SAFE_RELEASE(pICP);
SAFE_RELEASE(pICPC);
return hr;
}
HRESULT CImpIListener::Unadvise(IRowset* pIRowset)
{
ASSERT(pIRowset);
ASSERT(m_dwCookie != 0);
//We can't just use m_pIRowset, since we could Advise / Connect this listener
//to other rowsets besides just the one we were created with
//But if no rowset* is passed in, we'll use the current one
IConnectionPoint* pICP = NULL;
IConnectionPointContainer* pICPC = NULL;
HRESULT hr = S_OK;
//Obtain the connection point container
TESTC_(hr = pIRowset->QueryInterface(IID_IConnectionPointContainer,(void**)&pICPC),S_OK)
TESTC(pICPC != NULL);
//Obtain the IRowsetNotify connection point
TESTC_(hr = pICPC->FindConnectionPoint(IID_IRowsetNotify,&pICP),S_OK)
TESTC(pICP != NULL);
//Now we can advise the connection
TESTC_(hr = pICP->Unadvise(m_dwCookie),S_OK)
//Set Cookie back to 0
m_dwCookie = 0;
CLEANUP:
SAFE_RELEASE(pICP);
SAFE_RELEASE(pICPC);
return hr;
}
BOOL CImpIListener::IsWantedReason(DBREASON eReason)
{
ASSERT(IsValidEvent(eReason));
//Find the Reason index
for(ULONG iReason=0; iReason<DBREASON_ALL; iReason++)
{
if(iReason == eReason)
{
//If any of the phases for this reason are on (TRUE)
//then this is a "wanted" reason
for(ULONG iPhase=0; iPhase<DBEVENTPHASE_ALL; iPhase++)
if(m_rgWantedEvent[iReason][iPhase])
return TRUE;
}
}
return FALSE;
}
BOOL CImpIListener::IsWantedPhase(DBREASON eReason, DBEVENTPHASE ePhase)
{
ASSERT(IsValidEvent(eReason, ePhase));
//Find the Reason index
for(ULONG iReason=0; iReason<DBREASON_ALL; iReason++)
{
if(iReason == eReason)
{
if(m_rgWantedEvent[iReason][ePhase])
return TRUE;
}
}
return FALSE;
}
BOOL CImpIListener::SetUnwantedReason(DBREASON eReason)
{
ASSERT(IsValidEvent(eReason));
//Turn off all phases for this reason
//Which will indicate this reason is not needed for any phase
for(ULONG iReason=0; iReason<DBREASON_ALL; iReason++)
{
if(iReason == eReason)
{
for(ULONG iPhase=0; iPhase<DBEVENTPHASE_ALL; iPhase++)
m_rgWantedEvent[iReason][iPhase] = FALSE;
}
}
return TRUE;
}
BOOL CImpIListener::SetUnwantedPhase(DBREASON eReason, DBEVENTPHASE ePhase)
{
ASSERT(IsValidEvent(eReason, ePhase));
//Turn off the indicated phases for this reason
for(ULONG iReason=0; iReason<DBREASON_ALL; iReason++)
{
if(iReason == eReason)
m_rgWantedEvent[iReason][ePhase] = FALSE;
}
return TRUE;
}
DBEVENTPHASE CImpIListener::NextPhase(DBREASON eReason, DBEVENTPHASE ePhase)
{
ASSERT(IsValidEvent(eReason, ePhase));
switch(eReason)
{
//All Phases can occur
case DBREASON_ROWSET_FETCHPOSITIONCHANGE:
case DBREASON_ROWSET_CHANGED:
case DBREASON_COLUMN_SET:
case DBREASON_ROW_DELETE:
case DBREASON_ROW_FIRSTCHANGE:
case DBREASON_ROW_INSERT:
case DBREASON_ROW_RESYNCH:
case DBREASON_ROW_UNDOCHANGE:
case DBREASON_ROW_UNDOINSERT:
case DBREASON_ROW_UNDODELETE:
case DBREASON_ROW_UPDATE:
switch(ePhase)
{
//This setup will return whatever the next phase expected
//Depending upon which phases the Provider supports..
//The cases will just "fall" through to the next step if a
//phase is not supported...
case DBEVENTPHASE_OKTODO:
if(pExecutionManager()->pCRowsetObj()->IsSupportedPhase(DBEVENTPHASE_ABOUTTODO))
return DBEVENTPHASE_ABOUTTODO;
case DBEVENTPHASE_ABOUTTODO:
if(pExecutionManager()->pCRowsetObj()->IsSupportedPhase(DBEVENTPHASE_SYNCHAFTER))
return DBEVENTPHASE_SYNCHAFTER;
case DBEVENTPHASE_SYNCHAFTER:
if(pExecutionManager()->pCRowsetObj()->IsSupportedPhase(DBEVENTPHASE_DIDEVENT))
return DBEVENTPHASE_DIDEVENT;
}
}
return 0;
}
CExecutionManager* CImpIListener::pExecutionManager()
{
ASSERT(m_pExecutionManager);
return m_pExecutionManager;
}
CExpectationsManager* CImpIListener::pExpectationsManager()
{
ASSERT(m_pExecutionManager);
return m_pExecutionManager->pExpectationsManager();
}
///////////////////////////////////////////////////////////////////////////////
// CControl
//
///////////////////////////////////////////////////////////////////////////////
CControl::CControl(CExecutionManager* pExecutionManager)
{
ASSERT(pExecutionManager);
m_pExecutionManager = pExecutionManager;
//Create a Suspended Thread
m_hThread = CreateThread(NULL, 1024, CControl::ThreadFunction, this, CREATE_SUSPENDED, &m_dwThreadId);
TESTC(m_hThread != 0);
CLEANUP:
return;
}
CControl::~CControl()
{
CloseHandle(m_hThread);
}
DWORD CControl::GetThreadId()
{
return m_dwThreadId;
}
DWORD CControl::WaitForThread()
{
return WaitForThreads(1, &m_hThread);
}
ULONG CControl::Execute()
{
return ResumeThread(m_hThread);
}
ULONG WINAPI CControl::ThreadFunction(void* pv)
{
THREAD_BEGIN
CControl* pThis = (CControl*)pv;
ASSERT(pThis);
CExecutionManager* pExecutionManager = pThis->pExecutionManager();
CExpectationsManager* pExpectationsManager = pThis->pExpectationsManager();
ASSERT(pExecutionManager && pExpectationsManager);
HRESULT hr = S_OK;
//This is a Thread function, it must be a static function, taking void* and
//returning ULONG. Since it must be static, there is no "this" pointer,
//so we pass in the this pointer to the object...
//While there are Commands to be executed
while(!pExecutionManager->IsCommandListEmpty())
{
//On the list are "Listener" Commands and "Control" Commands
//Pop off a "Control" Command, if there is not one left but there
//are items still on the list, that means some listeners never
//got to use their commands, meanig they didn't get called for that
//reason/phase they were looking for...
COMMAND* pCommand = pExecutionManager->PopCommand(pThis);
if(pCommand != NULL)
{
//Popoff and execute indented command
QTESTC(pExpectationsManager->PushNestedExpectation(pCommand));
QTESTC(pExecutionManager->ExecuteCommand(pCommand));
QTESTC(pExpectationsManager->PopNestedExpectation(pCommand));
}
else
{
//Display and indicate Commands that never got to be used...
pCommand = pExecutionManager->PopCommand();
pCommand->DisplayCommand();
}
//Cleanup objects
SAFE_DELETE(pCommand);
}
CLEANUP:
THREAD_RETURN;
}
CExecutionManager* CControl::pExecutionManager()
{
ASSERT(m_pExecutionManager);
return m_pExecutionManager;
}
CExpectationsManager* CControl::pExpectationsManager()
{
ASSERT(m_pExecutionManager);
return m_pExecutionManager->pExpectationsManager();
}
///////////////////////////////////////////////////////////////////////////////
// CExecutionManager
//
///////////////////////////////////////////////////////////////////////////////
CExecutionManager::CExecutionManager(const WCHAR* pwszTestCaseName)
: CTestCases(pwszTestCaseName)
{
HRESULT hr = S_OK;
m_pCRowsetObj = NULL;
m_pExpectationsManager = NULL;
m_pCurrentCommand = NULL;
// This test case was just instantiated, so check the threading model of the creating thread:
// If we are in an STA (single-threaded apartment), then the ThreadID of the calling thread is not
// sufficient to identify the calling control. This is because all notifications are marshalled
// across apartment (thread) boundaries.
m_fFreeThreaded = true;
hr = CoInitializeEx(NULL, 0 /* COINIT_MULTITHREADED */);
if (RPC_E_CHANGED_MODE == hr)
m_fFreeThreaded = false; // We are in an STA
else
CoUninitialize(); // Make sure Init is matched by Uninit
}
CExecutionManager::~CExecutionManager()
{
Terminate();
}
BOOL CExecutionManager::Init()
{
m_pExpectationsManager = new CExpectationsManager(this);
return m_pExpectationsManager != NULL;
}
BOOL CExecutionManager::Terminate()
{
//Need to destory everything here
SAFE_DELETE(m_pCRowsetObj);
SAFE_DELETE(m_pExpectationsManager);
DestroyStacks();
return TRUE;
}
ULONG CExecutionManager::Execute(LPCWSTR wszCommandString, ROWSET_MODE dwRowsetMode)
{
TBEGIN
TESTC(ParseCommandString(wszCommandString));
// If we're running in an STA, listeners cannot receive notifications from multiple controls
if (!m_fFreeThreaded && m_mapControl.GetCount() > 1)
{
TOUTPUT(L"Listeners cannot receive notifications from multiple controls when running in apartment model.");
return TEST_SKIPPED;
}
//Execute
TESTC_PROVIDER(CreateRowset(dwRowsetMode)==S_OK);
TESTC(AdviseListeners());
TESTC(RunControls());
//For some SCENARIOS, it would be useful (ie: save duplicataion of code), if we also
//tested the same senario (same commandstring) with a different rowset type.
//For example: if the request rowset is buffered mode, it might also be useful to
//test the QBU mode code as well. This way the one variation tests both types of rowsets
//for the senario without duplication or maintaince issues...
if(dwRowsetMode & CHANGE_BUFFERRED)
{
//Execute
if(SupportedProperty(KAGPROP_QUERYBASEDUPDATES, DBPROPSET_PROVIDERROWSET))
{
dwRowsetMode |= CHANGE_QBU;
TESTC_(CreateRowset(dwRowsetMode),S_OK);
TESTC(AdviseListeners());
TESTC(RunControls());
}
}
//For example: many SCENARIOS are the "least common demoninator" meaning to get coverage on
//all providers they don't ask for many (or any properties). But as we have seen many properties
//will trigger different code paths and tigger bugs in notifications as well. So if the senario
//requires a bare-bones (default) rowset, then also try and somewhat more functional rowset.
//We obvious can loop through all possible rowset combinations (in a reasonable amount of time)
//but this seems to be the most interesting (default=usally forward only, second=keyset-scrollable).
if(dwRowsetMode & DEFAULT_ROWSET)
{
dwRowsetMode |= (SCROLLBACKWARDS | FETCHBACKWARDS);
if(CreateRowset(dwRowsetMode)==S_OK)
{
TESTC(AdviseListeners());
TESTC(RunControls());
}
}
CLEANUP:
UnadviseListeners();
DestroyStacks();
TRETURN;
}
BOOL CExecutionManager::ParseCommandString(LPCWSTR wszCommandString)
{
yylpwzInput = wszCommandString;
yypExecutionManager = this;
yypCommandListMap = &m_mapCommandList;
yypControlMap = &m_mapControl;
yypListenerMap = &m_mapListener;
yylexInit();
return yyparse() == 0;
}
HRESULT CExecutionManager::CreateRowset(ROWSET_MODE dwRowsetMode)
{
SAFE_DELETE(m_pCRowsetObj);
m_pCRowsetObj = new CRowsetObj();
return m_pCRowsetObj->CreateRowset(dwRowsetMode);
}
BOOL CExecutionManager::DestroyStacks()
{
POSITION pos = 0;
DWORD Key = 0;
//CContol
pos = m_mapControl.GetStartPosition();
while(pos)
{
CControl* pControl = NULL;
m_mapControl.GetNextAssoc(pos, Key, pControl);
SAFE_DELETE(pControl);
}
m_mapControl.RemoveAll();
//CImpIListener
pos = m_mapListener.GetStartPosition();
while(pos)
{
CImpIListener* pListener = NULL;
m_mapListener.GetNextAssoc(pos, Key, pListener);
SAFE_RELEASE(pListener);
}
m_mapListener.RemoveAll();
//CommandList
pos = m_mapCommandList.GetStartPosition();
while(pos)
{
COMMANDLIST* pCommandList = NULL;
m_mapCommandList.GetNextAssoc(pos, Key, pCommandList);
//CCOMAND
POSITION pos2 = pCommandList->GetHeadPosition();
while(pos2)
{
COMMAND* pCommand = NULL;
pCommand = pCommandList->GetNext(pos2);
SAFE_DELETE(pCommand);
}
SAFE_DELETE(pCommandList);
}
m_mapCommandList.RemoveAll();
return TRUE;
}
BOOL CExecutionManager::AdviseListeners(CImpIListener* pListener)
{
//If pListener == NULL, it will Advise all Listeners
//Otherwise just the specified Listener with be Added and Advised
ULONG key = 0;
CImpIListener* pImpIListener = NULL;
IRowset* pIRowset = m_pCRowsetObj ? pCRowsetObj()->pIRowset() : NULL;
//If NULL Advise all Listeners
POSITION pos = m_mapListener.GetStartPosition();
while(pos && pListener==NULL && pIRowset)
{
m_mapListener.GetNextAssoc(pos, key, pImpIListener);
pImpIListener->Advise(pCRowsetObj()->pIRowset());
}
if(pListener && pIRowset)
{
m_mapListener.SetAt(PtrToUlong(pListener), pListener);
pListener->Advise(pCRowsetObj()->pIRowset());
}
return TRUE;
}
BOOL CExecutionManager::UnadviseListeners(CImpIListener* pListener)
{
//If pListener == NULL, it will Unadvise and remove all Listeners
//Otherwise just Unadvise/Remvoe the specified Listener
ULONG key = 0;
CImpIListener* pImpIListener = NULL;
IRowset* pIRowset = m_pCRowsetObj ? pCRowsetObj()->pIRowset() : NULL;
//Remove Listener from list
POSITION pos = m_mapListener.GetStartPosition();
while(pIRowset && pos)
{
m_mapListener.GetNextAssoc(pos, key, pImpIListener);
if(pListener==NULL || pListener==pImpIListener)
{
pImpIListener->Unadvise(pCRowsetObj()->pIRowset());
m_mapListener.RemoveKey(key);
SAFE_RELEASE(pImpIListener);
}
}
return TRUE;
}
BOOL CExecutionManager::RunControls()
{
ULONG_PTR nControlCount = m_mapControl.GetCount();
ULONG key = 0;
CControl* pControl = NULL;
POSITION pos = NULL;
ULONG_PTR i = 0;
//Start all the threads
pos = m_mapControl.GetStartPosition();
for(i = 0; i < nControlCount; i++)
{
m_mapControl.GetNextAssoc(pos, key, pControl);
pControl->Execute();
}
//Wait for all threads to finish
pos = m_mapControl.GetStartPosition();
for(i=0; i<nControlCount; i++)
{
m_mapControl.GetNextAssoc(pos, key, pControl);
pControl->WaitForThread();
}
UnadviseListeners();
DestroyStacks();
return TRUE;
}
POSITION CExecutionManager::GetListenerStartPosition()
{
return m_mapListener.GetStartPosition();
}
CImpIListener* CExecutionManager::NextListener(POSITION& pos)
{
ULONG key = 0;
CImpIListener* pImpIListener = NULL;
m_mapListener.GetNextAssoc(pos, key, pImpIListener);
return pImpIListener;
}
BOOL CExecutionManager::ExecuteCommand(COMMAND* pCOMMAND)
{
ASSERT(pCOMMAND);
//Setup the Thread arguments
THREADARG T1 = { this, pCOMMAND };
BOOL bResult = TRUE;
if(pCOMMAND->m_cThreads)
{
DWORD dwThreadId = 0;
HANDLE hThread = CreateThread(NULL, 1024, CExecutionManager::Thread_ExecuteCommand, &T1, 0, &dwThreadId);
//Wait for it to finish...
WaitForThreads(1, &hThread);
bResult = GetThreadCode(hThread);
}
else
{
//No threads...
bResult = Thread_ExecuteCommand(&T1);
}
return bResult;
}
ULONG CExecutionManager::Thread_ExecuteCommand(void* pv)
{
HRESULT hr = E_FAIL;
BOOL bReturn = FALSE;
CExecutionManager* pThis = (CExecutionManager*)THREAD_FUNC;
COMMAND* pCommand = (COMMAND*)THREAD_ARG1;
//Save the old command
COMMAND* pSavedCommand = pThis->GetCurrentCommand();
pThis->m_pCurrentCommand = pCommand;
//Make our lives easier...
CRowsetObj* pCRowsetObj = pThis->pCRowsetObj();
//Determine the OLEDB Method to call
switch(pCommand->m_eCommandType)
{
case SETDATA:
hr = pCRowsetObj->SetData(pCommand);
break;
case DELETEROWS:
hr = pCRowsetObj->DeleteRows(pCommand);
break;
case INSERTROW:
hr = pCRowsetObj->InsertRow(pCommand);
break;
case GETNEXTROWS:
hr = pCRowsetObj->GetNextRows(pCommand);
break;
case ADDREFROWS:
hr = pCRowsetObj->AddRefRows(pCommand);
break;
case RELEASEROWS:
hr = pCRowsetObj->ReleaseRows(pCommand);
break;
case UPDATE:
hr = pCRowsetObj->Update(pCommand);
break;
case UNDO:
hr = pCRowsetObj->Undo(pCommand);
break;
case RESYNCHROWS:
hr = pCRowsetObj->ResynchRows(pCommand);
break;
case ADDREFROWSET:
pCRowsetObj->AddRefRowset();
hr = S_OK;
break;
case RELEASEROWSET:
if(pCRowsetObj->m_cRowsetRef==0)
{
SAFE_DELETE(pThis->m_pCRowsetObj);
}
else
{
pCRowsetObj->ReleaseRowset();
}
hr = S_OK;
break;
case RESTARTPOSITION:
hr = pCRowsetObj->RestartPosition(pCommand);
break;
case GETROWSAT:
hr = pCRowsetObj->GetRowsAt(pCommand);
break;
case GETROWSATRATIO:
hr = pCRowsetObj->GetRowsAtRatio(pCommand);
break;
case GETROWSBYBOOKMARK:
hr = pCRowsetObj->GetRowsByBookmark(pCommand);
break;
case GETDATA:
hr = pCRowsetObj->GetData(pCommand);
break;
case GETORIGINALDATA:
hr = pCRowsetObj->GetOriginalData(pCommand);
break;
case GETVISIBLEDATA:
hr = pCRowsetObj->GetVisibleData(pCommand);
break;
case ADDCOLUMN:
hr = pCRowsetObj->AddColumn();
if(FAILED(hr))
{
bReturn = FALSE;
goto CLEANUP;
}
break;
case DROPCOLUMN:
hr = pCRowsetObj->DropColumn();
if(FAILED(hr))
{
bReturn = FALSE;
goto CLEANUP;
}
break;
case GETCOLUMNINFO:
hr = pCRowsetObj->GetColumnInfo();
break;
default:
//Unknown Command
TCHECK(hr, S_OK);
}
//Verify HRESULT returned
if(pCommand->m_fCanceled)
{
//if the command was Vetod by a listener then it should be
//one of the "CANCELED" return codes
switch(pCommand->m_eCommandType)
{
case DELETEROWS:
case RESYNCHROWS:
case UPDATE:
if (pCommand->m_cRows == 1)
TESTC_(hr, DB_E_ERRORSOCCURRED)
else
TESTC_(hr, DB_S_ERRORSOCCURRED);
break;
case UNDO:
TESTC_(hr, DB_E_ERRORSOCCURRED);
break;
default:
TESTC_(hr, DB_E_CANCELED);
break;
}
}
else
{
//Otherwise it should be whatever was epected
switch(pCommand->m_hrExpected)
{
case DB_E_NOTREENTRANT:
//According to the spec Providers may or may not support reentrantcy
//And even if they support it, some methods still might not be.
if(pCRowsetObj->GetReentrantEvents()==FALSE)
TESTC_(hr, DB_E_NOTREENTRANT)
else
TEST2C_(hr, S_OK, DB_E_NOTREENTRANT);
pCommand->m_hrExpected = hr;
break;
case DB_E_BADSTARTPOSITION:
//We need to expect DB_E_BADSTARTPOSITION as this indicates to the
//framework that we want to pass a large offset, but the spec
//actually requires DB_S_ENDOFROWSET for 2.x+ providers.
//So we will as well, but still need the 2 states for testing...
TESTC_(hr, DB_S_ENDOFROWSET);
break;
default:
TESTC_(hr, pCommand->m_hrExpected);
break;
}
}
bReturn = TRUE;
CLEANUP:
//Restore the Saved command
pThis->m_pCurrentCommand = pSavedCommand;
return bReturn;
}
CRowsetObj* CExecutionManager::pCRowsetObj()
{
ASSERT(m_pCRowsetObj);
return m_pCRowsetObj;
}
CExpectationsManager* CExecutionManager::pExpectationsManager()
{
ASSERT(m_pExpectationsManager);
return m_pExpectationsManager;
}
COMMAND* CExecutionManager::GetCurrentCommand()
{
return m_pCurrentCommand;
}
COMMANDLIST * CExecutionManager::LookupCommandList()
{
COMMANDLIST * pCommandList = NULL;
// If we're free-threaded, then use the current thread ID to locate the correct command list
if (m_fFreeThreaded)
m_mapCommandList.Lookup(GetCurrentThreadId(), pCommandList);
// Otherwise, there should be only one command list. Get that by iterating.
else
{
POSITION pos = 0;
DWORD dwKey = 0;
ASSERT(1 == m_mapCommandList.GetCount());
pos = m_mapCommandList.GetStartPosition();
m_mapCommandList.GetNextAssoc(pos, dwKey, pCommandList);
}
return pCommandList;
}
BOOL CExecutionManager::IsCommandListEmpty()
{
COMMANDLIST* pCommandList = LookupCommandList();
return pCommandList ? pCommandList->IsEmpty() : TRUE;
}
COMMAND* CExecutionManager::PopCommand(CControl* pControl)
{
//Passing NULL with just pop of the head of the list...
COMMANDLIST* pCommandList = NULL;
POSITION pos = 0;
pCommandList = LookupCommandList();
TESTC(NULL != pCommandList);
pos = pCommandList->GetHeadPosition();
while(pos)
{
POSITION posSave = pos;
COMMAND* pCommand = pCommandList->GetNext(pos);
if(pControl && pCommand->m_pvObjectId != pControl)
continue;
pCommandList->RemoveAt(posSave);
return pCommand;
}
CLEANUP:
return NULL;
}
COMMAND* CExecutionManager::PopCommand
(
CImpIListener* pListener,
DBREASON eReason,
DBEVENTPHASE ePhase
)
{
ASSERT(pListener);
COMMANDLIST* pCommandList = NULL;
POSITION pos = 0;
pCommandList = LookupCommandList();
TESTC(NULL != pCommandList);
pos = pCommandList->GetHeadPosition();
while(pos)
{
POSITION posSave = pos;
COMMAND* pCommand = pCommandList->GetNext(pos);
if(pCommand->m_pvObjectId != pListener)
continue;
if(pCommand->m_ulCommandLevel != GetCurrentCommand()->m_ulCommandLevel)
continue;
if(pCommand->m_eReason != eReason)
continue;
if(pCommand->m_ePhase != ePhase)
continue;
pCommandList->RemoveAt(posSave);
return pCommand;
}
CLEANUP:
return new COMMAND(RETURN_ACCEPT);
}
BOOL CExecutionManager::IsCancelableEvent(DBREASON eReason, DBEVENTPHASE ePhase)
{
return pCRowsetObj()->IsCancelableEvent(eReason, ePhase);
}
/////////////////////////////////////////////////////////////////
// CExpectationsManager
//
/////////////////////////////////////////////////////////////////
CExpectationsManager::CExpectationsManager(CExecutionManager* pExecutionManager)
{
ASSERT(pExecutionManager);
m_pExecutionManager = pExecutionManager;
}
CExpectationsManager::~CExpectationsManager()
{
}
CRowsetObj* CExpectationsManager::pCRowsetObj()
{
ASSERT(m_pExecutionManager);
return m_pExecutionManager->pCRowsetObj();
}
CExecutionManager* CExpectationsManager::pExecutionManager()
{
ASSERT(m_pExecutionManager);
return m_pExecutionManager;
}
BOOL CExpectationsManager::PushNextExpectation(EXPECT* pExpect)
{
ASSERT(pExpect);
return pExpect->SetNextPhase();
}
BOOL CExpectationsManager::PushUnwantedReason(CImpIListener* pListener, IRowset* pIRowset, DBREASON eReason)
{
TBEGIN
ASSERT(pListener);
ASSERT(pIRowset);
POSITION pos = 0;
//All Expecations for this reason
COMMAND* pCommand = pExecutionManager()->GetCurrentCommand();
pos = pCommand->m_listExpect.GetHeadPosition();
while(pos)
{
EXPECT* pExpect = pCommand->m_listExpect.GetNext(pos);
TESTC(pExpect != NULL);
//Should not expect any more notifications
if(pExpect->m_pListener == pListener && pExpect->m_pIRowset == pIRowset && pExpect->m_eReason == eReason)
pExpect->m_bCompleted = TRUE;
}
CLEANUP:
TRETURN;
}
BOOL CExpectationsManager::PushUnwantedPhase(CImpIListener* pListener, IRowset* pIRowset, DBREASON eReason, DBEVENTPHASE ePhase)
{
TBEGIN
ASSERT(pListener);
ASSERT(pIRowset);
POSITION pos = 0;
//All Expecations for this reason/phase should expect the next phase... - not quite correct: see bug 62019
COMMAND* pCommand = pExecutionManager()->GetCurrentCommand();
pos = pCommand->m_listExpect.GetHeadPosition();
while(pos)
{
EXPECT* pExpect = pCommand->m_listExpect.GetNext(pos);
TESTC(pExpect != NULL);
//Per the spec:DB_S_UNWANTEDPHASE - The provider can optimize by making no further calls with this reason and phase but
//but provider can still call consumer with this reason and phase
if(pExpect->m_pListener == pListener && pExpect->m_pIRowset == pIRowset && pExpect->m_eReason == eReason && pExpect->m_ePhase == ePhase)
pExpect->m_bCompleted = TRUE;
}
CLEANUP:
TRETURN;
}
BOOL CExpectationsManager::PushAdviseExpectation(EXPECT* pExpect)
{
ASSERT(pExpect);
//Advise a new Listener
CImpIListener* pNewListener = new CImpIListener(pExecutionManager());
pExecutionManager()->AdviseListeners(pNewListener);
//Also need to add Expectations for this listener!
COMMAND* pCommand = pExecutionManager()->GetCurrentCommand();
POSITION pos = pCommand->m_listExpect.GetHeadPosition();
while(pos)
{
EXPECT* pCurExpect = pCommand->m_listExpect.GetNext(pos);
if(pCurExpect->m_pListener == pExpect->m_pListener)
{
//Create a new Expectation for the newly added Listener
//It should be expecting the phases as this listener (Copy constructor)
//This expectation is completly optional, meaning that it is provider
//specific weither the provider notifies Listeners that have advised
//in the middle of a notification. The nice thing about this framework
//is that even if the provider does send notifications we can determine
//we are getting the correct ones and in the correct order...
EXPECT* pNewExpect = new EXPECT(*pCurExpect);
pNewExpect->m_pListener = pNewListener;
pNewExpect->m_fOptional = TRUE;
pNewExpect->m_bCompleted = FALSE;
pNewExpect->m_ulTimesNotified = 0;
//Add this Listener to the List
pCommand->m_listExpect.AddTail(pNewExpect);
}
}
//We have recieved this Notification
PushNextExpectation(pExpect);
return TRUE;
}
BOOL CExpectationsManager::PushUnadviseExpectation(EXPECT* pExpect)
{
TBEGIN
ASSERT(pExpect);
//We need to save a pointer to the Listener
//Since deleting the expectation from the list will remove the same
//Expecation passed in...
CImpIListener* pListener = pExpect->m_pListener;
//Unadvise this Listener
pExecutionManager()->UnadviseListeners(pListener);
//Also need to remove Expectations for this listener!
COMMAND* pCommand = pExecutionManager()->GetCurrentCommand();
POSITION pos = pCommand->m_listExpect.GetHeadPosition();
while(pos)
{
POSITION posSave = pos;
EXPECT* pCurExpect = pCommand->m_listExpect.GetNext(pos);
if(pCurExpect->m_pListener == pListener)
{
pCommand->m_listExpect.RemoveAt(posSave);
SAFE_DELETE(pCurExpect);
}
}
TRETURN;
}
BOOL CExpectationsManager::PushFalseExpectation(EXPECT* pFalseExpect)
{
//A Listener has Veto'd a change, and we need to figure out whats
//expected for all addtional notifications for FAILEDTODO
TBEGIN
ASSERT(pFalseExpect);
POSITION pos = 0;
COMMAND* pCommand = pExecutionManager()->GetCurrentCommand();
pCommand->m_fCanceled = (pCommand->m_hrExpected == S_OK);
pos = pCommand->m_listExpect.GetHeadPosition();
while(pos)
{
EXPECT* pExpect = pCommand->m_listExpect.GetNext(pos);
//The Expectations not waiting for this notification
//Should expect FAILEDTODO if they have already started receiving phases
if(pExpect->m_eReason != pFalseExpect->m_eReason)
{
if(!pExpect->IsCompleted())
{
pExpect->m_fCanceled = pCommand->m_fCanceled;
if(pExpect->m_ulTimesNotified)
pExpect->SetPhase(DBEVENTPHASE_FAILEDTODO);
}
}
//Expectations waiting for this notificaiton
//Should expect FAILEDTODO if they have already started receiving phases
if(pExpect->IsEqual(pExpect->m_pListener, pFalseExpect->m_pIRowset, pFalseExpect->m_cRows, pFalseExpect->m_rghRows, pFalseExpect->m_cColumns, pFalseExpect->m_rgColumns, pFalseExpect->m_eReason, pExpect->m_ePhase) ||
(pExpect->m_eReason==DBREASON_ROW_INSERT && pExpect->m_ulTimesNotified==0))
{
if(!pExpect->IsCompleted())
{
pExpect->m_fCanceled = pCommand->m_fCanceled;
if(pExpect->m_ulTimesNotified)
pExpect->SetPhase(DBEVENTPHASE_FAILEDTODO);
}
}
}
TRETURN;
}
BOOL CExpectationsManager::PushNestedExpectation(COMMAND* pCommand)
{
TBEGIN
ASSERT(pCommand);
POSITION pos = 0;
//Setup
DBCOUNTITEM cRows = pCommand->m_cRows;
HROW* rghRows = pCommand->m_rghRows;
IRowset* pIRowset = pCRowsetObj()->pIRowset();
DBCOUNTITEM i;
ROWSTATUS rgRowStatus[MAX_ROW_COUNT];
ULONG rgRefCounts[MAX_ROW_COUNT];
ULONG fFirstChange = FALSE;
//MapRowIds = RowId -> hRow
TESTC(pCRowsetObj()->MapRowIds(pCommand));
//Lookup rowstatus values
for(i=0; i<cRows || i<pCommand->m_dwOption; i++)
{
ROWINFO* pRowInfo = NULL;
rgRowStatus[i] = ROWSTATUS_NOCHANGE;
rgRefCounts[i] = 0;
if(pRowInfo = pCRowsetObj()->GetRowInfo(pCommand->m_rgRowIds[i]))
{
rgRowStatus[i] = pRowInfo->m_eRowStatus;
rgRefCounts[i] = pRowInfo->m_cRefCount;
fFirstChange = pRowInfo->m_fFirstChange;
}
}
pos = pExecutionManager()->GetListenerStartPosition();
while(pos)
{
//Get the next listener
CImpIListener* pListener = pExecutionManager()->NextListener(pos);
TESTC(pListener != NULL);
switch(pCommand->m_eCommandType)
{
case RELEASEROWSET:
//DBREASON_ROWSET_RELEASE
//Release Rowset only gets sent when Reference count goes to 0
if(pCRowsetObj()->m_cRowsetRef==0)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, 0, NULL, 0, NULL, DBREASON_ROWSET_RELEASE, DBEVENTPHASE_DIDEVENT);
pCommand->m_listExpect.AddTail(pExpect);
}
break;
case GETNEXTROWS:
{
//DBREASON_ROWSET_FETCHPOSITIONCHANGE
if(cRows || pCommand->m_hrExpected==DB_S_ENDOFROWSET)
{
//TODO should only expect FETCHPOSITIONCHANGE if position is going to change!
EXPECT* pExpect = new EXPECT(pListener, pIRowset, 0, NULL, 0, NULL, DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
//DBREASON_ROW_ACTIVATE
//ROW_ACTIVATE is a siglephase event, according to the spec
//the provider makes a single call to OnRowChange for all rows
DBCOUNTITEM cRowsNew = 0;
HROW rghRowsNew[MAX_ROW_COUNT];
memset(rghRowsNew, 0, MAX_ROW_COUNT * sizeof(HROW));
if(cRows && pCommand->m_hrExpected!=DB_S_ENDOFROWSET)
{
//Only expect new rows to be notified
for(DBCOUNTITEM i=0; i<cRows; i++)
if(rghRows[i]==DB_NULL_HROW || rgRefCounts[i]==0)
rghRowsNew[cRowsNew++] = DB_NULL_HROW;
//Some Providers may have a limit to the number of
//rows able to be fetched. DBPROP_MAXOPENROWS
DBCOUNTITEM ulMaxOpenRows = pCRowsetObj()->GetMaxOpenRows();
if(ulMaxOpenRows!=0 && ulMaxOpenRows<cRowsNew)
cRowsNew = ulMaxOpenRows;
}
else if (cRows==0 && pCommand->m_hrExpected==DB_S_ENDOFROWSET)
cRowsNew = MAX_ROW_COUNT;
//If there are any new Rows then expect a notification
if(cRowsNew)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsNew, rghRowsNew, 0, NULL, DBREASON_ROW_ACTIVATE, DBEVENTPHASE_DIDEVENT);
pCommand->m_listExpect.AddTail(pExpect);
}
}
break;
case RELEASEROWS:
//DBREASON_ROW_RELEASE
{
DBCOUNTITEM cRowsValid = 0;
HROW rghRowsValid[MAX_ROW_COUNT];
//Only expect the valid rows to be notified
//Also only expect rows that have a will have a reference count
//of 0 after ReleaseRows to send notifications
for(DBCOUNTITEM i=0; i<cRows; i++)
if(rghRows[i]!=DB_NULL_HROW && rgRefCounts[i]==1)
rghRowsValid[cRowsValid++] = rghRows[i];
//If there are any Valid Rows then expect a notification
if(cRowsValid)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsValid, rghRowsValid, 0, NULL, DBREASON_ROW_RELEASE, DBEVENTPHASE_DIDEVENT);
pCommand->m_listExpect.AddTail(pExpect);
}
}
break;
case RESTARTPOSITION:
//DBREASON_ROWSET_FETCHPOSITIONCHANGE
{
//Should only expect FETCHPOSITIONCHANGE if the next fetch position changed
if(pCRowsetObj()->m_ulNextFetchPos != 0)
{
// May require to release rows before RestartPosition if DBPROP_QUICKRESTART = TRUE
//should handle this case
if (!pCRowsetObj()->IsQuickRestart())
{
DBCOUNTITEM cRowsValid = 0;
HROW rghRowsValid[MAX_ROW_COUNT];
pCRowsetObj()->GetRowsToRelease(MAX_ROW_COUNT, cRowsValid, rghRowsValid);
//If there are any Valid Rows then expect a notification
if(cRowsValid)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsValid, rghRowsValid, 0, NULL, DBREASON_ROW_RELEASE, DBEVENTPHASE_DIDEVENT);
pCommand->m_listExpect.AddTail(pExpect);
}
}
}
EXPECT* pExpect = new EXPECT(pListener, pIRowset, 0, NULL, 0, NULL, DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
//DBREASON_ROWSET_CHANGED
if(pCRowsetObj()->m_fTableAltered)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, 0, NULL, 0, NULL, DBREASON_ROWSET_CHANGED, DBEVENTPHASE_DIDEVENT);
pCommand->m_listExpect.AddTail(pExpect);
}
}
break;
case DELETEROWS:
//DBREASON_ROW_DELETE
if(cRows)
{
if(pCRowsetObj()->GetGranularity() == DBPROPVAL_NT_SINGLEROW)
{
for(DBCOUNTITEM i=0; i<cRows; i++)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, ONE_ROW, &rghRows[i], 0, NULL, DBREASON_ROW_DELETE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
else
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRows, rghRows, 0, NULL, DBREASON_ROW_DELETE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
break;
case INSERTROW:
{
//DBREASON_ROW_INSERT
{
pCommand->m_listExpect.AddTail(new EXPECT(pListener, pIRowset, cRows, rghRows, 0, NULL, DBREASON_ROW_INSERT, DBEVENTPHASE_OKTODO));
}
}
break;
case SETDATA:
//DBREASON_ROW_FIRSTCHANGE
//Only is fired in BufferedMode
if(pCRowsetObj()->IsBufferedMode() && fFirstChange)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRows, rghRows, 0, NULL, DBREASON_ROW_FIRSTCHANGE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
//DBREASON_COLUMN_SET
{
//We need to setup the expected columns.
pCommand->m_cColumns = pCRowsetObj()->m_cUpBindings;
SAFE_REALLOC(pCommand->m_rgColumns, DBORDINAL, pCommand->m_cColumns);
for(DBORDINAL i=0; i<pCommand->m_cColumns; i++)
pCommand->m_rgColumns[i] = pCRowsetObj()->m_rgUpBindings[i].iOrdinal;
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRows, rghRows, pCommand->m_cColumns, pCommand->m_rgColumns, DBREASON_COLUMN_SET, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
//DBREASON_COLUMN_RECALCULATED
if((pCRowsetObj()->m_dwRowsetMode & COMPUTED_COLUMNS) || (pCRowsetObj()->m_dwRowsetMode & COMPUTED_COLUMNS_INCLUDE))
{
//We need to setup the expected columns.
pCommand->m_cColumns = pCRowsetObj()->m_cUpBindings;
SAFE_REALLOC(pCommand->m_rgColumns, DBORDINAL, pCommand->m_cColumns);
for(DBORDINAL i=0; i<pCommand->m_cColumns; i++)
pCommand->m_rgColumns[i] = pCRowsetObj()->m_rgUpBindings[i].iOrdinal;
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRows, rghRows, pCommand->m_cColumns, pCommand->m_rgColumns, DBREASON_COLUMN_RECALCULATED, DBEVENTPHASE_DIDEVENT);
pCommand->m_listExpect.AddTail(pExpect);
}
break;
case SEEK:
//DBREASON_ROWSET_FETCHPOSITIONCHANGE
{
//TODO should only expect FETCHPOSITIONCHANGE if position is going to change!
EXPECT* pExpect = new EXPECT(pListener, pIRowset, 0, NULL, 0, NULL, DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
break;
case GETROWSAT:
case GETROWSBYBOOKMARK:
case GETROWSATRATIO:
//DBREASON_ROW_ACTIVATE
if(cRows)
{
//ROW_ACTIVATE is a siglephase event, according to the spec
//the provider makes a single call to OnRowChange for all rows
/*
DBCOUNTITEM cRowsExpected = cRows;
if(pCommand->m_dwOption == DBBMK_LAST && pCommand->m_eCommandType == GETROWSAT)
cRowsExpected = 1;
DBCOUNTITEM cRowsNew = 0;
HROW rghRowsNew[MAX_ROW_COUNT];
//Only expect new rows to be notified
for(DBCOUNTITEM i=0; i<cRowsExpected; i++)
if(rghRows[i]==DB_NULL_HROW || rgRefCounts[i]==0)
rghRowsNew[cRowsNew++] = DB_NULL_HROW;
//Some Providers may have a limit to the number of
//rows able to be fetched. DBPROP_MAXOPENROWS
DBCOUNTITEM ulMaxOpenRows = pCRowsetObj()->GetMaxOpenRows();
if(ulMaxOpenRows!=0 && ulMaxOpenRows<cRowsNew)
cRowsNew = ulMaxOpenRows;
//If there are any new Rows then expect a notification
if(cRowsNew)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsNew, rghRowsNew, 0, NULL, DBREASON_ROW_ACTIVATE, DBEVENTPHASE_DIDEVENT);
pCommand->m_listExpect.AddTail(pExpect);
}
*/
//The provider should send this reason for newly fetched rows only,
//but it might be expensive for providers to determine whether or not a row is newly fetched
// so will expect DBREASON_ROW_ACTIVATE for all rows
DBCOUNTITEM cRowsExpected = cRows;
if(pCommand->m_dwOption == DBBMK_LAST && pCommand->m_eCommandType == GETROWSAT)
cRowsExpected = 1;
HROW rghRowsExpect[MAX_ROW_COUNT];
//All rows might be notified
for(DBCOUNTITEM i=0; i<cRowsExpected; i++)
if(rghRows[i]==DB_NULL_HROW || rgRefCounts[i]==0)
rghRowsExpect[i] = DB_NULL_HROW;
else
rghRowsExpect[i] = rghRows[i];
//Some Providers may have a limit to the number of
//rows able to be fetched. DBPROP_MAXOPENROWS
DBCOUNTITEM ulMaxOpenRows = pCRowsetObj()->GetMaxOpenRows();
if(ulMaxOpenRows!=0 && ulMaxOpenRows<cRowsExpected)
cRowsExpected = ulMaxOpenRows;
if(cRowsExpected)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsExpected, rghRowsExpect, 0, NULL, DBREASON_ROW_ACTIVATE, DBEVENTPHASE_DIDEVENT);
pCommand->m_listExpect.AddTail(pExpect);
}
}
break;
case RESYNCHROWS:
//DBREASON_ROW_RESYNCH
{
DBCOUNTITEM cRowsResynched = 0;
HROW rghRowsResynched[MAX_ROW_COUNT];
//Find all "Pending" rows
for(DBCOUNTITEM i=0; i<cRows || i<pCommand->m_dwOption; i++)
{
//According to the spec resynch row notifications
//are always, regardless if the row needed resynching
//or not. So for all rows passed to IRowsetResynch
//all should be notified.
if(rghRows[i] != DB_NULL_HROW)
rghRowsResynched[cRowsResynched++] = rghRows[i];
}
if(pCRowsetObj()->GetGranularity() == DBPROPVAL_NT_SINGLEROW)
{
for(DBCOUNTITEM i=0; i<cRowsResynched; i++)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, ONE_ROW, &rghRowsResynched[i], 0, NULL, DBREASON_ROW_RESYNCH, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
else
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsResynched, rghRowsResynched, 0, NULL, DBREASON_ROW_RESYNCH, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
break;
case UNDO:
//DBREASON_ROW_UNDOCHANGE
{
DBCOUNTITEM cRowsChanged = 0;
HROW rghRowsChanged[MAX_ROW_COUNT];
//Find all "Changed" rows
for(DBCOUNTITEM i=0; i<cRows || i<pCommand->m_dwOption; i++)
{
//UndoChange is only sent for rows that have changed
//and are undone, other "no-op" rows do not have notifications
if(rghRows[i] && rgRowStatus[i] == ROWSTATUS_CHANGED)
rghRowsChanged[cRowsChanged++] = rghRows[i];
}
if(pCRowsetObj()->GetGranularity() == DBPROPVAL_NT_SINGLEROW)
{
for(DBCOUNTITEM i=0; i<cRowsChanged; i++)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, ONE_ROW, &rghRowsChanged[i], 0, NULL, DBREASON_ROW_UNDOCHANGE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
else
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsChanged, rghRowsChanged, 0, NULL, DBREASON_ROW_UNDOCHANGE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
//DBREASON_ROW_UNDOINSERT
{
DBCOUNTITEM cRowsInserted = 0;
HROW rghRowsInserted[MAX_ROW_COUNT];
//Find all "Inserted" rows
for(DBCOUNTITEM i=0; i<cRows || i<pCommand->m_dwOption; i++)
{
//UndoInsert is only sent for rows that have changed
//and are undone, other "no-op" rows do not have notifications
if(rghRows[i] && rgRowStatus[i] == ROWSTATUS_INSERTED)
rghRowsInserted[cRowsInserted++] = rghRows[i];
}
if(pCRowsetObj()->GetGranularity() == DBPROPVAL_NT_SINGLEROW)
{
for(DBCOUNTITEM i=0; i<cRowsInserted; i++)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, ONE_ROW, &rghRowsInserted[i], 0, NULL, DBREASON_ROW_UNDOINSERT, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
else
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsInserted, rghRowsInserted, 0, NULL, DBREASON_ROW_UNDOINSERT, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
//DBREASON_ROW_UNDODELETE
{
DBCOUNTITEM cRowsDeleted = 0;
HROW rghRowsDeleted[MAX_ROW_COUNT];
//Find all "Deleted" rows
for(DBCOUNTITEM i=0; i<cRows || i<pCommand->m_dwOption; i++)
{
//UndoDelete is only sent for rows that have changed
//and are undone, other "no-op" rows do not have notifications
if(rghRows[i] && rgRowStatus[i] == ROWSTATUS_DELETED)
rghRowsDeleted[cRowsDeleted++] = rghRows[i];
}
if(pCRowsetObj()->GetGranularity() == DBPROPVAL_NT_SINGLEROW)
{
for(DBCOUNTITEM i=0; i<cRowsDeleted; i++)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, ONE_ROW, &rghRowsDeleted[i], 0, NULL, DBREASON_ROW_UNDODELETE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
else
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsDeleted, rghRowsDeleted, 0, NULL, DBREASON_ROW_UNDODELETE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
break;
case UPDATE:
//DBREASON_ROW_UPDATE
{
DBCOUNTITEM cRowsPending = 0;
HROW rghRowsPending[MAX_ROW_COUNT];
//Find all "Pending" rows
for(DBCOUNTITEM i=0; i<cRows || i<pCommand->m_dwOption; i++)
{
//Update is only sent for rows that have changed
//and are undone, other "no-op" rows do not have notifications
if(rghRows[i] && rgRowStatus[i] != ROWSTATUS_NOCHANGE)
rghRowsPending[cRowsPending++] = rghRows[i];
}
if(pCRowsetObj()->GetGranularity() == DBPROPVAL_NT_SINGLEROW)
{
for(DBCOUNTITEM i=0; i<cRowsPending; i++)
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, ONE_ROW, &rghRowsPending[i], 0, NULL, DBREASON_ROW_UPDATE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
else
{
EXPECT* pExpect = new EXPECT(pListener, pIRowset, cRowsPending, rghRowsPending, 0, NULL, DBREASON_ROW_UPDATE, DBEVENTPHASE_OKTODO);
pCommand->m_listExpect.AddTail(pExpect);
}
}
break;
default:
//No expected notifications
break;
}
}
CLEANUP:
TRETURN
}
BOOL CExpectationsManager::PopNestedExpectation(COMMAND* pCommand)
{
TBEGIN
while(!pCommand->m_listExpect.IsEmpty())
{
EXPECT* pExpect = pCommand->m_listExpect.RemoveHead();
TCHECK(pExpect != NULL, TRUE);
//This maybe a optional notification
//Optional notifications are for Listeners that have been advised in the
//middle, it is provider specific weither or not the provider sends
//any notifications to this listener until the next notification
if(pExpect->m_fOptional)
{
if(pExpect->m_bCompleted)
TCHECK(pExpect->VerifyComplete(), TRUE);
}
//If the Notification was veto'd by a listener
else if(pCommand->m_fCanceled)
{
//If it started to receive Notifications, then it should have an
//Incomplete sequence, otherwise no phases should have been fired
if(pExpect->m_fCanceled)
{
TCHECK(pExpect->VerifyInComplete(),TRUE);
}
else
{
TCHECK(pExpect->VerifyComplete(),TRUE);
}
}
else
{
//If it wasn't vetod by a listener then the phases should be
//COMPLETE if the expected HRESULT was S_OK (default), or if we were
//purposly inposing an error, it should be what we expect...
switch(pCommand->m_hrExpected)
{
case E_INVALIDARG:
case DB_E_NOTREENTRANT:
case DB_E_ERRORSOCCURRED:
case DB_E_BADROWHANDLE:
case DB_E_BADACCESSORHANDLE:
//Failures that should have never been notified
TCHECK(pExpect->VerifyInComplete(),TRUE);
break;
case DB_S_ENDOFROWSET:
//Should only get INCOMPLETE if asked for no rows
//otherwsie should have changed the position
//TODO really should be a more robust way of knowing wither the fetchposition is going to change
if(pCommand->m_cRows==0)
{
TCHECK(pExpect->VerifyInComplete(),TRUE);
}
else
{
TCHECK(pExpect->VerifyComplete(),TRUE);
}
break;
case DB_E_BADSTARTPOSITION:
//Canceled, should have been an incomplete sequence
TCHECK(pExpect->VerifyInComplete(),TRUE);
break;
case S_OK:
case DB_S_ERRORSOCCURRED:
case DB_S_COMMANDREEXECUTED:
//Success, should have been notified for all phases
TCHECK(pExpect->VerifyComplete(),TRUE);
break;
default:
//Unhandled HRESULT
TCHECK(TRUE,FALSE);
}
}
SAFE_DELETE(pExpect);
}
TRETURN;
}
EXPECT* CExpectationsManager::FindExpectation
(
CImpIListener* pListener,
IRowset* pIRowset,
DBCOUNTITEM cRows,
HROW* rghRows,
DBORDINAL cColumns,
DBORDINAL rgColumns[],
DBREASON eReason,
DBEVENTPHASE ePhase,
BOOL fCantDeny
)
{
ASSERT(pListener);
ASSERT(pIRowset);
//PopExpectation
EXPECT* pExpect = PopExpectation(pListener, pIRowset, cRows, rghRows, cColumns, rgColumns, eReason, ePhase);
COMMAND* pCommand = pExecutionManager()->GetCurrentCommand();
//Received a Notification it was not expecting, Output debug info
if(pExpect == NULL)
{
DisplayNotification(L"Unexpected: ", cRows, rghRows, cColumns, rgColumns, eReason, ePhase);
goto CLEANUP;
}
//Record this notification
pExpect->m_ulTimesNotified++;
//If we purposely are expecting an error (called OLEDB method with invalid results)
//Then we will allow DBEVENTPHASE_FAILEDTODO at anytime
if(ePhase==DBEVENTPHASE_FAILEDTODO && pCommand->m_hrExpected!=S_OK)
TESTC(PushFalseExpectation(pExpect));
//DBREASON_ROW_ACTIVATE
//DBREASON_ROW_INSERT
if(eReason == DBREASON_ROW_ACTIVATE || eReason == DBREASON_ROW_INSERT)
{
//With these reason you have no way of knowing ahead of time the
//row handle values, just set when notified and then remember them...
for(DBCOUNTITEM i=0; i<cRows; i++)
{
if(pExpect->m_rghRows[i] == DB_NULL_HROW)
{
//Update the expectation
pExpect->m_rghRows[i] = rghRows[i];
//Update the RowInfo as well...
//TODO: The expectation should also have RowIDs to match this up with...
ROWINFO* pRowInfo = pCRowsetObj()->GetRowInfo(pCommand->m_rgRowIds[i]);
if(pRowInfo)
{
if(pRowInfo->m_hRow == DB_NULL_HROW || pRowInfo->m_cRefCount==0)
pRowInfo->m_hRow = rghRows[i];
}
}
}
}
//We need to handle UnWanted Phases.
//Since this is an optimization, its upto the provider wiether or not they send
//unwanted phases. We need to be prepared and handle both cases...
//Note that we never go to an endless loop because ePhase is a valid phase for eReason and we expect all phases for the reason
while(pExpect->m_ePhase != ePhase && !pExpect->m_pListener->IsWantedPhase(eReason, pExpect->m_ePhase))
{
//Get the next phase in sequence
pExpect->SetNextPhase();
}
//We need to handle Optional Phases.
//Since it is provider specific wither newly advised listeners reveice some
//or all the phases of the current notification, we need to allow the case
//where its the first time and the starting phases is "later" than whats expected...
if(pExpect->m_ePhase != ePhase && pExpect->m_fOptional)
{
//Get the next phase in sequence
if(pExpect->m_ulTimesNotified == 1)
pExpect->SetNextPhase();
}
//Verify the Notifcation
QTESTC(pExpect->VerifyEqual(pListener, pIRowset, cRows, rghRows, cColumns, rgColumns, eReason, ePhase));
CLEANUP:
return pExpect;
}
EXPECT* CExpectationsManager::PopExpectation
(
CImpIListener* pListener,
IRowset* pIRowset,
DBCOUNTITEM cRows,
HROW* rghRows,
DBORDINAL cColumns,
DBORDINAL rgColumns[],
DBREASON eReason,
DBEVENTPHASE ePhase
)
{
ASSERT(pListener);
ASSERT(pIRowset);
DBCOUNTITEM i = 0;
COMMAND* pCommand = pExecutionManager()->GetCurrentCommand();
POSITION pos = pCommand->m_listExpect.GetHeadPosition();
while(pos)
{
EXPECT* pExpect = pCommand->m_listExpect.GetNext(pos);
if(pExpect->m_pListener != pListener)
continue;
if(pExpect->m_pIRowset != pIRowset)
continue;
if(pExpect->m_eReason != eReason)
continue;
//This is a hack for DB_S_ENDOFROWSET, since we don't neccessaryly
//know ahead of time the number of rows in the rowset without traversing
//the rowset, and traversing the rowset would fire ROW_ACTIVATE and the
//next call to GetNextRows would now not fire ROW_ACTIVE...
if(pCommand->m_hrExpected == DB_S_ENDOFROWSET)
pExpect->m_cRows = cRows;
//Provider should send DBREASON_ROW_ACTIVATE for newly fetched rows only, but may send far all rows
if (eReason == DBREASON_ROW_ACTIVATE && pExpect->m_cRows > cRows)
{
//get only newly fetched rows
DBCOUNTITEM cRowsExpect=0;
for(i=0; i<pExpect->m_cRows; i++)
if (pExpect->m_rghRows[i] == DB_NULL_HROW)
cRowsExpect++;
for(i=0; i<cRowsExpect; i++)
pExpect->m_rghRows[i] = DB_NULL_HROW;
pExpect->m_cRows = cRowsExpect;
}
if(pExpect->m_cRows != cRows)
continue;
BOOL bEqual = TRUE;
for(i=0; i<cRows; i++)
if(pExpect->m_rghRows[i] != DB_NULL_HROW)
if(!IsSameRow(pIRowset, pExpect->m_rghRows[i], rghRows[i]))
bEqual = FALSE;
if(!bEqual)
continue;
if(pExpect->m_cColumns != cColumns)
continue;
bEqual = TRUE;
for(i=0; i<cColumns; i++)
if(pExpect->m_rgColumns[i] != rgColumns[i])
bEqual = FALSE;
if(!bEqual)
continue;
//Finally found the right expectation!
return pExpect;
}
return NULL;
}
///////////////////////////////////////////////////////////////////////////////
// IRNOTIFY.Y
//
///////////////////////////////////////////////////////////////////////////////
/*
%{
#include "MODStandard.hpp" //ModuleCore headers
#include "IRNotify.h" //IRowsetNotify header
#define lint //Removes warnings for unused labels
// Input string to parse
LPCWSTR yylpwzInput;
CExecutionManager *yypExecutionManager;
COMMANDLIST *yypCommandList;
COMMANDLISTMAP *yypCommandListMap;
CONTROLMAP *yypControlMap;
LISTENERMAP *yypListenerMap;
static LPVOID pvObjectId = NULL;
static CControl* pControl = NULL;
static DBREASON eReason = 0;
static DBEVENTPHASE ePhase = 0;
static ULONG ulCommandLevel = 1;
static ULONG cRows = 0;
static ULONG rgRowIds[MAX_ROW_COUNT];
static ULONG cColumns = 0;
static ULONG rgColumns[MAX_ROW_COUNT];
static HRESULT hrExpected = S_OK;
static ULONG cThreads = 0;
%}
%union {
ULONG Number;
ULONG IdentifierId;
}
%token <Number> yyNUMBER
%token <IdentifierId> yyIDENTIFIERID
//Notification REASONS
%token yyROWSET_FETCHPOSITIONCHANGE
%token yyROWSET_RELEASE
%token yyROWSET_CHANGED
%token yyCOLUMN_SET
%token yyCOLUMN_RECALCULATED
%token yyROW_ACTIVATE
%token yyROW_RELEASE
%token yyROW_DELETE
%token yyROW_FIRSTCHANGE
%token yyROW_INSERT
%token yyROW_RESYNCH
%token yyROW_UNDOCHANGE
%token yyROW_UNDOINSERT
%token yyROW_UNDODELETE
%token yyROW_UPDATE
//Notification PHASES
%token yyOKTODO
%token yyABOUTTODO
%token yySYNCHAFTER
%token yyDIDEVENT
%token yyFAILEDTODO
//OLEDB Methods (which generate Notifications)
%token yyGETDATA
%token yyGETORIGINALDATA
%token yyGETVISIBLEDATA
%token yyRELEASEROWSET
%token yyADDREFROWSET
%token yyGETNEXTROWS
%token yyRELEASEROWS
%token yyADDREFROWS
%token yyRESTARTPOSITION
%token yyDELETEROWS
%token yyINSERTROW
%token yySETDATA
%token yySEEK
%token yyGETROWSAT
%token yyGETROWSBYBOOKMARK
%token yyRESYNCHROWS
%token yyGETROWSATRATIO
%token yyUNDO
%token yyUPDATE
%token yyABORT
%token yyCOMMIT
%token yyADDCOLUMN
%token yyDROPCOLUMN
%token yyGETCOLUMNINFO
//Identifiers
%token yyCONTROL
%token yyLISTENER
%token yyTHREAD
%token yyDBBMK_FIRST
%token yyDBBMK_LAST
%token yyRETURN_ACCEPT
%token yyRETURN_VETO
%token yyRETURN_EFAIL
%token yyRETURN_EOUTOFMEMORY
%token yyRETURN_EINVALIDARG
%token yyRETURN_UNWANTEDREASON
%token yyRETURN_UNWANTEDPHASE
%token yyRETURN_ADVISE
%token yyRETURN_UNADVISE
//hrExpected
%token yyDB_S_ENDOFROWSET
%token yyDB_E_BADSTARTPOSITION
%token yyDB_E_NOTREENTRANT
%token yyDB_S_ERRORSOCCURRED
%token yyDB_E_ERRORSOCCURRED
%token yyE_INVALIDARG
%token yyDB_E_ROWSNOTRELEASED
%token yyDB_E_BADACCESSORHANDLE
%token yyDB_E_BADROWHANDLE
%%
Notification_Test : {ulCommandLevel = 1; }
'{' ListenerList ControlList '}'
ListenerList : Listener | ListenerList Listener
//Listener Syntax
Listener : yyLISTENER yyIDENTIFIERID ';'
{yypListenerMap->SetAt($2,new CImpIListener(yypExecutionManager));}
ControlList : Control | ControlList Control
Control : '{' yyCONTROL yyIDENTIFIERID ';'
{
pControl = new CControl(yypExecutionManager);
pvObjectId = pControl;
ulCommandLevel = 1;
yypControlMap->SetAt($3,pControl);
yypCommandList = new COMMANDLIST;
yypCommandListMap->SetAt(pControl->GetThreadId(), yypCommandList);
}
'{' ControlStmtList '}'
'}'
ControlStmtList : ControlStmt | ControlStmtList ControlStmt
ControlStmt : OLEDBMethod '{' ListenerStmtList '}'
{
ulCommandLevel++;
pvObjectId = pControl;
}
| OLEDBMethod '{' '}'
{
ulCommandLevel++;
pvObjectId = pControl;
}
ListenerStmtList : ListenerStmt | ListenerStmtList ListenerStmt
ListenerStmt : ListenerIdentifier '.' Reason '.' Phase '.' ListenerMethod
ListenerIdentifier : yyIDENTIFIERID
{CImpIListener *pImpIListener;
BOOL Ok = yypListenerMap->Lookup($1,pImpIListener);
if (!Ok) yyerror("Invalid Listener");
pvObjectId = pImpIListener;}
ListenerMethod : ListenerReturn
{
}
| OLEDBMethod '{' ListenerStmtList '}'
{
}
| OLEDBMethod '{' '}'
{
}
| yyTHREAD { cThreads = 1; } '{' ListenerMethod '}'
{
cThreads = 0;
}
ListenerReturn : yyRETURN_ACCEPT
{yypCommandList->AddTail(
new COMMAND(RETURN_ACCEPT, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase));} //ePhase
| yyRETURN_VETO
{yypCommandList->AddTail(
new COMMAND(RETURN_VETO, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase));} //ePhase
| yyRETURN_EFAIL
{yypCommandList->AddTail(
new COMMAND(RETURN_EFAIL, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase));} //ePhase
| yyRETURN_EOUTOFMEMORY
{yypCommandList->AddTail(
new COMMAND(RETURN_EOUTOFMEMORY, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase));} //ePhase
| yyRETURN_EINVALIDARG
{yypCommandList->AddTail(
new COMMAND(RETURN_EINVALIDARG, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase));} //ePhase
| yyRETURN_UNWANTEDREASON
{yypCommandList->AddTail(
new COMMAND(RETURN_UNWANTEDREASON, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase));} //ePhase
|yyRETURN_UNWANTEDPHASE
{yypCommandList->AddTail(
new COMMAND(RETURN_UNWANTEDPHASE, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase));} //ePhase
|yyRETURN_ADVISE
{yypCommandList->AddTail(
new COMMAND(RETURN_ADVISE, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase));} //ePhase
|yyRETURN_UNADVISE
{yypCommandList->AddTail(
new COMMAND(RETURN_UNADVISE, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase));} //ePhase
OLEDBMethod : ReleaseRowsetMethod
| GetNextRows
| ReleaseRowsMethod
| RestartPositionMethod
| DeleteRowsMethod
| InsertRowMethod
| SetDataMethod
| SeekMethod
| GetRowsAtMethod
| GetRowsByBookmarkMethod
| ResynchRowsMethod
| GetRowsAtRatioMethod
| UndoMethod
| UpdateMethod
| AddRefRowsetMethod
| AddRefRowsMethod
| GetDataMethod
| GetOriginalDataMethod
| GetVisibleDataMethod
| AbortMethod
| CommitMethod
| AddColumnMethod
| DropColumnMethod
| GetColumnInfoMethod
ReleaseRowsMethod : yyRELEASEROWS '(' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(RELEASEROWS, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds));} //rgRowIds
GetNextRows : yyGETNEXTROWS '(' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(GETNEXTROWS, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds));} //rgRowIds
ReleaseRowsetMethod : yyRELEASEROWSET '(' EmptyList ')'
{yypCommandList->AddTail(
new COMMAND(RELEASEROWSET, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected));} //hrExpected
RestartPositionMethod : yyRESTARTPOSITION '(' EmptyList ')'
{yypCommandList->AddTail(
new COMMAND(RESTARTPOSITION, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected));} //hrExpected
DeleteRowsMethod : yyDELETEROWS '(' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(DELETEROWS, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds));} //rgRowIds
InsertRowMethod : yyINSERTROW '(' yyIDENTIFIERID ')'
{yypCommandList->AddTail(
new COMMAND(INSERTROW, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
S_OK, //hrExpected
1, //cRows
&($3)));} //rgRowIds
| yyINSERTROW '(' yyIDENTIFIERID ',' ExpectedHRESULT ')'
{yypCommandList->AddTail(
new COMMAND(INSERTROW, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
1, //cRows
&($3)));} //rgRowIds
SetDataMethod : yySETDATA '(' yyIDENTIFIERID ',' OrdinalList ')'
{yypCommandList->AddTail(
new COMMAND(SETDATA, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
S_OK, //hrExpected
1, //cRows
&($3), //rgRowIds
cColumns, //cColumns
rgColumns));} //rgColumns
| yySETDATA '(' yyIDENTIFIERID ',' OrdinalList ',' ExpectedHRESULT ')'
{yypCommandList->AddTail(
new COMMAND(SETDATA, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
1, //cRows
&($3), //rgRowIds
cColumns, //cColumns
rgColumns));} //rgColumns
SeekMethod : yySEEK '(' yyNUMBER ')'
{yypCommandList->AddTail(
new COMMAND(SEEK, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
$3, //cRows
rgRowIds));} //rgRowIds
| yySEEK '(' yyNUMBER ',' ExpectedHRESULT ')'
{yypCommandList->AddTail(
new COMMAND(SEEK, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
$3, //cRows
rgRowIds));} //rgRowIds
GetRowsAtMethod : yyGETROWSAT '(' yyDBBMK_FIRST ',' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(GETROWSAT, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds, //rgRowIds
0, //cColumns
NULL, //rgColumns
DBBMK_FIRST));} //dwOption
| yyGETROWSAT '(' yyDBBMK_FIRST ')'
{yypCommandList->AddTail(
new COMMAND(GETROWSAT, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
S_OK, //hrExpected
0, //cRows
NULL, //rgRowIds
0, //cColumns
NULL, //rgColumns
DBBMK_FIRST));} //dwOption
| yyGETROWSAT '(' yyDBBMK_LAST ',' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(GETROWSAT, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds, //rgRowIds
0, //cColumns
NULL, //rgColumns
DBBMK_LAST));} //dwOption
| yyGETROWSAT '(' yyDBBMK_LAST ')'
{yypCommandList->AddTail(
new COMMAND(GETROWSAT, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
0, //cRows
NULL, //rgRowIds
0, //cColumns
NULL, //rgColumns
DBBMK_LAST));} //dwOption
GetRowsByBookmarkMethod : yyGETROWSBYBOOKMARK '(' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(GETROWSBYBOOKMARK, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds));} //rgRowIds
ResynchRowsMethod : yyRESYNCHROWS '(' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(RESYNCHROWS, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds));} //rgRowIds
GetRowsAtRatioMethod : yyGETROWSATRATIO '(' yyNUMBER ')'
{yypCommandList->AddTail(
new COMMAND(GETROWSATRATIO, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
0, //cRows
NULL, //rgRowIds
0, //cColumns
NULL, //rgColumns
$3));} //dwOption
| yyGETROWSATRATIO '(' yyNUMBER ',' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(GETROWSATRATIO, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds, //rgRowIds
0, //cColumns
NULL, //rgColumns
$3));} //dwOption
UndoMethod : yyUNDO '(' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(UNDO, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds));} //rgRowIds
UpdateMethod : yyUPDATE '(' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(UPDATE, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds));} //rgRowIds
AddRefRowsMethod : yyADDREFROWS '(' IdentifierList ')'
{yypCommandList->AddTail(
new COMMAND(ADDREFROWS, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
cRows, //cRows
rgRowIds));} //rgRowIds
AddRefRowsetMethod : yyADDREFROWSET '(' EmptyList ')'
{yypCommandList->AddTail(
new COMMAND(ADDREFROWSET, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected));} //hrExpected
GetDataMethod : yyGETDATA '(' yyIDENTIFIERID ')'
{yypCommandList->AddTail(
new COMMAND(GETDATA, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
S_OK, //hrExpected
1, //cRows
&($3) ));} //rgRowIds
GetOriginalDataMethod : yyGETORIGINALDATA '(' yyIDENTIFIERID ')'
{yypCommandList->AddTail(
new COMMAND(GETORIGINALDATA, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
S_OK, //hrExpected
1, //cRows
&($3) ));} //rgRowIds
| yyGETORIGINALDATA '(' yyIDENTIFIERID ',' ExpectedHRESULT ')'
{yypCommandList->AddTail(
new COMMAND(GETORIGINALDATA, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
1, //cRows
&($3)));} //rgRowIds
GetVisibleDataMethod : yyGETVISIBLEDATA '(' yyIDENTIFIERID ')'
{yypCommandList->AddTail(
new COMMAND(GETVISIBLEDATA, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
S_OK, //hrExpected
1, //cRows
&($3) ));} //rgRowIds
| yyGETVISIBLEDATA '(' yyIDENTIFIERID ',' ExpectedHRESULT ')'
{yypCommandList->AddTail(
new COMMAND(GETVISIBLEDATA, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected, //hrExpected
1, //cRows
&($3)));} //rgRowIds
AbortMethod : yyABORT '(' EmptyList ')'
{yypCommandList->AddTail(
new COMMAND(ABORT, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected));} //hrExpected
CommitMethod : yyCOMMIT '(' EmptyList ')'
{yypCommandList->AddTail(
new COMMAND(COMMIT, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected));} //hrExpected
AddColumnMethod : yyADDCOLUMN '(' EmptyList ')'
{yypCommandList->AddTail(
new COMMAND(ADDCOLUMN, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected));} //hrExpected
DropColumnMethod : yyDROPCOLUMN '(' EmptyList ')'
{yypCommandList->AddTail(
new COMMAND(DROPCOLUMN, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected));} //hrExpected
GetColumnInfoMethod : yyGETCOLUMNINFO '(' EmptyList ')'
{yypCommandList->AddTail(
new COMMAND(GETCOLUMNINFO, //eCOMMANDTYPE
pvObjectId, //pvObjectId
ulCommandLevel, //ulCommandLevel
cThreads, //cThreads
eReason, //eReason
ePhase, //ePhase
hrExpected));} //hrExpected
OrdinalList : yyNUMBER
{cColumns = 0; rgColumns[cColumns++] = $1;}
| OrdinalList ',' yyNUMBER
{rgColumns[cColumns++] = $3;}
IdentifierList :
yyIDENTIFIERID
{
cRows = 0;
rgRowIds[cRows++] = $1;
hrExpected = S_OK;
}
| EmptyList
{
}
| IdentifierList ',' yyIDENTIFIERID
{
rgRowIds[cRows++] = $3;
}
| IdentifierList ',' ExpectedHRESULT
{
}
EmptyList : ExpectedHRESULT
{
cRows = 0;
cColumns = 0;
}
| // Empty
{
cRows = 0;
cColumns = 0;
hrExpected = S_OK;
}
ExpectedHRESULT :
yyDB_S_ENDOFROWSET
{
cRows = SIZEOF_TABLE;
hrExpected = DB_S_ENDOFROWSET;
}
| yyDB_E_BADSTARTPOSITION
{
hrExpected = DB_E_BADSTARTPOSITION;
}
| yyDB_E_NOTREENTRANT
{
hrExpected = DB_E_NOTREENTRANT;
}
| yyDB_S_ERRORSOCCURRED
{
hrExpected = DB_S_ERRORSOCCURRED;
}
| yyDB_E_ERRORSOCCURRED
{
hrExpected = DB_E_ERRORSOCCURRED;
}
| yyE_INVALIDARG
{
hrExpected = E_INVALIDARG;
}
| yyDB_E_ROWSNOTRELEASED
{
hrExpected = DB_E_ROWSNOTRELEASED;
}
| yyDB_E_BADACCESSORHANDLE
{
hrExpected = DB_E_BADACCESSORHANDLE;
}
| yyDB_E_BADROWHANDLE
{
hrExpected = DB_E_BADROWHANDLE;
}
Reason :
yyROWSET_FETCHPOSITIONCHANGE
{eReason = DBREASON_ROWSET_FETCHPOSITIONCHANGE;}
| yyROWSET_RELEASE
{eReason = DBREASON_ROWSET_RELEASE;}
| yyROWSET_CHANGED
{eReason = DBREASON_ROWSET_CHANGED;}
| yyCOLUMN_SET
{eReason = DBREASON_COLUMN_SET;}
| yyCOLUMN_RECALCULATED
{eReason = DBREASON_COLUMN_RECALCULATED;}
| yyROW_ACTIVATE
{eReason = DBREASON_ROW_ACTIVATE;}
| yyROW_RELEASE
{eReason = DBREASON_ROW_RELEASE;}
| yyROW_DELETE
{eReason = DBREASON_ROW_DELETE;}
| yyROW_FIRSTCHANGE
{eReason = DBREASON_ROW_FIRSTCHANGE;}
| yyROW_INSERT
{eReason = DBREASON_ROW_INSERT;}
| yyROW_RESYNCH
{eReason = DBREASON_ROW_RESYNCH;}
| yyROW_UNDOCHANGE
{eReason = DBREASON_ROW_UNDOCHANGE;}
| yyROW_UNDOINSERT
{eReason = DBREASON_ROW_UNDOINSERT;}
| yyROW_UNDODELETE
{eReason = DBREASON_ROW_UNDODELETE;}
| yyROW_UPDATE
{eReason = DBREASON_ROW_UPDATE;}
Phase : yyOKTODO
{ePhase = DBEVENTPHASE_OKTODO;}
| yyABOUTTODO
{ePhase = DBEVENTPHASE_ABOUTTODO;}
| yySYNCHAFTER
{ePhase = DBEVENTPHASE_SYNCHAFTER;}
| yyDIDEVENT
{ePhase = DBEVENTPHASE_DIDEVENT;}
| yyFAILEDTODO
{ePhase = DBEVENTPHASE_FAILEDTODO;}
%%
int yyerror(char*s)
{
return 0;
}
// Keyword Table for Parser
typedef CMap <CString, LPCTSTR, ULONG, ULONG> TABLE;
class KEYWORDTABLE : public TABLE
{
public:
KEYWORDTABLE();
~KEYWORDTABLE();
};
KEYWORDTABLE::KEYWORDTABLE()
{
SetAt(_T("IRowset::GetData"),yyGETDATA);
SetAt(_T("IRowsetUpdate::GetOriginalData"),yyGETORIGINALDATA);
SetAt(_T("IRowsetResynch::GetVisibleData"),yyGETVISIBLEDATA);
SetAt(_T("IRowsetChange::SetData"),yySETDATA);
SetAt(_T("IRowsetIndex::Seek"),yySEEK);
SetAt(_T("IRowsetChange::DeleteRows"),yyDELETEROWS);
SetAt(_T("IRowsetChange::InsertRow"),yyINSERTROW);
SetAt(_T("IRowsetUpdate::Update"),yyUPDATE);
SetAt(_T("IRowsetUpdate::Undo"),yyUNDO);
SetAt(_T("IRowset::GetNextRows"),yyGETNEXTROWS);
SetAt(_T("IRowset::ReleaseRows"),yyRELEASEROWS);
SetAt(_T("IRowset::AddRefRows"),yyADDREFROWS);
SetAt(_T("IRowset::AddRef"),yyADDREFROWSET);
SetAt(_T("IRowset::Release"),yyRELEASEROWSET);
SetAt(_T("IRowsetResynch::ResynchRows"),yyRESYNCHROWS);
SetAt(_T("IRowsetLocate::GetRowsAt"),yyGETROWSAT);
SetAt(_T("IRowsetScroll::GetRowsAtRatio"),yyGETROWSATRATIO);
SetAt(_T("IRowset::RestartPosition"),yyRESTARTPOSITION);
SetAt(_T("IRowsetLocate::GetRowsByBookmark"),yyGETROWSBYBOOKMARK);
SetAt(_T("ITransaction::Abort"), yyABORT);
SetAt(_T("ITransaction::Commit"), yyCOMMIT);
SetAt(_T("ITableDefinition::AddColumn"), yyADDCOLUMN);
SetAt(_T("ITableDefinition::DropColumn"), yyDROPCOLUMN);
SetAt(_T("IColumnsInfo::GetColumnInfo"), yyGETCOLUMNINFO);
//Listener Return values
SetAt(_T("RETURN_ACCEPT"),yyRETURN_ACCEPT);
SetAt(_T("RETURN_VETO"),yyRETURN_VETO);
SetAt(_T("RETURN_EFAIL"),yyRETURN_EFAIL);
SetAt(_T("RETURN_EOUTOFMEMORY"),yyRETURN_EOUTOFMEMORY);
SetAt(_T("RETURN_EINVALIDARG"),yyRETURN_EINVALIDARG);
SetAt(_T("RETURN_UNWANTEDREASON"),yyRETURN_UNWANTEDREASON);
SetAt(_T("RETURN_UNWANTEDPHASE"),yyRETURN_UNWANTEDPHASE);
SetAt(_T("RETURN_ADVISE"),yyRETURN_ADVISE);
SetAt(_T("RETURN_UNADVISE"),yyRETURN_UNADVISE);
SetAt(_T("Control"),yyCONTROL);
SetAt(_T("Listener"),yyLISTENER);
SetAt(_T("Thread"),yyTHREAD);
SetAt(_T("COLUMN_SET"),yyCOLUMN_SET);
SetAt(_T("ROW_DELETE"),yyROW_DELETE);
SetAt(_T("ROW_INSERT"),yyROW_INSERT);
SetAt(_T("ROW_FIRSTCHANGE"),yyROW_FIRSTCHANGE);
SetAt(_T("ROW_ACTIVATE"),yyROW_ACTIVATE);
SetAt(_T("ROW_RELEASE"),yyROW_RELEASE);
SetAt(_T("ROW_UNDOCHANGE"),yyROW_UNDOCHANGE);
SetAt(_T("ROW_UNDOINSERT"),yyROW_UNDOINSERT);
SetAt(_T("ROW_UNDODELETE"),yyROW_UNDODELETE);
SetAt(_T("ROW_UPDATE"),yyROW_UPDATE);
SetAt(_T("ROW_RESYNCH"),yyROW_RESYNCH);
SetAt(_T("ROWSET_RELEASE"),yyROWSET_RELEASE);
SetAt(_T("ROWSET_FETCHPOSITIONCHANGE"), yyROWSET_FETCHPOSITIONCHANGE);
SetAt(_T("ROWSET_CHANGED"), yyROWSET_CHANGED);
SetAt(_T("COLUMN_RECALCULATED"), yyCOLUMN_RECALCULATED);
SetAt(_T("DBBMK_FIRST"),yyDBBMK_FIRST);
SetAt(_T("DBBMK_LAST"),yyDBBMK_LAST);
SetAt(_T("OKTODO"),yyOKTODO);
SetAt(_T("ABOUTTODO"),yyABOUTTODO);
SetAt(_T("SYNCHAFTER"),yySYNCHAFTER);
SetAt(_T("DIDEVENT"),yyDIDEVENT);
SetAt(_T("FAILEDTODO"),yyFAILEDTODO);
//HrExpected
SetAt(_T("DB_S_ENDOFROWSET"),yyDB_S_ENDOFROWSET);
SetAt(_T("DB_E_BADSTARTPOSITION"),yyDB_E_BADSTARTPOSITION);
SetAt(_T("DB_E_NOTREENTRANT"),yyDB_E_NOTREENTRANT);
SetAt(_T("DB_S_ERRORSOCCURRED"),yyDB_S_ERRORSOCCURRED);
SetAt(_T("DB_E_ERRORSOCCURRED"),yyDB_E_ERRORSOCCURRED);
SetAt(_T("E_INVALIDARG"),yyE_INVALIDARG);
SetAt(_T("DB_E_ROWSNOTRELEASED"),yyDB_E_ROWSNOTRELEASED);
SetAt(_T("DB_E_BADACCESSORHANDLE"),yyDB_E_BADACCESSORHANDLE);
SetAt(_T("DB_E_BADROWHANDLE"),yyDB_E_BADROWHANDLE);
}
KEYWORDTABLE::~KEYWORDTABLE()
{
RemoveAll();
}
// Keyword Table
KEYWORDTABLE KeywordTable;
// Identifier Table
TABLE IdentifierTable;
WCHAR LexBuf[100];
WCHAR *LexPtr;
ULONG TokenId;
ULONG IdentifierId = 1;
int yylexInit()
{
IdentifierId = 1;
IdentifierTable.RemoveAll();
return TRUE;
}
int yylex()
{
start:
// Get next char from input string
WCHAR wcChar = *yylpwzInput++;
// Check for end of input string
if (wcChar == L'\0')
{
IdentifierId = 1;
IdentifierTable.RemoveAll();
return 0;
}
if (iswspace(wcChar)) goto start;
// Check for special char and return it
if (!iswalpha(wcChar) && wcChar != L'_' && !iswdigit(wcChar))
{
char AnsiBuf[3];
WideCharToMultiByte(CP_ACP,0,LPCWSTR(&wcChar),1,AnsiBuf,sizeof(AnsiBuf),NULL,NULL);
return AnsiBuf[0];
}
// Check for digit and collect it
if (iswdigit(wcChar))
{
LexPtr = LexBuf;
*LexPtr++ = wcChar;
while (iswdigit(*yylpwzInput)) *LexPtr++ = *yylpwzInput++;
*LexPtr = L'\0';
yylval.Number = _wtol(LexBuf);
return yyNUMBER;
}
// Collect Identifier or Keyword
LexPtr = LexBuf;
*LexPtr++ = wcChar;
while (iswalnum(*yylpwzInput)|| *yylpwzInput == L'_' || *yylpwzInput == L':')
*LexPtr++ = *yylpwzInput++;
*LexPtr = L'\0';
TCHAR tszLexBuf[200];
#ifndef _UNICODE
WideCharToMultiByte(CP_ACP,0,LexBuf,-1,tszLexBuf,200,NULL,NULL);
#else
wcscpy(tszLexBuf, LexBuf);
#endif //_UNICODE
// If Keyword, return Token Id else return Identifier Id
if (KeywordTable.Lookup(tszLexBuf,TokenId))
return TokenId;
else
{
if (!IdentifierTable.Lookup(tszLexBuf,yylval.IdentifierId))
{
yylval.IdentifierId = IdentifierId++;
IdentifierTable.SetAt(tszLexBuf,yylval.IdentifierId);
}
return yyIDENTIFIERID;
}
}
*/
///////////////////////////////////////////////////////////////////////////////
// Y_TAB.C
//
///////////////////////////////////////////////////////////////////////////////
#ifndef lint
static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
#endif
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define yyclearin (yychar=(-1))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
#include "MODStandard.hpp" /*ModuleCore headers*/
#include "IRNotify.h" /*IRowsetNotify header*/
#define lint /*Removes warnings for unused labels*/
/* Input string to parse */
LPCWSTR yylpwzInput;
CExecutionManager *yypExecutionManager;
COMMANDLIST *yypCommandList;
COMMANDLISTMAP *yypCommandListMap;
CONTROLMAP *yypControlMap;
LISTENERMAP *yypListenerMap;
static LPVOID pvObjectId = NULL;
static CControl* pControl = NULL;
static DBREASON eReason = 0;
static DBEVENTPHASE ePhase = 0;
static ULONG ulCommandLevel = 1;
static ULONG cRows = 0;
static ULONG rgRowIds[MAX_ROW_COUNT];
static ULONG cColumns = 0;
static ULONG rgColumns[MAX_ROW_COUNT];
static HRESULT hrExpected = S_OK;
static ULONG cThreads = 0;
typedef union {
ULONG Number;
ULONG IdentifierId;
} YYSTYPE;
#define yyNUMBER 257
#define yyIDENTIFIERID 258
#define yyROWSET_FETCHPOSITIONCHANGE 259
#define yyROWSET_RELEASE 260
#define yyROWSET_CHANGED 261
#define yyCOLUMN_SET 262
#define yyCOLUMN_RECALCULATED 263
#define yyROW_ACTIVATE 264
#define yyROW_RELEASE 265
#define yyROW_DELETE 266
#define yyROW_FIRSTCHANGE 267
#define yyROW_INSERT 268
#define yyROW_RESYNCH 269
#define yyROW_UNDOCHANGE 270
#define yyROW_UNDOINSERT 271
#define yyROW_UNDODELETE 272
#define yyROW_UPDATE 273
#define yyOKTODO 274
#define yyABOUTTODO 275
#define yySYNCHAFTER 276
#define yyDIDEVENT 277
#define yyFAILEDTODO 278
#define yyGETDATA 279
#define yyGETORIGINALDATA 280
#define yyGETVISIBLEDATA 281
#define yyRELEASEROWSET 282
#define yyADDREFROWSET 283
#define yyGETNEXTROWS 284
#define yyRELEASEROWS 285
#define yyADDREFROWS 286
#define yyRESTARTPOSITION 287
#define yyDELETEROWS 288
#define yyINSERTROW 289
#define yySETDATA 290
#define yySEEK 291
#define yyGETROWSAT 292
#define yyGETROWSBYBOOKMARK 293
#define yyRESYNCHROWS 294
#define yyGETROWSATRATIO 295
#define yyUNDO 296
#define yyUPDATE 297
#define yyABORT 298
#define yyCOMMIT 299
#define yyADDCOLUMN 300
#define yyDROPCOLUMN 301
#define yyGETCOLUMNINFO 302
#define yyCONTROL 303
#define yyLISTENER 304
#define yyTHREAD 305
#define yyDBBMK_FIRST 306
#define yyDBBMK_LAST 307
#define yyRETURN_ACCEPT 308
#define yyRETURN_VETO 309
#define yyRETURN_EFAIL 310
#define yyRETURN_EOUTOFMEMORY 311
#define yyRETURN_EINVALIDARG 312
#define yyRETURN_UNWANTEDREASON 313
#define yyRETURN_UNWANTEDPHASE 314
#define yyRETURN_ADVISE 315
#define yyRETURN_UNADVISE 316
#define yyDB_S_ENDOFROWSET 317
#define yyDB_E_BADSTARTPOSITION 318
#define yyDB_E_NOTREENTRANT 319
#define yyDB_S_ERRORSOCCURRED 320
#define yyDB_E_ERRORSOCCURRED 321
#define yyE_INVALIDARG 322
#define yyDB_E_ROWSNOTRELEASED 323
#define yyDB_E_BADACCESSORHANDLE 324
#define yyDB_E_BADROWHANDLE 325
#define YYERRCODE 256
short yylhs[] = { -1,
1, 0, 2, 2, 4, 3, 3, 6, 5, 7,
7, 8, 8, 10, 10, 11, 12, 15, 15, 15,
17, 15, 16, 16, 16, 16, 16, 16, 16, 16,
16, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 20, 19, 18, 21, 22,
23, 23, 24, 24, 25, 25, 26, 26, 26, 26,
27, 28, 29, 29, 30, 31, 33, 32, 34, 35,
35, 36, 36, 37, 38, 39, 40, 41, 45, 45,
42, 42, 42, 42, 43, 43, 44, 44, 44, 44,
44, 44, 44, 44, 44, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
14, 14, 14, 14, 14,
};
short yylen[] = { 2,
0, 5, 1, 2, 3, 1, 2, 0, 9, 1,
2, 4, 3, 1, 2, 7, 1, 1, 4, 3,
0, 5, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 4, 4, 4, 4, 4,
4, 6, 6, 8, 4, 6, 6, 4, 6, 4,
4, 4, 4, 6, 4, 4, 4, 4, 4, 4,
6, 4, 6, 4, 4, 4, 4, 4, 1, 3,
1, 1, 3, 3, 1, 0, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1,
};
short yydefred[] = { 1,
0, 0, 0, 0, 0, 3, 0, 0, 0, 4,
6, 5, 0, 2, 7, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 10, 0, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 11, 0, 0, 0, 0,
97, 98, 99, 100, 101, 102, 103, 104, 105, 0,
95, 0, 91, 0, 92, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 9, 17, 13, 0, 14, 0,
79, 80, 0, 82, 0, 58, 78, 57, 0, 56,
77, 59, 60, 61, 0, 0, 65, 0, 68, 0,
70, 0, 71, 72, 73, 0, 75, 76, 84, 85,
86, 87, 88, 12, 15, 0, 0, 0, 93, 94,
0, 89, 0, 0, 0, 0, 0, 106, 107, 108,
109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
119, 120, 0, 81, 83, 62, 63, 0, 66, 67,
69, 74, 0, 90, 0, 121, 122, 123, 124, 125,
0, 64, 0, 21, 23, 24, 25, 26, 27, 28,
29, 30, 31, 0, 16, 18, 0, 0, 0, 20,
0, 0, 19, 22,
};
short yydgoto[] = { 1,
2, 5, 9, 6, 11, 18, 44, 45, 46, 138,
139, 140, 203, 221, 235, 236, 237, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 114, 115, 111, 183,
};
short yysindex[] = { 0,
0, -87, -260, -210, -123, 0, -10, -237, -94, 0,
0, 0, -180, 0, 0, 29, 0, -34, -59, 108,
111, 112, 113, 114, 139, 140, 166, 167, 169, 170,
204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
214, 215, 216, -124, 0, -30, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 3, 4, -262, -262, -238, -238, -238, -262, -238,
5, 6, 8, -294, -238, -238, 9, -238, -238, -262,
-262, -262, -262, -262, 133, 0, -122, 218, -27, -11,
0, 0, 0, 0, 0, 0, 0, 0, 0, 219,
0, 226, 0, -4, 0, 1, 2, 227, 23, 24,
225, 53, 54, 58, 59, 60, 89, 90, 91, 229,
230, 231, 232, 233, 0, 0, 0, -121, 0, 234,
0, 0, -262, 0, -262, 0, 0, 0, -211, 0,
0, 0, 0, 0, -262, 18, 0, -262, 0, -238,
0, -238, 0, 0, 0, -238, 0, 0, 0, 0,
0, 0, 0, 0, 0, -144, 235, 236, 0, 0,
237, 0, 99, 238, 100, 101, 105, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 239, 0, 0, 0, 0, -248, 0, 0,
0, 0, -253, 0, 240, 0, 0, 0, 0, 0,
241, 0, -97, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 159, 0, 0, 160, -120, -97, 0,
-119, 161, 0, 0,
};
short yyrindex[] = { 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 243, 243, 106, 106, 106, 243, 106,
0, 0, 0, 0, 106, 106, 0, 106, 106, 243,
243, 243, 243, 243, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 106,
0, 106, 0, 0, 0, 106, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,
};
short yygindex[] = { 0,
0, 0, 0, 283, 280, 0, 0, 246, -212, 55,
-136, 0, 0, 0, 52, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -70, -40, -117, 0,
};
#define YYTABLESIZE 293
short yytable[] = { 8,
95, 175, 137, 174, 240, 243, 116, 117, 214, 119,
234, 123, 124, 142, 125, 126, 143, 128, 129, 113,
216, 217, 218, 219, 220, 177, 234, 178, 8, 144,
14, 180, 145, 110, 112, 3, 148, 181, 118, 149,
184, 150, 151, 4, 149, 149, 179, 7, 12, 130,
131, 132, 133, 134, 101, 102, 103, 104, 105, 106,
107, 108, 109, 153, 154, 13, 149, 155, 101, 102,
103, 104, 105, 106, 107, 108, 109, 16, 101, 102,
103, 104, 105, 106, 107, 108, 109, 17, 19, 185,
215, 186, 97, 157, 159, 187, 158, 160, 161, 163,
164, 162, 149, 149, 175, 101, 102, 103, 104, 105,
106, 107, 108, 109, 188, 189, 190, 191, 192, 193,
194, 195, 196, 197, 198, 199, 200, 201, 202, 165,
167, 168, 166, 149, 149, 136, 136, 136, 136, 207,
210, 211, 208, 149, 149, 212, 96, 71, 149, 96,
72, 73, 74, 75, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 76, 77,
4, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 78, 79, 224, 80, 81,
225, 226, 227, 228, 229, 230, 231, 232, 233, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 82, 83, 84, 85, 86, 87, 88,
89, 90, 91, 92, 93, 94, 98, 135, 141, 146,
99, 100, 120, 121, 122, 127, 147, 152, 156, 169,
170, 171, 172, 173, 182, 204, 205, 206, 209, 176,
222, 238, 239, 96, 213, 244, 223, 10, 15, 96,
242, 0, 241,
};
short yycheck[] = { 123,
125, 138, 125, 125, 125, 125, 77, 78, 257, 80,
223, 306, 307, 41, 85, 86, 44, 88, 89, 258,
274, 275, 276, 277, 278, 143, 239, 145, 123, 41,
125, 149, 44, 74, 75, 123, 41, 155, 79, 44,
158, 41, 41, 304, 44, 44, 258, 258, 59, 90,
91, 92, 93, 94, 317, 318, 319, 320, 321, 322,
323, 324, 325, 41, 41, 303, 44, 44, 317, 318,
319, 320, 321, 322, 323, 324, 325, 258, 317, 318,
319, 320, 321, 322, 323, 324, 325, 59, 123, 160,
208, 162, 123, 41, 41, 166, 44, 44, 41, 41,
41, 44, 44, 44, 241, 317, 318, 319, 320, 321,
322, 323, 324, 325, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 41,
41, 41, 44, 44, 44, 258, 258, 258, 258, 41,
41, 41, 44, 44, 44, 41, 41, 40, 44, 44,
40, 40, 40, 40, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 40, 40,
304, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
298, 299, 300, 301, 302, 40, 40, 305, 40, 40,
308, 309, 310, 311, 312, 313, 314, 315, 316, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
300, 301, 302, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 258, 125, 41, 41,
258, 258, 258, 258, 257, 257, 41, 41, 44, 41,
41, 41, 41, 41, 257, 41, 41, 41, 41, 46,
41, 123, 123, 41, 46, 125, 46, 5, 9, 44,
239, -1, 238,
};
#define YYFINAL 1
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 325
#if YYDEBUG
char *yyname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"'('","')'",0,0,"','",0,"'.'",0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
"yyNUMBER","yyIDENTIFIERID","yyROWSET_FETCHPOSITIONCHANGE","yyROWSET_RELEASE",
"yyROWSET_CHANGED","yyCOLUMN_SET","yyCOLUMN_RECALCULATED","yyROW_ACTIVATE",
"yyROW_RELEASE","yyROW_DELETE","yyROW_FIRSTCHANGE","yyROW_INSERT",
"yyROW_RESYNCH","yyROW_UNDOCHANGE","yyROW_UNDOINSERT","yyROW_UNDODELETE",
"yyROW_UPDATE","yyOKTODO","yyABOUTTODO","yySYNCHAFTER","yyDIDEVENT",
"yyFAILEDTODO","yyGETDATA","yyGETORIGINALDATA","yyGETVISIBLEDATA",
"yyRELEASEROWSET","yyADDREFROWSET","yyGETNEXTROWS","yyRELEASEROWS",
"yyADDREFROWS","yyRESTARTPOSITION","yyDELETEROWS","yyINSERTROW","yySETDATA",
"yySEEK","yyGETROWSAT","yyGETROWSBYBOOKMARK","yyRESYNCHROWS","yyGETROWSATRATIO",
"yyUNDO","yyUPDATE","yyABORT","yyCOMMIT","yyADDCOLUMN","yyDROPCOLUMN",
"yyGETCOLUMNINFO","yyCONTROL","yyLISTENER","yyTHREAD","yyDBBMK_FIRST",
"yyDBBMK_LAST","yyRETURN_ACCEPT","yyRETURN_VETO","yyRETURN_EFAIL",
"yyRETURN_EOUTOFMEMORY","yyRETURN_EINVALIDARG","yyRETURN_UNWANTEDREASON",
"yyRETURN_UNWANTEDPHASE","yyRETURN_ADVISE","yyRETURN_UNADVISE",
"yyDB_S_ENDOFROWSET","yyDB_E_BADSTARTPOSITION","yyDB_E_NOTREENTRANT",
"yyDB_S_ERRORSOCCURRED","yyDB_E_ERRORSOCCURRED","yyE_INVALIDARG",
"yyDB_E_ROWSNOTRELEASED","yyDB_E_BADACCESSORHANDLE","yyDB_E_BADROWHANDLE",
};
char *yyrule[] = {
"$accept : Notification_Test",
"$$1 :",
"Notification_Test : $$1 '{' ListenerList ControlList '}'",
"ListenerList : Listener",
"ListenerList : ListenerList Listener",
"Listener : yyLISTENER yyIDENTIFIERID ';'",
"ControlList : Control",
"ControlList : ControlList Control",
"$$2 :",
"Control : '{' yyCONTROL yyIDENTIFIERID ';' $$2 '{' ControlStmtList '}' '}'",
"ControlStmtList : ControlStmt",
"ControlStmtList : ControlStmtList ControlStmt",
"ControlStmt : OLEDBMethod '{' ListenerStmtList '}'",
"ControlStmt : OLEDBMethod '{' '}'",
"ListenerStmtList : ListenerStmt",
"ListenerStmtList : ListenerStmtList ListenerStmt",
"ListenerStmt : ListenerIdentifier '.' Reason '.' Phase '.' ListenerMethod",
"ListenerIdentifier : yyIDENTIFIERID",
"ListenerMethod : ListenerReturn",
"ListenerMethod : OLEDBMethod '{' ListenerStmtList '}'",
"ListenerMethod : OLEDBMethod '{' '}'",
"$$3 :",
"ListenerMethod : yyTHREAD $$3 '{' ListenerMethod '}'",
"ListenerReturn : yyRETURN_ACCEPT",
"ListenerReturn : yyRETURN_VETO",
"ListenerReturn : yyRETURN_EFAIL",
"ListenerReturn : yyRETURN_EOUTOFMEMORY",
"ListenerReturn : yyRETURN_EINVALIDARG",
"ListenerReturn : yyRETURN_UNWANTEDREASON",
"ListenerReturn : yyRETURN_UNWANTEDPHASE",
"ListenerReturn : yyRETURN_ADVISE",
"ListenerReturn : yyRETURN_UNADVISE",
"OLEDBMethod : ReleaseRowsetMethod",
"OLEDBMethod : GetNextRows",
"OLEDBMethod : ReleaseRowsMethod",
"OLEDBMethod : RestartPositionMethod",
"OLEDBMethod : DeleteRowsMethod",
"OLEDBMethod : InsertRowMethod",
"OLEDBMethod : SetDataMethod",
"OLEDBMethod : SeekMethod",
"OLEDBMethod : GetRowsAtMethod",
"OLEDBMethod : GetRowsByBookmarkMethod",
"OLEDBMethod : ResynchRowsMethod",
"OLEDBMethod : GetRowsAtRatioMethod",
"OLEDBMethod : UndoMethod",
"OLEDBMethod : UpdateMethod",
"OLEDBMethod : AddRefRowsetMethod",
"OLEDBMethod : AddRefRowsMethod",
"OLEDBMethod : GetDataMethod",
"OLEDBMethod : GetOriginalDataMethod",
"OLEDBMethod : GetVisibleDataMethod",
"OLEDBMethod : AbortMethod",
"OLEDBMethod : CommitMethod",
"OLEDBMethod : AddColumnMethod",
"OLEDBMethod : DropColumnMethod",
"OLEDBMethod : GetColumnInfoMethod",
"ReleaseRowsMethod : yyRELEASEROWS '(' IdentifierList ')'",
"GetNextRows : yyGETNEXTROWS '(' IdentifierList ')'",
"ReleaseRowsetMethod : yyRELEASEROWSET '(' EmptyList ')'",
"RestartPositionMethod : yyRESTARTPOSITION '(' EmptyList ')'",
"DeleteRowsMethod : yyDELETEROWS '(' IdentifierList ')'",
"InsertRowMethod : yyINSERTROW '(' yyIDENTIFIERID ')'",
"InsertRowMethod : yyINSERTROW '(' yyIDENTIFIERID ',' ExpectedHRESULT ')'",
"SetDataMethod : yySETDATA '(' yyIDENTIFIERID ',' OrdinalList ')'",
"SetDataMethod : yySETDATA '(' yyIDENTIFIERID ',' OrdinalList ',' ExpectedHRESULT ')'",
"SeekMethod : yySEEK '(' yyNUMBER ')'",
"SeekMethod : yySEEK '(' yyNUMBER ',' ExpectedHRESULT ')'",
"GetRowsAtMethod : yyGETROWSAT '(' yyDBBMK_FIRST ',' IdentifierList ')'",
"GetRowsAtMethod : yyGETROWSAT '(' yyDBBMK_FIRST ')'",
"GetRowsAtMethod : yyGETROWSAT '(' yyDBBMK_LAST ',' IdentifierList ')'",
"GetRowsAtMethod : yyGETROWSAT '(' yyDBBMK_LAST ')'",
"GetRowsByBookmarkMethod : yyGETROWSBYBOOKMARK '(' IdentifierList ')'",
"ResynchRowsMethod : yyRESYNCHROWS '(' IdentifierList ')'",
"GetRowsAtRatioMethod : yyGETROWSATRATIO '(' yyNUMBER ')'",
"GetRowsAtRatioMethod : yyGETROWSATRATIO '(' yyNUMBER ',' IdentifierList ')'",
"UndoMethod : yyUNDO '(' IdentifierList ')'",
"UpdateMethod : yyUPDATE '(' IdentifierList ')'",
"AddRefRowsMethod : yyADDREFROWS '(' IdentifierList ')'",
"AddRefRowsetMethod : yyADDREFROWSET '(' EmptyList ')'",
"GetDataMethod : yyGETDATA '(' yyIDENTIFIERID ')'",
"GetOriginalDataMethod : yyGETORIGINALDATA '(' yyIDENTIFIERID ')'",
"GetOriginalDataMethod : yyGETORIGINALDATA '(' yyIDENTIFIERID ',' ExpectedHRESULT ')'",
"GetVisibleDataMethod : yyGETVISIBLEDATA '(' yyIDENTIFIERID ')'",
"GetVisibleDataMethod : yyGETVISIBLEDATA '(' yyIDENTIFIERID ',' ExpectedHRESULT ')'",
"AbortMethod : yyABORT '(' EmptyList ')'",
"CommitMethod : yyCOMMIT '(' EmptyList ')'",
"AddColumnMethod : yyADDCOLUMN '(' EmptyList ')'",
"DropColumnMethod : yyDROPCOLUMN '(' EmptyList ')'",
"GetColumnInfoMethod : yyGETCOLUMNINFO '(' EmptyList ')'",
"OrdinalList : yyNUMBER",
"OrdinalList : OrdinalList ',' yyNUMBER",
"IdentifierList : yyIDENTIFIERID",
"IdentifierList : EmptyList",
"IdentifierList : IdentifierList ',' yyIDENTIFIERID",
"IdentifierList : IdentifierList ',' ExpectedHRESULT",
"EmptyList : ExpectedHRESULT",
"EmptyList :",
"ExpectedHRESULT : yyDB_S_ENDOFROWSET",
"ExpectedHRESULT : yyDB_E_BADSTARTPOSITION",
"ExpectedHRESULT : yyDB_E_NOTREENTRANT",
"ExpectedHRESULT : yyDB_S_ERRORSOCCURRED",
"ExpectedHRESULT : yyDB_E_ERRORSOCCURRED",
"ExpectedHRESULT : yyE_INVALIDARG",
"ExpectedHRESULT : yyDB_E_ROWSNOTRELEASED",
"ExpectedHRESULT : yyDB_E_BADACCESSORHANDLE",
"ExpectedHRESULT : yyDB_E_BADROWHANDLE",
"Reason : yyROWSET_FETCHPOSITIONCHANGE",
"Reason : yyROWSET_RELEASE",
"Reason : yyROWSET_CHANGED",
"Reason : yyCOLUMN_SET",
"Reason : yyCOLUMN_RECALCULATED",
"Reason : yyROW_ACTIVATE",
"Reason : yyROW_RELEASE",
"Reason : yyROW_DELETE",
"Reason : yyROW_FIRSTCHANGE",
"Reason : yyROW_INSERT",
"Reason : yyROW_RESYNCH",
"Reason : yyROW_UNDOCHANGE",
"Reason : yyROW_UNDOINSERT",
"Reason : yyROW_UNDODELETE",
"Reason : yyROW_UPDATE",
"Phase : yyOKTODO",
"Phase : yyABOUTTODO",
"Phase : yySYNCHAFTER",
"Phase : yyDIDEVENT",
"Phase : yyFAILEDTODO",
};
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 500
#define YYMAXDEPTH 500
#endif
#endif
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short yyss[YYSTACKSIZE];
YYSTYPE yyvs[YYSTACKSIZE];
#define yystacksize YYSTACKSIZE
int yyerror(char*s)
{
return 0;
}
// Keyword Table for Parser
typedef CMap <CString, LPCTSTR, ULONG, ULONG> TABLE;
class KEYWORDTABLE : public TABLE
{
public:
KEYWORDTABLE();
~KEYWORDTABLE();
};
KEYWORDTABLE::KEYWORDTABLE()
{
SetAt(_T("IRowset::GetData"),yyGETDATA);
SetAt(_T("IRowsetUpdate::GetOriginalData"),yyGETORIGINALDATA);
SetAt(_T("IRowsetResynch::GetVisibleData"),yyGETVISIBLEDATA);
SetAt(_T("IRowsetChange::SetData"),yySETDATA);
SetAt(_T("IRowsetIndex::Seek"),yySEEK);
SetAt(_T("IRowsetChange::DeleteRows"),yyDELETEROWS);
SetAt(_T("IRowsetChange::InsertRow"),yyINSERTROW);
SetAt(_T("IRowsetUpdate::Update"),yyUPDATE);
SetAt(_T("IRowsetUpdate::Undo"),yyUNDO);
SetAt(_T("IRowset::GetNextRows"),yyGETNEXTROWS);
SetAt(_T("IRowset::ReleaseRows"),yyRELEASEROWS);
SetAt(_T("IRowset::AddRefRows"),yyADDREFROWS);
SetAt(_T("IRowset::AddRef"),yyADDREFROWSET);
SetAt(_T("IRowset::Release"),yyRELEASEROWSET);
SetAt(_T("IRowsetResynch::ResynchRows"),yyRESYNCHROWS);
SetAt(_T("IRowsetLocate::GetRowsAt"),yyGETROWSAT);
SetAt(_T("IRowsetScroll::GetRowsAtRatio"),yyGETROWSATRATIO);
SetAt(_T("IRowset::RestartPosition"),yyRESTARTPOSITION);
SetAt(_T("IRowsetLocate::GetRowsByBookmark"),yyGETROWSBYBOOKMARK);
SetAt(_T("ITransaction::Abort"), yyABORT);
SetAt(_T("ITransaction::Commit"), yyCOMMIT);
SetAt(_T("ITableDefinition::AddColumn"), yyADDCOLUMN);
SetAt(_T("ITableDefinition::DropColumn"), yyDROPCOLUMN);
SetAt(_T("IColumnsInfo::GetColumnInfo"), yyGETCOLUMNINFO);
//Listener Return values
SetAt(_T("RETURN_ACCEPT"),yyRETURN_ACCEPT);
SetAt(_T("RETURN_VETO"),yyRETURN_VETO);
SetAt(_T("RETURN_EFAIL"),yyRETURN_EFAIL);
SetAt(_T("RETURN_EOUTOFMEMORY"),yyRETURN_EOUTOFMEMORY);
SetAt(_T("RETURN_EINVALIDARG"),yyRETURN_EINVALIDARG);
SetAt(_T("RETURN_UNWANTEDREASON"),yyRETURN_UNWANTEDREASON);
SetAt(_T("RETURN_UNWANTEDPHASE"),yyRETURN_UNWANTEDPHASE);
SetAt(_T("RETURN_ADVISE"),yyRETURN_ADVISE);
SetAt(_T("RETURN_UNADVISE"),yyRETURN_UNADVISE);
SetAt(_T("Control"),yyCONTROL);
SetAt(_T("Listener"),yyLISTENER);
SetAt(_T("Thread"),yyTHREAD);
SetAt(_T("COLUMN_SET"),yyCOLUMN_SET);
SetAt(_T("ROW_DELETE"),yyROW_DELETE);
SetAt(_T("ROW_INSERT"),yyROW_INSERT);
SetAt(_T("ROW_FIRSTCHANGE"),yyROW_FIRSTCHANGE);
SetAt(_T("ROW_ACTIVATE"),yyROW_ACTIVATE);
SetAt(_T("ROW_RELEASE"),yyROW_RELEASE);
SetAt(_T("ROW_UNDOCHANGE"),yyROW_UNDOCHANGE);
SetAt(_T("ROW_UNDOINSERT"),yyROW_UNDOINSERT);
SetAt(_T("ROW_UNDODELETE"),yyROW_UNDODELETE);
SetAt(_T("ROW_UPDATE"),yyROW_UPDATE);
SetAt(_T("ROW_RESYNCH"),yyROW_RESYNCH);
SetAt(_T("ROWSET_RELEASE"),yyROWSET_RELEASE);
SetAt(_T("ROWSET_FETCHPOSITIONCHANGE"), yyROWSET_FETCHPOSITIONCHANGE);
SetAt(_T("ROWSET_CHANGED"), yyROWSET_CHANGED);
SetAt(_T("COLUMN_RECALCULATED"), yyCOLUMN_RECALCULATED);
SetAt(_T("DBBMK_FIRST"),yyDBBMK_FIRST);
SetAt(_T("DBBMK_LAST"),yyDBBMK_LAST);
SetAt(_T("OKTODO"),yyOKTODO);
SetAt(_T("ABOUTTODO"),yyABOUTTODO);
SetAt(_T("SYNCHAFTER"),yySYNCHAFTER);
SetAt(_T("DIDEVENT"),yyDIDEVENT);
SetAt(_T("FAILEDTODO"),yyFAILEDTODO);
//HrExpected
SetAt(_T("DB_S_ENDOFROWSET"),yyDB_S_ENDOFROWSET);
SetAt(_T("DB_E_BADSTARTPOSITION"),yyDB_E_BADSTARTPOSITION);
SetAt(_T("DB_E_NOTREENTRANT"),yyDB_E_NOTREENTRANT);
SetAt(_T("DB_S_ERRORSOCCURRED"),yyDB_S_ERRORSOCCURRED);
SetAt(_T("DB_E_ERRORSOCCURRED"),yyDB_E_ERRORSOCCURRED);
SetAt(_T("E_INVALIDARG"),yyE_INVALIDARG);
SetAt(_T("DB_E_ROWSNOTRELEASED"),yyDB_E_ROWSNOTRELEASED);
SetAt(_T("DB_E_BADACCESSORHANDLE"),yyDB_E_BADACCESSORHANDLE);
SetAt(_T("DB_E_BADROWHANDLE"),yyDB_E_BADROWHANDLE);
}
KEYWORDTABLE::~KEYWORDTABLE()
{
RemoveAll();
}
// Keyword Table
KEYWORDTABLE KeywordTable;
// Identifier Table
TABLE IdentifierTable;
WCHAR LexBuf[100];
WCHAR *LexPtr;
ULONG TokenId;
ULONG IdentifierId = 1;
int yylexInit()
{
IdentifierId = 1;
IdentifierTable.RemoveAll();
return TRUE;
}
int yylex()
{
start:
// Get next char from input string
WCHAR wcChar = *yylpwzInput++;
// Check for end of input string
if (wcChar == L'\0')
{
IdentifierId = 1;
IdentifierTable.RemoveAll();
return 0;
}
if (iswspace(wcChar)) goto start;
// Check for special char and return it
if (!iswalpha(wcChar) && wcChar != L'_' && !iswdigit(wcChar))
{
char AnsiBuf[3];
WideCharToMultiByte(CP_ACP,0,LPCWSTR(&wcChar),1,AnsiBuf,sizeof(AnsiBuf),NULL,NULL);
return AnsiBuf[0];
}
// Check for digit and collect it
if (iswdigit(wcChar))
{
LexPtr = LexBuf;
*LexPtr++ = wcChar;
while (iswdigit(*yylpwzInput)) *LexPtr++ = *yylpwzInput++;
*LexPtr = L'\0';
yylval.Number = _wtol(LexBuf);
return yyNUMBER;
}
// Collect Identifier or Keyword
LexPtr = LexBuf;
*LexPtr++ = wcChar;
while (iswalnum(*yylpwzInput)|| *yylpwzInput == L'_' || *yylpwzInput == L':')
*LexPtr++ = *yylpwzInput++;
*LexPtr = L'\0';
TCHAR tszLexBuf[200];
#ifndef _UNICODE
WideCharToMultiByte(CP_ACP,0,LexBuf,-1,tszLexBuf,200,NULL,NULL);
#else
wcscpy(tszLexBuf, LexBuf);
#endif //_UNICODE
// If Keyword, return Token Id else return Identifier Id
if (KeywordTable.Lookup(tszLexBuf,TokenId))
return TokenId;
else
{
if (!IdentifierTable.Lookup(tszLexBuf,yylval.IdentifierId))
{
yylval.IdentifierId = IdentifierId++;
IdentifierTable.SetAt(tszLexBuf,yylval.IdentifierId);
}
return yyIDENTIFIERID;
}
}
#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse()
{
register int yym, yyn, yystate;
#if YYDEBUG
register char *yys;
extern char *getenv();
if (yys = getenv("YYDEBUG"))
{
yyn = *yys;
if (yyn >= '0' && yyn <= '9')
yydebug = yyn - '0';
}
#endif
yynerrs = 0;
yyerrflag = 0;
yychar = (-1);
yyssp = yyss;
yyvsp = yyvs;
*yyssp = yystate = 0;
yyloop:
if (yyn = yydefred[yystate]) goto yyreduce;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
}
if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, shifting to state %d\n",
YYPREFIX, yystate, yytable[yyn]);
#endif
if (yyssp >= yyss + yystacksize - 1)
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
yychar = (-1);
if (yyerrflag > 0) --yyerrflag;
goto yyloop;
}
if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
yyn = yytable[yyn];
goto yyreduce;
}
if (yyerrflag) goto yyinrecovery;
#ifdef lint
goto yynewerror;
#endif
yynewerror:
yyerror("syntax error");
#ifdef lint
goto yyerrlab;
#endif
yyerrlab:
++yynerrs;
yyinrecovery:
if (yyerrflag < 3)
{
yyerrflag = 3;
for (;;)
{
if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, error recovery shifting\
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
if (yyssp >= yyss + yystacksize - 1)
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
goto yyloop;
}
else
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: error recovery discarding state %d\n",
YYPREFIX, *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
--yyssp;
--yyvsp;
}
}
}
else
{
if (yychar == 0) goto yyabort;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
yychar = (-1);
goto yyloop;
}
yyreduce:
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
yym = yylen[yyn];
yyval = yyvsp[1-yym];
switch (yyn)
{
case 1:
{ulCommandLevel = 1; }
break;
case 5:
{yypListenerMap->SetAt(yyvsp[-1].IdentifierId,new CImpIListener(yypExecutionManager));}
break;
case 8:
{
pControl = new CControl(yypExecutionManager);
pvObjectId = pControl;
ulCommandLevel = 1;
yypControlMap->SetAt(yyvsp[-1].IdentifierId,pControl);
yypCommandList = new COMMANDLIST;
yypCommandListMap->SetAt(pControl->GetThreadId(), yypCommandList);
}
break;
case 12:
{
ulCommandLevel++;
pvObjectId = pControl;
}
break;
case 13:
{
ulCommandLevel++;
pvObjectId = pControl;
}
break;
case 17:
{CImpIListener *pImpIListener;
BOOL Ok = yypListenerMap->Lookup(yyvsp[0].IdentifierId,pImpIListener);
if (!Ok) yyerror("Invalid Listener");
pvObjectId = pImpIListener;}
break;
case 18:
{
}
break;
case 19:
{
}
break;
case 20:
{
}
break;
case 21:
{ cThreads = 1; }
break;
case 22:
{
cThreads = 0;
}
break;
case 23:
{yypCommandList->AddTail(
new COMMAND(RETURN_ACCEPT, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase));}
break;
case 24:
{yypCommandList->AddTail(
new COMMAND(RETURN_VETO, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase));}
break;
case 25:
{yypCommandList->AddTail(
new COMMAND(RETURN_EFAIL, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase));}
break;
case 26:
{yypCommandList->AddTail(
new COMMAND(RETURN_EOUTOFMEMORY, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase));}
break;
case 27:
{yypCommandList->AddTail(
new COMMAND(RETURN_EINVALIDARG, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase));}
break;
case 28:
{yypCommandList->AddTail(
new COMMAND(RETURN_UNWANTEDREASON, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase));}
break;
case 29:
{yypCommandList->AddTail(
new COMMAND(RETURN_UNWANTEDPHASE, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase));}
break;
case 30:
{yypCommandList->AddTail(
new COMMAND(RETURN_ADVISE, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase));}
break;
case 31:
{yypCommandList->AddTail(
new COMMAND(RETURN_UNADVISE, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase));}
break;
case 56:
{yypCommandList->AddTail(
new COMMAND(RELEASEROWS, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds));}
break;
case 57:
{yypCommandList->AddTail(
new COMMAND(GETNEXTROWS, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds));}
break;
case 58:
{yypCommandList->AddTail(
new COMMAND(RELEASEROWSET, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected));}
break;
case 59:
{yypCommandList->AddTail(
new COMMAND(RESTARTPOSITION, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected));}
break;
case 60:
{yypCommandList->AddTail(
new COMMAND(DELETEROWS, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds));}
break;
case 61:
{yypCommandList->AddTail(
new COMMAND(INSERTROW, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
S_OK, /*hrExpected*/
1, /*cRows*/
&(yyvsp[-1].IdentifierId)));}
break;
case 62:
{yypCommandList->AddTail(
new COMMAND(INSERTROW, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
1, /*cRows*/
&(yyvsp[-3].IdentifierId)));}
break;
case 63:
{yypCommandList->AddTail(
new COMMAND(SETDATA, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
S_OK, /*hrExpected*/
1, /*cRows*/
&(yyvsp[-3].IdentifierId), /*rgRowIds*/
cColumns, /*cColumns*/
rgColumns));}
break;
case 64:
{yypCommandList->AddTail(
new COMMAND(SETDATA, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
1, /*cRows*/
&(yyvsp[-5].IdentifierId), /*rgRowIds*/
cColumns, /*cColumns*/
rgColumns));}
break;
case 65:
{yypCommandList->AddTail(
new COMMAND(SEEK, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
yyvsp[-1].Number, /*cRows*/
rgRowIds));}
break;
case 66:
{yypCommandList->AddTail(
new COMMAND(SEEK, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
yyvsp[-3].Number, /*cRows*/
rgRowIds));}
break;
case 67:
{yypCommandList->AddTail(
new COMMAND(GETROWSAT, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds, /*rgRowIds*/
0, /*cColumns*/
NULL, /*rgColumns*/
DBBMK_FIRST));}
break;
case 68:
{yypCommandList->AddTail(
new COMMAND(GETROWSAT, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
S_OK, /*hrExpected*/
0, /*cRows*/
NULL, /*rgRowIds*/
0, /*cColumns*/
NULL, /*rgColumns*/
DBBMK_FIRST));}
break;
case 69:
{yypCommandList->AddTail(
new COMMAND(GETROWSAT, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds, /*rgRowIds*/
0, /*cColumns*/
NULL, /*rgColumns*/
DBBMK_LAST));}
break;
case 70:
{yypCommandList->AddTail(
new COMMAND(GETROWSAT, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
0, /*cRows*/
NULL, /*rgRowIds*/
0, /*cColumns*/
NULL, /*rgColumns*/
DBBMK_LAST));}
break;
case 71:
{yypCommandList->AddTail(
new COMMAND(GETROWSBYBOOKMARK, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds));}
break;
case 72:
{yypCommandList->AddTail(
new COMMAND(RESYNCHROWS, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds));}
break;
case 73:
{yypCommandList->AddTail(
new COMMAND(GETROWSATRATIO, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
0, /*cRows*/
NULL, /*rgRowIds*/
0, /*cColumns*/
NULL, /*rgColumns*/
yyvsp[-1].Number));}
break;
case 74:
{yypCommandList->AddTail(
new COMMAND(GETROWSATRATIO, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds, /*rgRowIds*/
0, /*cColumns*/
NULL, /*rgColumns*/
yyvsp[-3].Number));}
break;
case 75:
{yypCommandList->AddTail(
new COMMAND(UNDO, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds));}
break;
case 76:
{yypCommandList->AddTail(
new COMMAND(UPDATE, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds));}
break;
case 77:
{yypCommandList->AddTail(
new COMMAND(ADDREFROWS, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
cRows, /*cRows*/
rgRowIds));}
break;
case 78:
{yypCommandList->AddTail(
new COMMAND(ADDREFROWSET, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected));}
break;
case 79:
{yypCommandList->AddTail(
new COMMAND(GETDATA, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
S_OK, /*hrExpected*/
1, /*cRows*/
&(yyvsp[-1].IdentifierId) ));}
break;
case 80:
{yypCommandList->AddTail(
new COMMAND(GETORIGINALDATA, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
S_OK, /*hrExpected*/
1, /*cRows*/
&(yyvsp[-1].IdentifierId) ));}
break;
case 81:
{yypCommandList->AddTail(
new COMMAND(GETORIGINALDATA, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
1, /*cRows*/
&(yyvsp[-3].IdentifierId)));}
break;
case 82:
{yypCommandList->AddTail(
new COMMAND(GETVISIBLEDATA, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
S_OK, /*hrExpected*/
1, /*cRows*/
&(yyvsp[-1].IdentifierId) ));}
break;
case 83:
{yypCommandList->AddTail(
new COMMAND(GETVISIBLEDATA, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected, /*hrExpected*/
1, /*cRows*/
&(yyvsp[-3].IdentifierId)));}
break;
case 84:
{yypCommandList->AddTail(
new COMMAND(ABORT, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected));}
break;
case 85:
{yypCommandList->AddTail(
new COMMAND(COMMIT, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected));}
break;
case 86:
{yypCommandList->AddTail(
new COMMAND(ADDCOLUMN, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected));}
break;
case 87:
{yypCommandList->AddTail(
new COMMAND(DROPCOLUMN, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected));}
break;
case 88:
{yypCommandList->AddTail(
new COMMAND(GETCOLUMNINFO, /*eCOMMANDTYPE*/
pvObjectId, /*pvObjectId*/
ulCommandLevel, /*ulCommandLevel*/
cThreads, /*cThreads*/
eReason, /*eReason*/
ePhase, /*ePhase*/
hrExpected));}
break;
case 89:
{cColumns = 0; rgColumns[cColumns++] = yyvsp[0].Number;}
break;
case 90:
{rgColumns[cColumns++] = yyvsp[0].Number;}
break;
case 91:
{
cRows = 0;
rgRowIds[cRows++] = yyvsp[0].IdentifierId;
hrExpected = S_OK;
}
break;
case 92:
{
}
break;
case 93:
{
rgRowIds[cRows++] = yyvsp[0].IdentifierId;
}
break;
case 94:
{
}
break;
case 95:
{
cRows = 0;
cColumns = 0;
}
break;
case 96:
{
cRows = 0;
cColumns = 0;
hrExpected = S_OK;
}
break;
case 97:
{
// cRows = SIZEOF_TABLE;
hrExpected = DB_S_ENDOFROWSET;
}
break;
case 98:
{
hrExpected = DB_E_BADSTARTPOSITION;
}
break;
case 99:
{
hrExpected = DB_E_NOTREENTRANT;
}
break;
case 100:
{
hrExpected = DB_S_ERRORSOCCURRED;
}
break;
case 101:
{
hrExpected = DB_E_ERRORSOCCURRED;
}
break;
case 102:
{
hrExpected = E_INVALIDARG;
}
break;
case 103:
{
hrExpected = DB_E_ROWSNOTRELEASED;
}
break;
case 104:
{
hrExpected = DB_E_BADACCESSORHANDLE;
}
break;
case 105:
{
hrExpected = DB_E_BADROWHANDLE;
}
break;
case 106:
{eReason = DBREASON_ROWSET_FETCHPOSITIONCHANGE;}
break;
case 107:
{eReason = DBREASON_ROWSET_RELEASE;}
break;
case 108:
{eReason = DBREASON_ROWSET_CHANGED;}
break;
case 109:
{eReason = DBREASON_COLUMN_SET;}
break;
case 110:
{eReason = DBREASON_COLUMN_RECALCULATED;}
break;
case 111:
{eReason = DBREASON_ROW_ACTIVATE;}
break;
case 112:
{eReason = DBREASON_ROW_RELEASE;}
break;
case 113:
{eReason = DBREASON_ROW_DELETE;}
break;
case 114:
{eReason = DBREASON_ROW_FIRSTCHANGE;}
break;
case 115:
{eReason = DBREASON_ROW_INSERT;}
break;
case 116:
{eReason = DBREASON_ROW_RESYNCH;}
break;
case 117:
{eReason = DBREASON_ROW_UNDOCHANGE;}
break;
case 118:
{eReason = DBREASON_ROW_UNDOINSERT;}
break;
case 119:
{eReason = DBREASON_ROW_UNDODELETE;}
break;
case 120:
{eReason = DBREASON_ROW_UPDATE;}
break;
case 121:
{ePhase = DBEVENTPHASE_OKTODO;}
break;
case 122:
{ePhase = DBEVENTPHASE_ABOUTTODO;}
break;
case 123:
{ePhase = DBEVENTPHASE_SYNCHAFTER;}
break;
case 124:
{ePhase = DBEVENTPHASE_DIDEVENT;}
break;
case 125:
{ePhase = DBEVENTPHASE_FAILEDTODO;}
break;
}
yyssp -= yym;
yystate = *yyssp;
yyvsp -= yym;
yym = yylhs[yyn];
if (yystate == 0 && yym == 0)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state 0 to\
state %d\n", YYPREFIX, YYFINAL);
#endif
yystate = YYFINAL;
*++yyssp = YYFINAL;
*++yyvsp = yyval;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, YYFINAL, yychar, yys);
}
#endif
}
if (yychar == 0) goto yyaccept;
goto yyloop;
}
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
yystate = yytable[yyn];
else
yystate = yydgoto[yym];
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
if (yyssp >= yyss + yystacksize - 1)
{
goto yyoverflow;
}
*++yyssp = (short)yystate;
*++yyvsp = yyval;
goto yyloop;
yyoverflow:
yyerror("yacc stack overflow");
yyabort:
return (1);
yyaccept:
return (0);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Test Case Section
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// {{ TCW_TEST_CASE_MAP(Release)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowset::Release
//
class Release : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(Release,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROWSET_RELEASE - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROWSET_RELEASE - DB_E_CANCELED
int Variation_4();
// @cmember ROWSET_RELEASE - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROWSET_RELEASE - Veto DIDEVENT, Listener 1
int Variation_8();
// @cmember Empty
int Variation_9();
// @cmember Empty
int Variation_10();
// @cmember ROWSET_RELEASE - UNWANTED REASON
int Variation_11();
// @cmember ROWSET_RELEASE - UNWANTED PHASE - DIDEVENT
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember ROWSET_RELEASE - E_FAIL - All Phases
int Variation_15();
// @cmember ROWSET_RELEASE - E_OUTOFMEMORY - All Phases
int Variation_16();
// @cmember ROWSET_RELEASE - E_INVALIDARG - All Phases
int Variation_17();
// @cmember Empty
int Variation_18();
// @cmember Empty
int Variation_19();
// @cmember OTHER SCENARIOS - AddRef - Release - no notifications
int Variation_20();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_21();
// @cmember OTHER SCENARIOS - Remove Listeners
int Variation_22();
// @cmember OTHER SCENARIOS - Add Listeners
int Variation_23();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(Release)
#define THE_CLASS Release
BEG_TEST_CASE(Release, CExecutionManager, L"Tests Notifications for IRowset::Release")
TEST_VARIATION(1, L"ROWSET_RELEASE - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROWSET_RELEASE - DB_E_CANCELED")
TEST_VARIATION(5, L"ROWSET_RELEASE - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROWSET_RELEASE - Veto DIDEVENT, Listener 1")
TEST_VARIATION(9, L"Empty")
TEST_VARIATION(10, L"Empty")
TEST_VARIATION(11, L"ROWSET_RELEASE - UNWANTED REASON")
TEST_VARIATION(12, L"ROWSET_RELEASE - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"ROWSET_RELEASE - E_FAIL - All Phases")
TEST_VARIATION(16, L"ROWSET_RELEASE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(17, L"ROWSET_RELEASE - E_INVALIDARG - All Phases")
TEST_VARIATION(18, L"Empty")
TEST_VARIATION(19, L"Empty")
TEST_VARIATION(20, L"OTHER SCENARIOS - AddRef - Release - no notifications")
TEST_VARIATION(21, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(22, L"OTHER SCENARIOS - Remove Listeners")
TEST_VARIATION(23, L"OTHER SCENARIOS - Add Listeners")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(GetNextRows)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowset::GetNextRows
//
class GetNextRows : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(GetNextRows,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember FETCHPOSITIONCHANGE - SINGLEROW - Accept all phases
int Variation_1();
// @cmember FETCHPOSITIONCHANGE - MULTIPLEROWS - Accept all phases
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember Empty
int Variation_4();
// @cmember FETCHPOSITIONCHANGE - DB_E_CANCELED
int Variation_5();
// @cmember FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT
int Variation_6();
// @cmember FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT - Non-notification method
int Variation_7();
// @cmember Empty
int Variation_8();
// @cmember FETCHPOSITIONCHANGE - Veto OKTODO, Listener 1
int Variation_9();
// @cmember FETCHPOSITIONCHANGE - Veto ABOUTTODO, Listener 1
int Variation_10();
// @cmember FETCHPOSITIONCHANGE - Veto SYNCHAFTER, Listener 1
int Variation_11();
// @cmember FETCHPOSITIONCHANGE - Veto DIDEVENT, Listener 1
int Variation_12();
// @cmember FETCHPOSITIONCHANGE - Veto FAILEDTODO, Listener 1
int Variation_13();
// @cmember FETCHPOSITIONCHANGE - Veto OKTODO, Listener 2
int Variation_14();
// @cmember FETCHPOSITIONCHANGE - Veto ABOUTTODO, Listener 2
int Variation_15();
// @cmember FETCHPOSITIONCHANGE - Veto SYNCHAFTER, Listener 3
int Variation_16();
// @cmember Empty
int Variation_17();
// @cmember Empty
int Variation_18();
// @cmember FETCHPOSITIONCHANGE - UNWANTED REASON
int Variation_19();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - OKTODO
int Variation_20();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - ABOUTTODO
int Variation_21();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - SYNCHAFTER
int Variation_22();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - DIDENVENT
int Variation_23();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - FAILEDTODO
int Variation_24();
// @cmember Empty
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember FETCHPOSITIONCHANGE - E_FAIL - All Phases
int Variation_27();
// @cmember FETCHPOSITIONCHANGE - E_OUTOFMEMORY - All Phases
int Variation_28();
// @cmember FETCHPOSITIONCHANGE - E_INVALIDARG - All Phases
int Variation_29();
// @cmember Empty
int Variation_30();
// @cmember Empty
int Variation_31();
// @cmember ROW_ACTIVATE - SINGLEROW - Accept all phases
int Variation_32();
// @cmember ROW_ACTIVATE - MULTIPLEROWS - Accept all phases
int Variation_33();
// @cmember Empty
int Variation_34();
// @cmember Empty
int Variation_35();
// @cmember ROW_ACTIVATE - DB_E_CANCELED
int Variation_36();
// @cmember ROW_ACTIVATE - DB_E_NOTREENTRANT
int Variation_37();
// @cmember Empty
int Variation_38();
// @cmember Empty
int Variation_39();
// @cmember ROW_ACTIVATE - Veto DIDEVENT, Listener 1
int Variation_40();
// @cmember Empty
int Variation_41();
// @cmember Empty
int Variation_42();
// @cmember ROW_ACTIVATE - UNWANTED REASON
int Variation_43();
// @cmember ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT
int Variation_44();
// @cmember Empty
int Variation_45();
// @cmember Empty
int Variation_46();
// @cmember ROW_ACTIVATE - E_FAIL - All Phases
int Variation_47();
// @cmember ROW_ACTIVATE - E_OUTOFMEMORY - All Phases
int Variation_48();
// @cmember ROW_ACTIVATE - E_INVALIDARG - All Phases
int Variation_49();
// @cmember Empty
int Variation_50();
// @cmember Empty
int Variation_51();
// @cmember OTHER SCENARIOS - Fetch no rows - no notifications
int Variation_52();
// @cmember OTHER SCENARIOS - Fetch A, Fetch A again
int Variation_53();
// @cmember OTHER SCENARIOS - Fetch A, Fetch A,B
int Variation_54();
// @cmember OTHER SCENARIOS - Fetch A, ReleaseRows A, Fetch A
int Variation_55();
// @cmember Empty
int Variation_56();
// @cmember OTHER SCENARIOS - DB_S_ENDOFROWSET - 1 more than in rowset
int Variation_57();
// @cmember OTHER SCENARIOS - DB_S_ENDOFROWSET - 1 more at end of rowset
int Variation_58();
// @cmember OTHER SCENARIOS - DB_S_ENDOFROWSET - Stepping backward
int Variation_59();
// @cmember Empty
int Variation_60();
// @cmember OTHER SCENARIOS - DB_E_BADSTARTPOSITION
int Variation_61();
// @cmember OTHER SCENARIOS - E_INVALIDARG
int Variation_62();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_63();
// @cmember OTHER SCENARIOS - Remove Listeners
int Variation_64();
// @cmember OTHER SCENARIOS - Add Listeners
int Variation_65();
// @cmember OTHER SCENARIOS - GetData
int Variation_66();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(GetNextRows)
#define THE_CLASS GetNextRows
BEG_TEST_CASE(GetNextRows, CExecutionManager, L"Tests Notifications for IRowset::GetNextRows")
TEST_VARIATION(1, L"FETCHPOSITIONCHANGE - SINGLEROW - Accept all phases")
TEST_VARIATION(2, L"FETCHPOSITIONCHANGE - MULTIPLEROWS - Accept all phases")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"Empty")
TEST_VARIATION(5, L"FETCHPOSITIONCHANGE - DB_E_CANCELED")
TEST_VARIATION(6, L"FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT")
TEST_VARIATION(7, L"FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT - Non-notification method")
TEST_VARIATION(8, L"Empty")
TEST_VARIATION(9, L"FETCHPOSITIONCHANGE - Veto OKTODO, Listener 1")
TEST_VARIATION(10, L"FETCHPOSITIONCHANGE - Veto ABOUTTODO, Listener 1")
TEST_VARIATION(11, L"FETCHPOSITIONCHANGE - Veto SYNCHAFTER, Listener 1")
TEST_VARIATION(12, L"FETCHPOSITIONCHANGE - Veto DIDEVENT, Listener 1")
TEST_VARIATION(13, L"FETCHPOSITIONCHANGE - Veto FAILEDTODO, Listener 1")
TEST_VARIATION(14, L"FETCHPOSITIONCHANGE - Veto OKTODO, Listener 2")
TEST_VARIATION(15, L"FETCHPOSITIONCHANGE - Veto ABOUTTODO, Listener 2")
TEST_VARIATION(16, L"FETCHPOSITIONCHANGE - Veto SYNCHAFTER, Listener 3")
TEST_VARIATION(17, L"Empty")
TEST_VARIATION(18, L"Empty")
TEST_VARIATION(19, L"FETCHPOSITIONCHANGE - UNWANTED REASON")
TEST_VARIATION(20, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - OKTODO")
TEST_VARIATION(21, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - ABOUTTODO")
TEST_VARIATION(22, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - SYNCHAFTER")
TEST_VARIATION(23, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - DIDENVENT")
TEST_VARIATION(24, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - FAILEDTODO")
TEST_VARIATION(25, L"Empty")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"FETCHPOSITIONCHANGE - E_FAIL - All Phases")
TEST_VARIATION(28, L"FETCHPOSITIONCHANGE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(29, L"FETCHPOSITIONCHANGE - E_INVALIDARG - All Phases")
TEST_VARIATION(30, L"Empty")
TEST_VARIATION(31, L"Empty")
TEST_VARIATION(32, L"ROW_ACTIVATE - SINGLEROW - Accept all phases")
TEST_VARIATION(33, L"ROW_ACTIVATE - MULTIPLEROWS - Accept all phases")
TEST_VARIATION(34, L"Empty")
TEST_VARIATION(35, L"Empty")
TEST_VARIATION(36, L"ROW_ACTIVATE - DB_E_CANCELED")
TEST_VARIATION(37, L"ROW_ACTIVATE - DB_E_NOTREENTRANT")
TEST_VARIATION(38, L"Empty")
TEST_VARIATION(39, L"Empty")
TEST_VARIATION(40, L"ROW_ACTIVATE - Veto DIDEVENT, Listener 1")
TEST_VARIATION(41, L"Empty")
TEST_VARIATION(42, L"Empty")
TEST_VARIATION(43, L"ROW_ACTIVATE - UNWANTED REASON")
TEST_VARIATION(44, L"ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(45, L"Empty")
TEST_VARIATION(46, L"Empty")
TEST_VARIATION(47, L"ROW_ACTIVATE - E_FAIL - All Phases")
TEST_VARIATION(48, L"ROW_ACTIVATE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(49, L"ROW_ACTIVATE - E_INVALIDARG - All Phases")
TEST_VARIATION(50, L"Empty")
TEST_VARIATION(51, L"Empty")
TEST_VARIATION(52, L"OTHER SCENARIOS - Fetch no rows - no notifications")
TEST_VARIATION(53, L"OTHER SCENARIOS - Fetch A, Fetch A again")
TEST_VARIATION(54, L"OTHER SCENARIOS - Fetch A, Fetch A,B")
TEST_VARIATION(55, L"OTHER SCENARIOS - Fetch A, ReleaseRows A, Fetch A")
TEST_VARIATION(56, L"Empty")
TEST_VARIATION(57, L"OTHER SCENARIOS - DB_S_ENDOFROWSET - 1 more than in rowset")
TEST_VARIATION(58, L"OTHER SCENARIOS - DB_S_ENDOFROWSET - 1 more at end of rowset")
TEST_VARIATION(59, L"OTHER SCENARIOS - DB_S_ENDOFROWSET - Stepping backward")
TEST_VARIATION(60, L"Empty")
TEST_VARIATION(61, L"OTHER SCENARIOS - DB_E_BADSTARTPOSITION")
TEST_VARIATION(62, L"OTHER SCENARIOS - E_INVALIDARG")
TEST_VARIATION(63, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(64, L"OTHER SCENARIOS - Remove Listeners")
TEST_VARIATION(65, L"OTHER SCENARIOS - Add Listeners")
TEST_VARIATION(66, L"OTHER SCENARIOS - GetData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(ReleaseRows)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowset::ReleaseRows
//
class ReleaseRows : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(ReleaseRows,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_RELEASE - SINGLEROW - Accept all phases
int Variation_1();
// @cmember ROW_RELEASE - MULTIPLEROWS - Accept all phases
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember Empty
int Variation_4();
// @cmember ROW_RELEASE - DB_E_CANCELED - Accept all phases
int Variation_5();
// @cmember ROW_RELEASE - DB_E_NOTREENTRANT - Accept all phases
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember Empty
int Variation_8();
// @cmember ROW_RELEASE - Veto DIDEVENT, Listener 2
int Variation_9();
// @cmember Empty
int Variation_10();
// @cmember Empty
int Variation_11();
// @cmember ROW_RELEASE - UNWANTED REASON
int Variation_12();
// @cmember ROW_RELEASE - UNWANTED PHASE - DIDEVENT
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember Empty
int Variation_15();
// @cmember ROW_RELEASE - E_FAIL - All Phases
int Variation_16();
// @cmember ROW_RELEASE - E_OUTOFMEMORY - All Phases
int Variation_17();
// @cmember ROW_RELEASE - E_INVALIDARG - All Phases
int Variation_18();
// @cmember Empty
int Variation_19();
// @cmember Empty
int Variation_20();
// @cmember OTHER SCENARIOS - Release 0 rows
int Variation_21();
// @cmember OTHER SCENARIOS - AddRef Row, ReleaseRows
int Variation_22();
// @cmember OTHER SCENARIOS - ReleaseRow, ReleaseRow
int Variation_23();
// @cmember OTHER SCENARIOS - ReleaseRows [valid, invalid]
int Variation_24();
// @cmember Empty
int Variation_25();
// @cmember OTHER SCENARIOS - DBROWSTATUS_S_PENDINGCHANGES
int Variation_26();
// @cmember OTHER SCENARIOS - E_INVALIDARG
int Variation_27();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_28();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_29();
// @cmember OTHER SCENARIOS - GetData
int Variation_30();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(ReleaseRows)
#define THE_CLASS ReleaseRows
BEG_TEST_CASE(ReleaseRows, CExecutionManager, L"Tests Notifications for IRowset::ReleaseRows")
TEST_VARIATION(1, L"ROW_RELEASE - SINGLEROW - Accept all phases")
TEST_VARIATION(2, L"ROW_RELEASE - MULTIPLEROWS - Accept all phases")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"Empty")
TEST_VARIATION(5, L"ROW_RELEASE - DB_E_CANCELED - Accept all phases")
TEST_VARIATION(6, L"ROW_RELEASE - DB_E_NOTREENTRANT - Accept all phases")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"Empty")
TEST_VARIATION(9, L"ROW_RELEASE - Veto DIDEVENT, Listener 2")
TEST_VARIATION(10, L"Empty")
TEST_VARIATION(11, L"Empty")
TEST_VARIATION(12, L"ROW_RELEASE - UNWANTED REASON")
TEST_VARIATION(13, L"ROW_RELEASE - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"Empty")
TEST_VARIATION(16, L"ROW_RELEASE - E_FAIL - All Phases")
TEST_VARIATION(17, L"ROW_RELEASE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(18, L"ROW_RELEASE - E_INVALIDARG - All Phases")
TEST_VARIATION(19, L"Empty")
TEST_VARIATION(20, L"Empty")
TEST_VARIATION(21, L"OTHER SCENARIOS - Release 0 rows")
TEST_VARIATION(22, L"OTHER SCENARIOS - AddRef Row, ReleaseRows")
TEST_VARIATION(23, L"OTHER SCENARIOS - ReleaseRow, ReleaseRow")
TEST_VARIATION(24, L"OTHER SCENARIOS - ReleaseRows [valid, invalid]")
TEST_VARIATION(25, L"Empty")
TEST_VARIATION(26, L"OTHER SCENARIOS - DBROWSTATUS_S_PENDINGCHANGES")
TEST_VARIATION(27, L"OTHER SCENARIOS - E_INVALIDARG")
TEST_VARIATION(28, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(29, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(30, L"OTHER SCENARIOS - GetData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(RestartPosition)
//--------------------------------------------------------------------
// @class Tests Notificatons for IRowset::RestartPosition
//
class RestartPosition : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(RestartPosition,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember FETCHPOSITIONCHANGE - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember FETCHPOSITIONCHANGE - DB_E_CANCELED
int Variation_4();
// @cmember FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember FETCHPOSITIONCHANGE - Veto OKTODO
int Variation_8();
// @cmember FETCHPOSITIONCHANGE - Veto ABOUTTODO
int Variation_9();
// @cmember FETCHPOSITIONCHANGE - Veto SYNCHAFTER
int Variation_10();
// @cmember FETCHPOSITIONCHANGE - Veto DIDEVENT
int Variation_11();
// @cmember FETCHPOSITIONCHANGE - Veto FAILEDTODO
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember FETCHPOSITIONCHANGE - UNWANTED REASON
int Variation_15();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - OKTODO
int Variation_16();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - ABOUTTODO
int Variation_17();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - SYNCHAFTER
int Variation_18();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - DIDEVENT
int Variation_19();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - FAILEDTODO
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember Empty
int Variation_22();
// @cmember FETCHPOSITIONCHANGE - E_FAIL - All Phases
int Variation_23();
// @cmember FETCHPOSITIONCHANGE - E_OUTOFMEMORY - All Phases
int Variation_24();
// @cmember FETCHPOSITIONCHANGE - E_INVALIDARG - All Phases
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember Empty
int Variation_27();
// @cmember ROWSET_CHANGED - Accept all phases
int Variation_28();
// @cmember Empty
int Variation_29();
// @cmember Empty
int Variation_30();
// @cmember ROWSET_CHANGED - DB_E_CANCELED
int Variation_31();
// @cmember ROWSET_CHANGED - DB_E_NOTREENTRANT
int Variation_32();
// @cmember Empty
int Variation_33();
// @cmember Empty
int Variation_34();
// @cmember ROWSET_CHANGED - Veto OKTODO
int Variation_35();
// @cmember ROWSET_CHANGED - Veto ABOUTTODO
int Variation_36();
// @cmember ROWSET_CHANGED - Veto SYNCHAFTER
int Variation_37();
// @cmember ROWSET_CHANGED - Veto DIDEVENT
int Variation_38();
// @cmember ROWSET_CHANGED - Veto FAILEDTODO
int Variation_39();
// @cmember Empty
int Variation_40();
// @cmember Empty
int Variation_41();
// @cmember ROWSET_CHANGED - UNWANTED REASON
int Variation_42();
// @cmember ROWSET_CHANGED - UNWANTED PHASE OKTODO
int Variation_43();
// @cmember ROWSET_CHANGED - UNWANTED PHASE ABOUTTODO
int Variation_44();
// @cmember ROWSET_CHANGED - UNWANTED PHASE SYNCHAFTER
int Variation_45();
// @cmember ROWSET_CHANGED - UNWANTED PHASE DIDEVENT
int Variation_46();
// @cmember ROWSET_CHANGED - UNWANTED PHASE FAILEDTODO
int Variation_47();
// @cmember Empty
int Variation_48();
// @cmember Empty
int Variation_49();
// @cmember ROWSET_CHANGED - E_FAIL - All Phases
int Variation_50();
// @cmember ROWSET_CHANGED - E_OUTOFMEMORY - All Phases
int Variation_51();
// @cmember ROWSET_CHANGED - E_INVALIDARG - All Phases
int Variation_52();
// @cmember Empty
int Variation_53();
// @cmember Empty
int Variation_54();
// @cmember OTHER SCENARIOS - RestartPosition
int Variation_55();
// @cmember OTHER SCENARIOS - GetNextRows - RestartPosition - RestartPosition
int Variation_56();
// @cmember Empty
int Variation_57();
// @cmember OTHER SCENARIOS - DB_E_ROWSNOTRELEASED
int Variation_58();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_59();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_60();
// @cmember OTHER SCENARIOS - GetData
int Variation_61();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(RestartPosition)
#define THE_CLASS RestartPosition
BEG_TEST_CASE(RestartPosition, CExecutionManager, L"Tests Notificatons for IRowset::RestartPosition")
TEST_VARIATION(1, L"FETCHPOSITIONCHANGE - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"FETCHPOSITIONCHANGE - DB_E_CANCELED")
TEST_VARIATION(5, L"FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"FETCHPOSITIONCHANGE - Veto OKTODO")
TEST_VARIATION(9, L"FETCHPOSITIONCHANGE - Veto ABOUTTODO")
TEST_VARIATION(10, L"FETCHPOSITIONCHANGE - Veto SYNCHAFTER")
TEST_VARIATION(11, L"FETCHPOSITIONCHANGE - Veto DIDEVENT")
TEST_VARIATION(12, L"FETCHPOSITIONCHANGE - Veto FAILEDTODO")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"FETCHPOSITIONCHANGE - UNWANTED REASON")
TEST_VARIATION(16, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - OKTODO")
TEST_VARIATION(17, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - ABOUTTODO")
TEST_VARIATION(18, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - SYNCHAFTER")
TEST_VARIATION(19, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(20, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - FAILEDTODO")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"Empty")
TEST_VARIATION(23, L"FETCHPOSITIONCHANGE - E_FAIL - All Phases")
TEST_VARIATION(24, L"FETCHPOSITIONCHANGE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(25, L"FETCHPOSITIONCHANGE - E_INVALIDARG - All Phases")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"Empty")
TEST_VARIATION(28, L"ROWSET_CHANGED - Accept all phases")
TEST_VARIATION(29, L"Empty")
TEST_VARIATION(30, L"Empty")
TEST_VARIATION(31, L"ROWSET_CHANGED - DB_E_CANCELED")
TEST_VARIATION(32, L"ROWSET_CHANGED - DB_E_NOTREENTRANT")
TEST_VARIATION(33, L"Empty")
TEST_VARIATION(34, L"Empty")
TEST_VARIATION(35, L"ROWSET_CHANGED - Veto OKTODO")
TEST_VARIATION(36, L"ROWSET_CHANGED - Veto ABOUTTODO")
TEST_VARIATION(37, L"ROWSET_CHANGED - Veto SYNCHAFTER")
TEST_VARIATION(38, L"ROWSET_CHANGED - Veto DIDEVENT")
TEST_VARIATION(39, L"ROWSET_CHANGED - Veto FAILEDTODO")
TEST_VARIATION(40, L"Empty")
TEST_VARIATION(41, L"Empty")
TEST_VARIATION(42, L"ROWSET_CHANGED - UNWANTED REASON")
TEST_VARIATION(43, L"ROWSET_CHANGED - UNWANTED PHASE OKTODO")
TEST_VARIATION(44, L"ROWSET_CHANGED - UNWANTED PHASE ABOUTTODO")
TEST_VARIATION(45, L"ROWSET_CHANGED - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(46, L"ROWSET_CHANGED - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(47, L"ROWSET_CHANGED - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(48, L"Empty")
TEST_VARIATION(49, L"Empty")
TEST_VARIATION(50, L"ROWSET_CHANGED - E_FAIL - All Phases")
TEST_VARIATION(51, L"ROWSET_CHANGED - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(52, L"ROWSET_CHANGED - E_INVALIDARG - All Phases")
TEST_VARIATION(53, L"Empty")
TEST_VARIATION(54, L"Empty")
TEST_VARIATION(55, L"OTHER SCENARIOS - RestartPosition")
TEST_VARIATION(56, L"OTHER SCENARIOS - GetNextRows - RestartPosition - RestartPosition")
TEST_VARIATION(57, L"Empty")
TEST_VARIATION(58, L"OTHER SCENARIOS - DB_E_ROWSNOTRELEASED")
TEST_VARIATION(59, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(60, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(61, L"OTHER SCENARIOS - GetData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(Seek)
//--------------------------------------------------------------------
// @class Test Notifications for IRowsetIndex::Seek
//
class Seek : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(Seek,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember FETCHPOSITIONCHANGE - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember FETCHPOSITIONCHANGE - DB_E_CANCELED
int Variation_4();
// @cmember FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember FETCHPOSITIONCHANGE - Veto OKTODO
int Variation_8();
// @cmember FETCHPOSITIONCHANGE - Veto ABOUTTODO
int Variation_9();
// @cmember FETCHPOSITIONCHANGE - Veto SYNCHAFTER
int Variation_10();
// @cmember FETCHPOSITIONCHANGE - Veto DIDEVENT
int Variation_11();
// @cmember FETCHPOSITIONCHANGE - Veto FAILEDTODO
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember FETCHPOSITIONCHANGE - UNWANTED REASON
int Variation_15();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - OKTODO
int Variation_16();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - ABOUTTODO
int Variation_17();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - SYNCHAFTER
int Variation_18();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - DIDEVENT
int Variation_19();
// @cmember FETCHPOSITIONCHANGE - UNWANTED PHASE - FAILEDTODO
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember Empty
int Variation_22();
// @cmember FETCHPOSITIONCHANGE - E_FAIL - All Phases
int Variation_23();
// @cmember FETCHPOSITIONCHANGE - E_OUTOFMEMORY - All Phases
int Variation_24();
// @cmember FETCHPOSITIONCHANGE - E_INVALIDARG - All Phases
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember Empty
int Variation_27();
// @cmember OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
int Variation_28();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_29();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_30();
// @cmember OTHER SCENARIOS - GetData
int Variation_31();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(Seek)
#define THE_CLASS Seek
BEG_TEST_CASE(Seek, CExecutionManager, L"Test Notifications for IRowsetIndex::Seek")
TEST_VARIATION(1, L"FETCHPOSITIONCHANGE - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"FETCHPOSITIONCHANGE - DB_E_CANCELED")
TEST_VARIATION(5, L"FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"FETCHPOSITIONCHANGE - Veto OKTODO")
TEST_VARIATION(9, L"FETCHPOSITIONCHANGE - Veto ABOUTTODO")
TEST_VARIATION(10, L"FETCHPOSITIONCHANGE - Veto SYNCHAFTER")
TEST_VARIATION(11, L"FETCHPOSITIONCHANGE - Veto DIDEVENT")
TEST_VARIATION(12, L"FETCHPOSITIONCHANGE - Veto FAILEDTODO")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"FETCHPOSITIONCHANGE - UNWANTED REASON")
TEST_VARIATION(16, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - OKTODO")
TEST_VARIATION(17, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - ABOUTTODO")
TEST_VARIATION(18, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - SYNCHAFTER")
TEST_VARIATION(19, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(20, L"FETCHPOSITIONCHANGE - UNWANTED PHASE - FAILEDTODO")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"Empty")
TEST_VARIATION(23, L"FETCHPOSITIONCHANGE - E_FAIL - All Phases")
TEST_VARIATION(24, L"FETCHPOSITIONCHANGE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(25, L"FETCHPOSITIONCHANGE - E_INVALIDARG - All Phases")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"Empty")
TEST_VARIATION(28, L"OTHER SCENARIOS - DB_E_BADACCESSORHANDLE")
TEST_VARIATION(29, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(30, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(31, L"OTHER SCENARIOS - GetData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(GetRowsAt)
//--------------------------------------------------------------------
// @class Tests Notificatons for IRowsetLocate::GetRowsAt
//
class GetRowsAt : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(GetRowsAt,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_ACTIVATE - SINGLEROW - Accept all phases
int Variation_1();
// @cmember ROW_ACTIVATE - MULTIPLEROWS - Accept all phases
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember Empty
int Variation_4();
// @cmember ROW_ACTIVATE - DB_E_CANCELED
int Variation_5();
// @cmember ROW_ACTIVATE - DB_E_NOTREENTRANT
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember Empty
int Variation_8();
// @cmember ROW_ACTIVATE - Veto DIDEVENT, Listener 1
int Variation_9();
// @cmember Empty
int Variation_10();
// @cmember Empty
int Variation_11();
// @cmember ROW_ACTIVATE - UNWANTED REASON
int Variation_12();
// @cmember ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember Empty
int Variation_15();
// @cmember ROW_ACTIVATE - E_FAIL - All Phases
int Variation_16();
// @cmember ROW_ACTIVATE - E_OUTOFMEMORY - All Phases
int Variation_17();
// @cmember ROW_ACTIVATE - E_INVALIDARG - All Phases
int Variation_18();
// @cmember Empty
int Variation_19();
// @cmember Empty
int Variation_20();
// @cmember OTHER SCENARIOS - Get same row twice
int Variation_21();
// @cmember OTHER SCENARIOS - DB_E_BADSTARTPOSITION
int Variation_22();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_23();
// @cmember OTHER SCENARIOS - DB_S_ENDOFROWSET - more rows than are in the rowset
int Variation_24();
// @cmember OTHER SCENARIOS - DB_S_ENDOFROWSET - at end of rowset
int Variation_25();
// @cmember OTHER SCENARIOS - no rows at head of rowset
int Variation_26();
// @cmember OTHER SCENARIOS - no rows at end of rowset
int Variation_27();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_28();
// @cmember OTHER SCENARIOS - GetData
int Variation_29();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(GetRowsAt)
#define THE_CLASS GetRowsAt
BEG_TEST_CASE(GetRowsAt, CExecutionManager, L"Tests Notificatons for IRowsetLocate::GetRowsAt")
TEST_VARIATION(1, L"ROW_ACTIVATE - SINGLEROW - Accept all phases")
TEST_VARIATION(2, L"ROW_ACTIVATE - MULTIPLEROWS - Accept all phases")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"Empty")
TEST_VARIATION(5, L"ROW_ACTIVATE - DB_E_CANCELED")
TEST_VARIATION(6, L"ROW_ACTIVATE - DB_E_NOTREENTRANT")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"Empty")
TEST_VARIATION(9, L"ROW_ACTIVATE - Veto DIDEVENT, Listener 1")
TEST_VARIATION(10, L"Empty")
TEST_VARIATION(11, L"Empty")
TEST_VARIATION(12, L"ROW_ACTIVATE - UNWANTED REASON")
TEST_VARIATION(13, L"ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"Empty")
TEST_VARIATION(16, L"ROW_ACTIVATE - E_FAIL - All Phases")
TEST_VARIATION(17, L"ROW_ACTIVATE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(18, L"ROW_ACTIVATE - E_INVALIDARG - All Phases")
TEST_VARIATION(19, L"Empty")
TEST_VARIATION(20, L"Empty")
TEST_VARIATION(21, L"OTHER SCENARIOS - Get same row twice")
TEST_VARIATION(22, L"OTHER SCENARIOS - DB_E_BADSTARTPOSITION")
TEST_VARIATION(23, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(24, L"OTHER SCENARIOS - DB_S_ENDOFROWSET - more rows than are in the rowset")
TEST_VARIATION(25, L"OTHER SCENARIOS - DB_S_ENDOFROWSET - at end of rowset")
TEST_VARIATION(26, L"OTHER SCENARIOS - no rows at head of rowset")
TEST_VARIATION(27, L"OTHER SCENARIOS - no rows at end of rowset")
TEST_VARIATION(28, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(29, L"OTHER SCENARIOS - GetData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(GetRowsByBookmark)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowsetLocate::GetRowsbyBookmark
//
class GetRowsByBookmark : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(GetRowsByBookmark,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_ACTIVATE - SINGLEROW - Accept all phases
int Variation_1();
// @cmember ROW_ACTIVATE - MULTIPLEROWS - Accept all phases
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember Empty
int Variation_4();
// @cmember ROW_ACTIVATE - DB_E_CANCELED
int Variation_5();
// @cmember ROW_ACTIVATE - DB_E_NOTREENTRANT
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember Empty
int Variation_8();
// @cmember ROW_ACTIVATE - Veto DIDEVENT, Listener 1
int Variation_9();
// @cmember Empty
int Variation_10();
// @cmember Empty
int Variation_11();
// @cmember ROW_ACTIVATE - UNWANTED REASON
int Variation_12();
// @cmember ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember Empty
int Variation_15();
// @cmember ROW_ACTIVATE - E_FAIL - All Phases
int Variation_16();
// @cmember ROW_ACTIVATE - E_OUTOFMEMORY - All Phases
int Variation_17();
// @cmember ROW_ACTIVATE - E_INVALIDARG - All Phases
int Variation_18();
// @cmember Empty
int Variation_19();
// @cmember Empty
int Variation_20();
// @cmember OTHER SCENARIOS - Get no rows
int Variation_21();
// @cmember OTHER SCENARIOS - Get same row twice
int Variation_22();
// @cmember OTHER SCENARIOS - E_INVALIDARG
int Variation_23();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_24();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_25();
// @cmember OTHER SCENARIOS - GetData
int Variation_26();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(GetRowsByBookmark)
#define THE_CLASS GetRowsByBookmark
BEG_TEST_CASE(GetRowsByBookmark, CExecutionManager, L"Tests Notifications for IRowsetLocate::GetRowsbyBookmark")
TEST_VARIATION(1, L"ROW_ACTIVATE - SINGLEROW - Accept all phases")
TEST_VARIATION(2, L"ROW_ACTIVATE - MULTIPLEROWS - Accept all phases")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"Empty")
TEST_VARIATION(5, L"ROW_ACTIVATE - DB_E_CANCELED")
TEST_VARIATION(6, L"ROW_ACTIVATE - DB_E_NOTREENTRANT")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"Empty")
TEST_VARIATION(9, L"ROW_ACTIVATE - Veto DIDEVENT, Listener 1")
TEST_VARIATION(10, L"Empty")
TEST_VARIATION(11, L"Empty")
TEST_VARIATION(12, L"ROW_ACTIVATE - UNWANTED REASON")
TEST_VARIATION(13, L"ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"Empty")
TEST_VARIATION(16, L"ROW_ACTIVATE - E_FAIL - All Phases")
TEST_VARIATION(17, L"ROW_ACTIVATE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(18, L"ROW_ACTIVATE - E_INVALIDARG - All Phases")
TEST_VARIATION(19, L"Empty")
TEST_VARIATION(20, L"Empty")
TEST_VARIATION(21, L"OTHER SCENARIOS - Get no rows")
TEST_VARIATION(22, L"OTHER SCENARIOS - Get same row twice")
TEST_VARIATION(23, L"OTHER SCENARIOS - E_INVALIDARG")
TEST_VARIATION(24, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(25, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(26, L"OTHER SCENARIOS - GetData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(GetRowsAtRatio)
//--------------------------------------------------------------------
// @class Test Nofications for IRowsetScroll::GetRowsAtRatio
//
class GetRowsAtRatio : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(GetRowsAtRatio,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_ACTIVATE - SINGLEROW - Accept all phases
int Variation_1();
// @cmember ROW_ACTIVATE - MULTIPLEROWS - Accept all phases
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember Empty
int Variation_4();
// @cmember ROW_ACTIVATE - DB_E_CANCELED
int Variation_5();
// @cmember ROW_ACTIVATE - DB_E_NOTREENTRANT
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember Empty
int Variation_8();
// @cmember ROW_ACTIVATE - Veto DIDEVENT, Listener 1
int Variation_9();
// @cmember Empty
int Variation_10();
// @cmember Empty
int Variation_11();
// @cmember ROW_ACTIVATE - UNWANTED REASON
int Variation_12();
// @cmember ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember Empty
int Variation_15();
// @cmember ROW_ACTIVATE - E_FAIL - All Phases
int Variation_16();
// @cmember ROW_ACTIVATE - E_OUTOFMEMORY - All Phases
int Variation_17();
// @cmember ROW_ACTIVATE - E_INVALIDARG - All Phases
int Variation_18();
// @cmember Empty
int Variation_19();
// @cmember Empty
int Variation_20();
// @cmember OTHER SCENARIOS - No rows
int Variation_21();
// @cmember OTHER SCENARIOS - DB_S_ENDOFROWSET 1 more than rowset
int Variation_22();
// @cmember OTHER SCENARIOS - DB_S_ENDOFROWSET - at end of rowset
int Variation_23();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_24();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_25();
// @cmember OTHER SCENARIOS - GetData
int Variation_26();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(GetRowsAtRatio)
#define THE_CLASS GetRowsAtRatio
BEG_TEST_CASE(GetRowsAtRatio, CExecutionManager, L"Test Nofications for IRowsetScroll::GetRowsAtRatio")
TEST_VARIATION(1, L"ROW_ACTIVATE - SINGLEROW - Accept all phases")
TEST_VARIATION(2, L"ROW_ACTIVATE - MULTIPLEROWS - Accept all phases")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"Empty")
TEST_VARIATION(5, L"ROW_ACTIVATE - DB_E_CANCELED")
TEST_VARIATION(6, L"ROW_ACTIVATE - DB_E_NOTREENTRANT")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"Empty")
TEST_VARIATION(9, L"ROW_ACTIVATE - Veto DIDEVENT, Listener 1")
TEST_VARIATION(10, L"Empty")
TEST_VARIATION(11, L"Empty")
TEST_VARIATION(12, L"ROW_ACTIVATE - UNWANTED REASON")
TEST_VARIATION(13, L"ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"Empty")
TEST_VARIATION(16, L"ROW_ACTIVATE - E_FAIL - All Phases")
TEST_VARIATION(17, L"ROW_ACTIVATE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(18, L"ROW_ACTIVATE - E_INVALIDARG - All Phases")
TEST_VARIATION(19, L"Empty")
TEST_VARIATION(20, L"Empty")
TEST_VARIATION(21, L"OTHER SCENARIOS - No rows")
TEST_VARIATION(22, L"OTHER SCENARIOS - DB_S_ENDOFROWSET 1 more than rowset")
TEST_VARIATION(23, L"OTHER SCENARIOS - DB_S_ENDOFROWSET - at end of rowset")
TEST_VARIATION(24, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(25, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(26, L"OTHER SCENARIOS - GetData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(DeleteRows)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowsetChange::DeleteRows
//
class DeleteRows : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(DeleteRows,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_DELETE - SINGLEROW - Accept all phases
int Variation_1();
// @cmember ROW_DELETE - MULTIPLEROWS - Accept all phases
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROW_DELETE - MULTIPLEROWS - DB_E_CANCELED
int Variation_4();
// @cmember ROW_DELETE - SINGLEROW - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROW_DELETE - MULTIPLEROWS - Veto OKTODO Listener 1
int Variation_8();
// @cmember ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1
int Variation_9();
// @cmember ROW_DELETE - MULTIPLEROWS - Veto SYNCHAFTER Listener 1
int Variation_10();
// @cmember ROW_DELETE - MULTIPLEROWS - Veto DIDEVENT Listener 2
int Variation_11();
// @cmember ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - Veto FAILEDTODO Listener 2
int Variation_12();
// @cmember OTHER SCENARIOS - Add/Remove Listeners - SINGLEROW
int Variation_13();
// @cmember OTHER SCENARIOS - GetData - SINGLEROW
int Variation_14();
// @cmember ROW_DELETE - SINGLEROW - UNWANTED REASON
int Variation_15();
// @cmember ROW_DELETE - SINGLEROW - UNWANTED PHASE OKTODO
int Variation_16();
// @cmember ROW_DELETE - SINGLEROW - UNWANTED PHASE ABOUTTODO
int Variation_17();
// @cmember ROW_DELETE - SINGLEROW - UNWANTED PHASE SYNCHAFTER
int Variation_18();
// @cmember ROW_DELETE - SINGLEROW - UNWANTED PHASE DIDEVENT
int Variation_19();
// @cmember ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - UNWANTED PHASE FAILEDTODO
int Variation_20();
// @cmember OTHER SCENARIOS - DBROWSTATUS_DELETED - SINGLEROW
int Variation_21();
// @cmember ROW_DELETE - SINGLEROW - Veto ABOUTTODO Listener 1 - E_FAIL - All Phases
int Variation_22();
// @cmember ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - E_FAIL - All Phases
int Variation_23();
// @cmember ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - E_OUTOFMEMORY - All Phases
int Variation_24();
// @cmember ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - E_INVALIDARG - All Phases
int Variation_25();
// @cmember ROW_DELETE - SINGLEROW - E_OUTOFMEMORY - All Phases
int Variation_26();
// @cmember ROW_DELETE - SINGLEROW - E_INVALIDARG - All Phases
int Variation_27();
// @cmember OTHER SCENARIOS - Delete no rows - Delete MULTIPLEROWS
int Variation_28();
// @cmember OTHER SCENARIOS - DBROWSTATUS_DELETED - MULTIPLEROWS
int Variation_29();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_30();
// @cmember OTHER SCENARIOS - Add/Remove Listeners - MULTIPLEROWS
int Variation_31();
// @cmember OTHER SCENARIOS - GetData - MULTIPLEROWS
int Variation_32();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(DeleteRows)
#define THE_CLASS DeleteRows
BEG_TEST_CASE(DeleteRows, CExecutionManager, L"Tests Notifications for IRowsetChange::DeleteRows")
TEST_VARIATION(1, L"ROW_DELETE - SINGLEROW - Accept all phases")
TEST_VARIATION(2, L"ROW_DELETE - MULTIPLEROWS - Accept all phases")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROW_DELETE - MULTIPLEROWS - DB_E_CANCELED")
TEST_VARIATION(5, L"ROW_DELETE - SINGLEROW - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROW_DELETE - MULTIPLEROWS - Veto OKTODO Listener 1")
TEST_VARIATION(9, L"ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1")
TEST_VARIATION(10, L"ROW_DELETE - MULTIPLEROWS - Veto SYNCHAFTER Listener 1")
TEST_VARIATION(11, L"ROW_DELETE - MULTIPLEROWS - Veto DIDEVENT Listener 2")
TEST_VARIATION(12, L"ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - Veto FAILEDTODO Listener 2")
TEST_VARIATION(13, L"OTHER SCENARIOS - Add/Remove Listeners - SINGLEROW")
TEST_VARIATION(14, L"OTHER SCENARIOS - GetData - SINGLEROW")
TEST_VARIATION(15, L"ROW_DELETE - SINGLEROW - UNWANTED REASON")
TEST_VARIATION(16, L"ROW_DELETE - SINGLEROW - UNWANTED PHASE OKTODO")
TEST_VARIATION(17, L"ROW_DELETE - SINGLEROW - UNWANTED PHASE ABOUTTODO")
TEST_VARIATION(18, L"ROW_DELETE - SINGLEROW - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(19, L"ROW_DELETE - SINGLEROW - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(20, L"ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(21, L"OTHER SCENARIOS - DBROWSTATUS_DELETED - SINGLEROW")
TEST_VARIATION(22, L"ROW_DELETE - SINGLEROW - Veto ABOUTTODO Listener 1 - E_FAIL - All Phases")
TEST_VARIATION(23, L"ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - E_FAIL - All Phases")
TEST_VARIATION(24, L"ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(25, L"ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - E_INVALIDARG - All Phases")
TEST_VARIATION(26, L"ROW_DELETE - SINGLEROW - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(27, L"ROW_DELETE - SINGLEROW - E_INVALIDARG - All Phases")
TEST_VARIATION(28, L"OTHER SCENARIOS - Delete no rows - Delete MULTIPLEROWS")
TEST_VARIATION(29, L"OTHER SCENARIOS - DBROWSTATUS_DELETED - MULTIPLEROWS")
TEST_VARIATION(30, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(31, L"OTHER SCENARIOS - Add/Remove Listeners - MULTIPLEROWS")
TEST_VARIATION(32, L"OTHER SCENARIOS - GetData - MULTIPLEROWS")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(DeleteRows_Bufferred)
//--------------------------------------------------------------------
// @class Test Notifications for IRowsetChange::DeleteRows in Buffered Mode
//
class DeleteRows_Bufferred : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(DeleteRows_Bufferred,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_DELETE - SINGLEROW - Accept all phases
int Variation_1();
// @cmember ROW_DELETE - MULTIPLEROWS - Accept all phases
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROW_DELETE - DB_E_CANCELED
int Variation_4();
// @cmember ROW_DELETE - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROW_DELETE - Veto OKTODO Listener 1
int Variation_8();
// @cmember ROW_DELETE - Veto ABOUTTODO Listener 1
int Variation_9();
// @cmember ROW_DELETE - Veto SYNCHAFTER Listener 1
int Variation_10();
// @cmember ROW_DELETE - Veto DIDEVENT Listener 2
int Variation_11();
// @cmember ROW_DELETE - Veto FAILEDTODO Listener 2
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember ROW_DELETE - UNWANTED REASON
int Variation_15();
// @cmember ROW_DELETE - UNWANTED PHASE OKTODO
int Variation_16();
// @cmember ROW_DELETE - UNWANTED PHASE ABOUTTODO
int Variation_17();
// @cmember ROW_DELETE - UNWANTED PHASE SYNCHAFTER
int Variation_18();
// @cmember ROW_DELETE - UNWANTED PHASE DIDEVENT
int Variation_19();
// @cmember ROW_DELETE - UNWANTED PHASE FAILEDTODO
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember Empty
int Variation_22();
// @cmember ROW_DELETE - E_FAIL - All Phases
int Variation_23();
// @cmember ROW_DELETE - E_OUTOFMEMORY - All Phases
int Variation_24();
// @cmember ROW_DELETE - E_INVALIDARG - All Phases
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember Empty
int Variation_27();
// @cmember OTHER SCENARIOS - Delete no rows
int Variation_28();
// @cmember OTHER SCENARIOS - DBROWSTATUS_DELETED
int Variation_29();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_30();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_31();
// @cmember OTHER SCENARIOS - GetData
int Variation_32();
// @cmember OTHER SCENARIOS - GetOriginalData
int Variation_33();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(DeleteRows_Bufferred)
#define THE_CLASS DeleteRows_Bufferred
BEG_TEST_CASE(DeleteRows_Bufferred, CExecutionManager, L"Test Notifications for IRowsetChange::DeleteRows in Buffered Mode")
TEST_VARIATION(1, L"ROW_DELETE - SINGLEROW - Accept all phases")
TEST_VARIATION(2, L"ROW_DELETE - MULTIPLEROWS - Accept all phases")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROW_DELETE - DB_E_CANCELED")
TEST_VARIATION(5, L"ROW_DELETE - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROW_DELETE - Veto OKTODO Listener 1")
TEST_VARIATION(9, L"ROW_DELETE - Veto ABOUTTODO Listener 1")
TEST_VARIATION(10, L"ROW_DELETE - Veto SYNCHAFTER Listener 1")
TEST_VARIATION(11, L"ROW_DELETE - Veto DIDEVENT Listener 2")
TEST_VARIATION(12, L"ROW_DELETE - Veto FAILEDTODO Listener 2")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"ROW_DELETE - UNWANTED REASON")
TEST_VARIATION(16, L"ROW_DELETE - UNWANTED PHASE OKTODO")
TEST_VARIATION(17, L"ROW_DELETE - UNWANTED PHASE ABOUTTODO")
TEST_VARIATION(18, L"ROW_DELETE - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(19, L"ROW_DELETE - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(20, L"ROW_DELETE - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"Empty")
TEST_VARIATION(23, L"ROW_DELETE - E_FAIL - All Phases")
TEST_VARIATION(24, L"ROW_DELETE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(25, L"ROW_DELETE - E_INVALIDARG - All Phases")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"Empty")
TEST_VARIATION(28, L"OTHER SCENARIOS - Delete no rows")
TEST_VARIATION(29, L"OTHER SCENARIOS - DBROWSTATUS_DELETED")
TEST_VARIATION(30, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(31, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(32, L"OTHER SCENARIOS - GetData")
TEST_VARIATION(33, L"OTHER SCENARIOS - GetOriginalData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(InsertRow)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowsetChange::InsertRow
//
class InsertRow : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(InsertRow,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_INSERT - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROW_INSERT - DB_E_NOTREENTRANT
int Variation_4();
// @cmember ROW_INSERT - DB_E_CANCELED
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROW_INSERT - Veto OKTODO, Listener 1
int Variation_8();
// @cmember ROW_INSERT - Veto ABOUTTODO, Listener 1
int Variation_9();
// @cmember ROW_INSERT - Veto SYNCHAFTER, Listener 2
int Variation_10();
// @cmember ROW_INSERT - Veto DIDEVENT, Listener 3
int Variation_11();
// @cmember ROW_INSERT - Veto FAILEDTODO, Listener 3
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember ROW_INSERT - UNWANTED REASON
int Variation_14();
// @cmember ROW_INSERT - UNWANTED PHASE OKTODO
int Variation_15();
// @cmember ROW_INSERT - UNWANTED PHASE ABOUTTODO
int Variation_16();
// @cmember ROW_INSERT - UNWANTED PHASE SYNCHAFTER
int Variation_17();
// @cmember ROW_INSERT - UNWANTED PHASE DIDEVENT
int Variation_18();
// @cmember ROW_INSERT - UNWANTED PHASE FAILEDTODO
int Variation_19();
// @cmember Empty
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember ROW_INSERT - E_FAIL - All Phases
int Variation_22();
// @cmember ROW_INSERT - E_OUTOFMEMORY - All Phases
int Variation_23();
// @cmember ROW_INSERT - E_INVALIDARG - All Phases
int Variation_24();
// @cmember Empty
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
int Variation_27();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_28();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_29();
// @cmember OTHER SCENARIOS - GetData
int Variation_30();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(InsertRow)
#define THE_CLASS InsertRow
BEG_TEST_CASE(InsertRow, CExecutionManager, L"Tests Notifications for IRowsetChange::InsertRow")
TEST_VARIATION(1, L"ROW_INSERT - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROW_INSERT - DB_E_NOTREENTRANT")
TEST_VARIATION(5, L"ROW_INSERT - DB_E_CANCELED")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROW_INSERT - Veto OKTODO, Listener 1")
TEST_VARIATION(9, L"ROW_INSERT - Veto ABOUTTODO, Listener 1")
TEST_VARIATION(10, L"ROW_INSERT - Veto SYNCHAFTER, Listener 2")
TEST_VARIATION(11, L"ROW_INSERT - Veto DIDEVENT, Listener 3")
TEST_VARIATION(12, L"ROW_INSERT - Veto FAILEDTODO, Listener 3")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"ROW_INSERT - UNWANTED REASON")
TEST_VARIATION(15, L"ROW_INSERT - UNWANTED PHASE OKTODO")
TEST_VARIATION(16, L"ROW_INSERT - UNWANTED PHASE ABOUTTODO")
TEST_VARIATION(17, L"ROW_INSERT - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(18, L"ROW_INSERT - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(19, L"ROW_INSERT - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(20, L"Empty")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"ROW_INSERT - E_FAIL - All Phases")
TEST_VARIATION(23, L"ROW_INSERT - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(24, L"ROW_INSERT - E_INVALIDARG - All Phases")
TEST_VARIATION(25, L"Empty")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"OTHER SCENARIOS - DB_E_BADACCESSORHANDLE")
TEST_VARIATION(28, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(29, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(30, L"OTHER SCENARIOS - GetData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(InsertRow_Bufferred)
//--------------------------------------------------------------------
// @class Test Notifications for IRowsetChange::InsertRow in Buffered Mode
//
class InsertRow_Bufferred : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(InsertRow_Bufferred,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_INSERT - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROW_INSERT - DB_E_NOTREENTRANT
int Variation_4();
// @cmember ROW_INSERT - DB_E_CANCELED
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROW_INSERT - Veto OKTODO, Listener 1
int Variation_8();
// @cmember ROW_INSERT - Veto ABOUTTODO, Listener 1
int Variation_9();
// @cmember ROW_INSERT - Veto SYNCHAFTER, Listener 2
int Variation_10();
// @cmember ROW_INSERT - Veto DIDEVENT, Listener 3
int Variation_11();
// @cmember ROW_INSERT - Veto FAILEDTODO, Listener 3
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember ROW_INSERT - UNWANTED REASON
int Variation_14();
// @cmember ROW_INSERT - UNWANTED PHASE OKTODO
int Variation_15();
// @cmember ROW_INSERT - UNWANTED PHASE ABOUTTODO
int Variation_16();
// @cmember ROW_INSERT - UNWANTED PHASE SYNCHAFTER
int Variation_17();
// @cmember ROW_INSERT - UNWANTED PHASE DIDEVENT
int Variation_18();
// @cmember ROW_INSERT - UNWANTED PHASE FAILEDTODO
int Variation_19();
// @cmember Empty
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember ROW_INSERT - E_FAIL - All Phases
int Variation_22();
// @cmember ROW_INSERT - E_OUTOFMEMORY - All Phases
int Variation_23();
// @cmember ROW_INSERT - E_INVALIDARG - All Phases
int Variation_24();
// @cmember Empty
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
int Variation_27();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_28();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_29();
// @cmember OTHER SCENARIOS - GetData
int Variation_30();
// @cmember OTHER SCENARIOS - GetOriginalData
int Variation_31();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(InsertRow_Bufferred)
#define THE_CLASS InsertRow_Bufferred
BEG_TEST_CASE(InsertRow_Bufferred, CExecutionManager, L"Test Notifications for IRowsetChange::InsertRow in Buffered Mode")
TEST_VARIATION(1, L"ROW_INSERT - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROW_INSERT - DB_E_NOTREENTRANT")
TEST_VARIATION(5, L"ROW_INSERT - DB_E_CANCELED")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROW_INSERT - Veto OKTODO, Listener 1")
TEST_VARIATION(9, L"ROW_INSERT - Veto ABOUTTODO, Listener 1")
TEST_VARIATION(10, L"ROW_INSERT - Veto SYNCHAFTER, Listener 2")
TEST_VARIATION(11, L"ROW_INSERT - Veto DIDEVENT, Listener 3")
TEST_VARIATION(12, L"ROW_INSERT - Veto FAILEDTODO, Listener 3")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"ROW_INSERT - UNWANTED REASON")
TEST_VARIATION(15, L"ROW_INSERT - UNWANTED PHASE OKTODO")
TEST_VARIATION(16, L"ROW_INSERT - UNWANTED PHASE ABOUTTODO")
TEST_VARIATION(17, L"ROW_INSERT - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(18, L"ROW_INSERT - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(19, L"ROW_INSERT - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(20, L"Empty")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"ROW_INSERT - E_FAIL - All Phases")
TEST_VARIATION(23, L"ROW_INSERT - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(24, L"ROW_INSERT - E_INVALIDARG - All Phases")
TEST_VARIATION(25, L"Empty")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"OTHER SCENARIOS - DB_E_BADACCESSORHANDLE")
TEST_VARIATION(28, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(29, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(30, L"OTHER SCENARIOS - GetData")
TEST_VARIATION(31, L"OTHER SCENARIOS - GetOriginalData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(SetData)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowsetChange::SetData
//
class SetData : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(SetData,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember COLUMN_SET - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember COLUMN_SET - DB_E_CANCELED
int Variation_4();
// @cmember COLUMN_SET - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember COLUMN_SET - Veto OKTODO
int Variation_8();
// @cmember COLUMN_SET - Veto ABOUTTODO
int Variation_9();
// @cmember COLUMN_SET - Veto SYNCHAFTER
int Variation_10();
// @cmember COLUMN_SET - Veto DIDEVENT
int Variation_11();
// @cmember COLUMN_SET - Veto FAILEDTODO
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember COLUMN_SET - UNWANTED REASON
int Variation_14();
// @cmember COLUMN_SET - UNWANTED PHASE OKTODO
int Variation_15();
// @cmember COLUMN_SET - UNWANTED PHASE ABOUTTO
int Variation_16();
// @cmember COLUMN_SET - UNWANTED PHASE SYNCHAFTER
int Variation_17();
// @cmember COLUMN_SET- UNWANTED PHASE DIDEVENT
int Variation_18();
// @cmember COLUMN_SET - UNWANTED PHASE FAILEDTODO
int Variation_19();
// @cmember Empty
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember COLUMN_SET - E_FAIL - All Phases
int Variation_22();
// @cmember COLUMN_SET - E_OUTOFMEMORY - All Phases
int Variation_23();
// @cmember COLUMN_SET - E_INVALIDARG - All Phases
int Variation_24();
// @cmember Empty
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember COLUMN_RECALCULATED - DB_E_ERRORSOCCURRED - Accept all phases
int Variation_27();
// @cmember Empty
int Variation_28();
// @cmember Empty
int Variation_29();
// @cmember COLUMN_RECALCULATED - DB_E_CANCELED
int Variation_30();
// @cmember COLUMN_RECALCULATED - DB_E_NOTREENTRANT
int Variation_31();
// @cmember Empty
int Variation_32();
// @cmember Empty
int Variation_33();
// @cmember COLUMN_RECALCULATED - Veto DIDEVENT
int Variation_34();
// @cmember Empty
int Variation_35();
// @cmember Empty
int Variation_36();
// @cmember COLUMN_RECALCULATED - UNWANTED REASON
int Variation_37();
// @cmember COLUMN_RECALCULATED - UNWANTED PHASE DIDEVENT
int Variation_38();
// @cmember Empty
int Variation_39();
// @cmember Empty
int Variation_40();
// @cmember COLUMN_RECALCULATED - E_FAIL - All Phases
int Variation_41();
// @cmember COLUMN_RECALCULATED - E_OUTOFMEMORY - All Phases
int Variation_42();
// @cmember COLUMN_RECALCULATED - E_INVALIDARG - All Phases
int Variation_43();
// @cmember Empty
int Variation_44();
// @cmember Empty
int Variation_45();
// @cmember OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
int Variation_46();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_47();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_48();
// @cmember OTHER SCENARIOS - GetData
int Variation_49();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(SetData)
#define THE_CLASS SetData
BEG_TEST_CASE(SetData, CExecutionManager, L"Tests Notifications for IRowsetChange::SetData")
TEST_VARIATION(1, L"COLUMN_SET - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"COLUMN_SET - DB_E_CANCELED")
TEST_VARIATION(5, L"COLUMN_SET - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"COLUMN_SET - Veto OKTODO")
TEST_VARIATION(9, L"COLUMN_SET - Veto ABOUTTODO")
TEST_VARIATION(10, L"COLUMN_SET - Veto SYNCHAFTER")
TEST_VARIATION(11, L"COLUMN_SET - Veto DIDEVENT")
TEST_VARIATION(12, L"COLUMN_SET - Veto FAILEDTODO")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"COLUMN_SET - UNWANTED REASON")
TEST_VARIATION(15, L"COLUMN_SET - UNWANTED PHASE OKTODO")
TEST_VARIATION(16, L"COLUMN_SET - UNWANTED PHASE ABOUTTO")
TEST_VARIATION(17, L"COLUMN_SET - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(18, L"COLUMN_SET- UNWANTED PHASE DIDEVENT")
TEST_VARIATION(19, L"COLUMN_SET - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(20, L"Empty")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"COLUMN_SET - E_FAIL - All Phases")
TEST_VARIATION(23, L"COLUMN_SET - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(24, L"COLUMN_SET - E_INVALIDARG - All Phases")
TEST_VARIATION(25, L"Empty")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"COLUMN_RECALCULATED - DB_E_ERRORSOCCURRED - Accept all phases")
TEST_VARIATION(28, L"Empty")
TEST_VARIATION(29, L"Empty")
TEST_VARIATION(30, L"COLUMN_RECALCULATED - DB_E_CANCELED")
TEST_VARIATION(31, L"COLUMN_RECALCULATED - DB_E_NOTREENTRANT")
TEST_VARIATION(32, L"Empty")
TEST_VARIATION(33, L"Empty")
TEST_VARIATION(34, L"COLUMN_RECALCULATED - Veto DIDEVENT")
TEST_VARIATION(35, L"Empty")
TEST_VARIATION(36, L"Empty")
TEST_VARIATION(37, L"COLUMN_RECALCULATED - UNWANTED REASON")
TEST_VARIATION(38, L"COLUMN_RECALCULATED - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(39, L"Empty")
TEST_VARIATION(40, L"Empty")
TEST_VARIATION(41, L"COLUMN_RECALCULATED - E_FAIL - All Phases")
TEST_VARIATION(42, L"COLUMN_RECALCULATED - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(43, L"COLUMN_RECALCULATED - E_INVALIDARG - All Phases")
TEST_VARIATION(44, L"Empty")
TEST_VARIATION(45, L"Empty")
TEST_VARIATION(46, L"OTHER SCENARIOS - DB_E_BADACCESSORHANDLE")
TEST_VARIATION(47, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(48, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(49, L"OTHER SCENARIOS - GetData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(SetData_Bufferred)
//--------------------------------------------------------------------
// @class Test Notifications for IRowsetChange::SetData in Buffered Mode
//
class SetData_Bufferred : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(SetData_Bufferred,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_FIRSTCHANGE - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROW_FIRSTCHANGE - DB_E_CANCELED
int Variation_4();
// @cmember ROW_FIRSTCHANGE - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROW_FIRSTCHANGE - Veto OKTODO
int Variation_8();
// @cmember ROW_FIRSTCHANGE - Veto ABOUTTODO
int Variation_9();
// @cmember ROW_FIRSTCHANGE - Veto SYNCHAFTER
int Variation_10();
// @cmember ROW_FIRSTCHANGE - Veto DIDEVENT
int Variation_11();
// @cmember ROW_FIRSTCHANGE - Veto FAILEDTODO
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember ROW_FIRSTCHANGE - UNWANTED REASON
int Variation_15();
// @cmember ROW_FIRSTCHANGE - UNWANTED PHASE OKTODO
int Variation_16();
// @cmember ROW_FIRSTCHANGE - UNWANTED PHASE ABOUTTODO
int Variation_17();
// @cmember ROW_FIRSTCHANGE - UNWANTED PHASE SYNCHAFTER
int Variation_18();
// @cmember ROW_FIRSTCHANGE - UNWANTED PHASE DIDEVENT
int Variation_19();
// @cmember ROW_FIRSTCHANGE - UNWANTED PHASE FAILEDTODO
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember Empty
int Variation_22();
// @cmember ROW_FIRSTCHANGE - E_FAIL - All Phases
int Variation_23();
// @cmember ROW_FIRSTCHANGE - E_OUTOFMEMORY - All Phases
int Variation_24();
// @cmember ROW_FIRSTCHANGE - E_INVALIDARG - All Phases
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember Empty
int Variation_27();
// @cmember COLUMN_SET - Accept all phases
int Variation_28();
// @cmember Empty
int Variation_29();
// @cmember Empty
int Variation_30();
// @cmember COLUMN_SET - DB_E_CANCELED
int Variation_31();
// @cmember COLUMN_SET - DB_E_NOTREENTRANT
int Variation_32();
// @cmember Empty
int Variation_33();
// @cmember Empty
int Variation_34();
// @cmember COLUMN_SET - Veto OKTODO
int Variation_35();
// @cmember COLUMN_SET - Veto ABOUTTODO
int Variation_36();
// @cmember COLUMN_SET - Veto SYNCHAFTER
int Variation_37();
// @cmember COLUMN_SET - Veto DIDEVENT
int Variation_38();
// @cmember COLUMN_SET - Veto FAILEDTODO
int Variation_39();
// @cmember Empty
int Variation_40();
// @cmember COLUMN_SET - UNWANTED REASON
int Variation_41();
// @cmember COLUMN_SET - UNWANTED PHASE OKTODO
int Variation_42();
// @cmember COLUMN_SET - UNWANTED PHASE ABOUTTO
int Variation_43();
// @cmember COLUMN_SET - UNWANTED PHASE SYNCHAFTER
int Variation_44();
// @cmember COLUMN_SET- UNWANTED PHASE DIDEVENT
int Variation_45();
// @cmember COLUMN_SET - UNWANTED PHASE FAILEDTODO
int Variation_46();
// @cmember Empty
int Variation_47();
// @cmember Empty
int Variation_48();
// @cmember COLUMN_SET - E_FAIL - All Phases
int Variation_49();
// @cmember COLUMN_SET - E_OUTOFMEMORY - All Phases
int Variation_50();
// @cmember COLUMN_SET - E_INVALIDARG - All Phases
int Variation_51();
// @cmember Empty
int Variation_52();
// @cmember Empty
int Variation_53();
// @cmember COLUMN_RECALCULATED - Accept all phases
int Variation_54();
// @cmember Empty
int Variation_55();
// @cmember Empty
int Variation_56();
// @cmember COLUMN_RECALCULATED - DB_E_CANCELED
int Variation_57();
// @cmember COLUMN_RECALCULATED - DB_E_NOTREENTRANT
int Variation_58();
// @cmember Empty
int Variation_59();
// @cmember Empty
int Variation_60();
// @cmember COLUMN_RECALCULATED - Veto DIDEVENT
int Variation_61();
// @cmember Empty
int Variation_62();
// @cmember Empty
int Variation_63();
// @cmember COLUMN_RECALCULATED - UNWANTED REASON
int Variation_64();
// @cmember COLUMN_RECALCULATED - UNWANTED PHASE DIDEVENT
int Variation_65();
// @cmember Empty
int Variation_66();
// @cmember Empty
int Variation_67();
// @cmember COLUMN_RECALCULATED - E_FAIL - All Phases
int Variation_68();
// @cmember COLUMN_RECALCULATED - E_OUTOFMEMORY - All Phases
int Variation_69();
// @cmember COLUMN_RECALCULATED - E_INVALIDARG - All Phases
int Variation_70();
// @cmember Empty
int Variation_71();
// @cmember Empty
int Variation_72();
// @cmember OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
int Variation_73();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_74();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_75();
// @cmember OTHER SCENARIOS - GetData
int Variation_76();
// @cmember OTHER SCENARIOS - GetOriginalData
int Variation_77();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(SetData_Bufferred)
#define THE_CLASS SetData_Bufferred
BEG_TEST_CASE(SetData_Bufferred, CExecutionManager, L"Test Notifications for IRowsetChange::SetData in Buffered Mode")
TEST_VARIATION(1, L"ROW_FIRSTCHANGE - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROW_FIRSTCHANGE - DB_E_CANCELED")
TEST_VARIATION(5, L"ROW_FIRSTCHANGE - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROW_FIRSTCHANGE - Veto OKTODO")
TEST_VARIATION(9, L"ROW_FIRSTCHANGE - Veto ABOUTTODO")
TEST_VARIATION(10, L"ROW_FIRSTCHANGE - Veto SYNCHAFTER")
TEST_VARIATION(11, L"ROW_FIRSTCHANGE - Veto DIDEVENT")
TEST_VARIATION(12, L"ROW_FIRSTCHANGE - Veto FAILEDTODO")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"ROW_FIRSTCHANGE - UNWANTED REASON")
TEST_VARIATION(16, L"ROW_FIRSTCHANGE - UNWANTED PHASE OKTODO")
TEST_VARIATION(17, L"ROW_FIRSTCHANGE - UNWANTED PHASE ABOUTTODO")
TEST_VARIATION(18, L"ROW_FIRSTCHANGE - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(19, L"ROW_FIRSTCHANGE - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(20, L"ROW_FIRSTCHANGE - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"Empty")
TEST_VARIATION(23, L"ROW_FIRSTCHANGE - E_FAIL - All Phases")
TEST_VARIATION(24, L"ROW_FIRSTCHANGE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(25, L"ROW_FIRSTCHANGE - E_INVALIDARG - All Phases")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"Empty")
TEST_VARIATION(28, L"COLUMN_SET - Accept all phases")
TEST_VARIATION(29, L"Empty")
TEST_VARIATION(30, L"Empty")
TEST_VARIATION(31, L"COLUMN_SET - DB_E_CANCELED")
TEST_VARIATION(32, L"COLUMN_SET - DB_E_NOTREENTRANT")
TEST_VARIATION(33, L"Empty")
TEST_VARIATION(34, L"Empty")
TEST_VARIATION(35, L"COLUMN_SET - Veto OKTODO")
TEST_VARIATION(36, L"COLUMN_SET - Veto ABOUTTODO")
TEST_VARIATION(37, L"COLUMN_SET - Veto SYNCHAFTER")
TEST_VARIATION(38, L"COLUMN_SET - Veto DIDEVENT")
TEST_VARIATION(39, L"COLUMN_SET - Veto FAILEDTODO")
TEST_VARIATION(40, L"Empty")
TEST_VARIATION(41, L"COLUMN_SET - UNWANTED REASON")
TEST_VARIATION(42, L"COLUMN_SET - UNWANTED PHASE OKTODO")
TEST_VARIATION(43, L"COLUMN_SET - UNWANTED PHASE ABOUTTO")
TEST_VARIATION(44, L"COLUMN_SET - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(45, L"COLUMN_SET- UNWANTED PHASE DIDEVENT")
TEST_VARIATION(46, L"COLUMN_SET - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(47, L"Empty")
TEST_VARIATION(48, L"Empty")
TEST_VARIATION(49, L"COLUMN_SET - E_FAIL - All Phases")
TEST_VARIATION(50, L"COLUMN_SET - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(51, L"COLUMN_SET - E_INVALIDARG - All Phases")
TEST_VARIATION(52, L"Empty")
TEST_VARIATION(53, L"Empty")
TEST_VARIATION(54, L"COLUMN_RECALCULATED - Accept all phases")
TEST_VARIATION(55, L"Empty")
TEST_VARIATION(56, L"Empty")
TEST_VARIATION(57, L"COLUMN_RECALCULATED - DB_E_CANCELED")
TEST_VARIATION(58, L"COLUMN_RECALCULATED - DB_E_NOTREENTRANT")
TEST_VARIATION(59, L"Empty")
TEST_VARIATION(60, L"Empty")
TEST_VARIATION(61, L"COLUMN_RECALCULATED - Veto DIDEVENT")
TEST_VARIATION(62, L"Empty")
TEST_VARIATION(63, L"Empty")
TEST_VARIATION(64, L"COLUMN_RECALCULATED - UNWANTED REASON")
TEST_VARIATION(65, L"COLUMN_RECALCULATED - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(66, L"Empty")
TEST_VARIATION(67, L"Empty")
TEST_VARIATION(68, L"COLUMN_RECALCULATED - E_FAIL - All Phases")
TEST_VARIATION(69, L"COLUMN_RECALCULATED - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(70, L"COLUMN_RECALCULATED - E_INVALIDARG - All Phases")
TEST_VARIATION(71, L"Empty")
TEST_VARIATION(72, L"Empty")
TEST_VARIATION(73, L"OTHER SCENARIOS - DB_E_BADACCESSORHANDLE")
TEST_VARIATION(74, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(75, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(76, L"OTHER SCENARIOS - GetData")
TEST_VARIATION(77, L"OTHER SCENARIOS - GetOriginalData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(Resynch)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowsetResynch::ResyncRows
//
class Resynch : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(Resynch,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_RESYNCH - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROW_RESYNCH - DB_E_CANCELED
int Variation_4();
// @cmember ROW_RESYNCH - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROW_RESYNCH - Veto OKTODO
int Variation_8();
// @cmember ROW_RESYNCH - Veto ABOUTTODO
int Variation_9();
// @cmember ROW_RESYNCH - Veto SYNCHAFTER
int Variation_10();
// @cmember ROW_RESYNCH - Veto DIDEVENT
int Variation_11();
// @cmember ROW_RESYNCH - Veto FAILEDTODO
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember ROW_RESYNCH - UNWANTED REASON
int Variation_15();
// @cmember ROW_RESYNCH - UNWANTED PHASE - OKTODO
int Variation_16();
// @cmember ROW_RESYNCH - UNWANTED PHASE - ABOUTTODO
int Variation_17();
// @cmember ROW_RESYNCH - UNWANTED PHASE - SYNCHAFTER
int Variation_18();
// @cmember ROW_RESYNCH - UNWANTED PHASE - DIDEVENT
int Variation_19();
// @cmember ROW_RESYNCH - UNWANTED PHASE - FAILEDTODO
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember Empty
int Variation_22();
// @cmember ROW_RESYNCH - E_FAIL - All Phases
int Variation_23();
// @cmember ROW_RESYNCH - E_OUTOFMEMORY - All Phases
int Variation_24();
// @cmember ROW_RESYNCH - E_INVALIDARG - All Phases
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember Empty
int Variation_27();
// @cmember OTHER SCENARIOS - Resynch all rows
int Variation_28();
// @cmember OTHER SCENARIOS - Resynch 2 rows, 1 changed 1 not changed
int Variation_29();
// @cmember OTHER SCENARIOS - 1 valid, 1 not valid
int Variation_30();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_31();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_32();
// @cmember OTHER SCENARIOS - GetData
int Variation_33();
// @cmember OTHER SCENARIOS - GetVisibleData
int Variation_34();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(Resynch)
#define THE_CLASS Resynch
BEG_TEST_CASE(Resynch, CExecutionManager, L"Tests Notifications for IRowsetResynch::ResyncRows")
TEST_VARIATION(1, L"ROW_RESYNCH - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROW_RESYNCH - DB_E_CANCELED")
TEST_VARIATION(5, L"ROW_RESYNCH - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROW_RESYNCH - Veto OKTODO")
TEST_VARIATION(9, L"ROW_RESYNCH - Veto ABOUTTODO")
TEST_VARIATION(10, L"ROW_RESYNCH - Veto SYNCHAFTER")
TEST_VARIATION(11, L"ROW_RESYNCH - Veto DIDEVENT")
TEST_VARIATION(12, L"ROW_RESYNCH - Veto FAILEDTODO")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"ROW_RESYNCH - UNWANTED REASON")
TEST_VARIATION(16, L"ROW_RESYNCH - UNWANTED PHASE - OKTODO")
TEST_VARIATION(17, L"ROW_RESYNCH - UNWANTED PHASE - ABOUTTODO")
TEST_VARIATION(18, L"ROW_RESYNCH - UNWANTED PHASE - SYNCHAFTER")
TEST_VARIATION(19, L"ROW_RESYNCH - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(20, L"ROW_RESYNCH - UNWANTED PHASE - FAILEDTODO")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"Empty")
TEST_VARIATION(23, L"ROW_RESYNCH - E_FAIL - All Phases")
TEST_VARIATION(24, L"ROW_RESYNCH - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(25, L"ROW_RESYNCH - E_INVALIDARG - All Phases")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"Empty")
TEST_VARIATION(28, L"OTHER SCENARIOS - Resynch all rows")
TEST_VARIATION(29, L"OTHER SCENARIOS - Resynch 2 rows, 1 changed 1 not changed")
TEST_VARIATION(30, L"OTHER SCENARIOS - 1 valid, 1 not valid")
TEST_VARIATION(31, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(32, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(33, L"OTHER SCENARIOS - GetData")
TEST_VARIATION(34, L"OTHER SCENARIOS - GetVisibleData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(Resynch_Bufferred)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowsetResynch_Bufferred::ResyncRows
//
class Resynch_Bufferred : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(Resynch_Bufferred,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_RESYNCH - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROW_RESYNCH - DB_E_CANCELED
int Variation_4();
// @cmember ROW_RESYNCH - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROW_RESYNCH - Veto OKTODO
int Variation_8();
// @cmember ROW_RESYNCH - Veto ABOUTTODO
int Variation_9();
// @cmember ROW_RESYNCH - Veto SYNCHAFTER
int Variation_10();
// @cmember ROW_RESYNCH - Veto DIDEVENT
int Variation_11();
// @cmember ROW_RESYNCH - Veto FAILEDTODO
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember ROW_RESYNCH - UNWANTED REASON
int Variation_15();
// @cmember ROW_RESYNCH - UNWANTED PHASE - OKTODO
int Variation_16();
// @cmember ROW_RESYNCH - UNWANTED PHASE - ABOUTTODO
int Variation_17();
// @cmember ROW_RESYNCH - UNWANTED PHASE - SYNCHAFTER
int Variation_18();
// @cmember ROW_RESYNCH - UNWANTED PHASE - DIDEVENT
int Variation_19();
// @cmember ROW_RESYNCH - UNWANTED PHASE - FAILEDTODO
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember Empty
int Variation_22();
// @cmember ROW_RESYNCH - E_FAIL - All Phases
int Variation_23();
// @cmember ROW_RESYNCH - E_OUTOFMEMORY - All Phases
int Variation_24();
// @cmember ROW_RESYNCH - E_INVALIDARG - All Phases
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember Empty
int Variation_27();
// @cmember OTHER SCENARIOS - Resynch_Bufferred all rows
int Variation_28();
// @cmember OTHER SCENARIOS - Resynch_Bufferred 2 rows, 1 changed 1 not changed
int Variation_29();
// @cmember OTHER SCENARIOS - 1 valid, 1 not valid
int Variation_30();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_31();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_32();
// @cmember OTHER SCENARIOS - GetData
int Variation_33();
// @cmember OTHER SCENARIOS - GetVisibleData
int Variation_34();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(Resynch_Bufferred)
#define THE_CLASS Resynch_Bufferred
BEG_TEST_CASE(Resynch_Bufferred, CExecutionManager, L"Tests Notifications for IRowsetResynch_Bufferred::ResyncRows")
TEST_VARIATION(1, L"ROW_RESYNCH - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROW_RESYNCH - DB_E_CANCELED")
TEST_VARIATION(5, L"ROW_RESYNCH - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROW_RESYNCH - Veto OKTODO")
TEST_VARIATION(9, L"ROW_RESYNCH - Veto ABOUTTODO")
TEST_VARIATION(10, L"ROW_RESYNCH - Veto SYNCHAFTER")
TEST_VARIATION(11, L"ROW_RESYNCH - Veto DIDEVENT")
TEST_VARIATION(12, L"ROW_RESYNCH - Veto FAILEDTODO")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"ROW_RESYNCH - UNWANTED REASON")
TEST_VARIATION(16, L"ROW_RESYNCH - UNWANTED PHASE - OKTODO")
TEST_VARIATION(17, L"ROW_RESYNCH - UNWANTED PHASE - ABOUTTODO")
TEST_VARIATION(18, L"ROW_RESYNCH - UNWANTED PHASE - SYNCHAFTER")
TEST_VARIATION(19, L"ROW_RESYNCH - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(20, L"ROW_RESYNCH - UNWANTED PHASE - FAILEDTODO")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"Empty")
TEST_VARIATION(23, L"ROW_RESYNCH - E_FAIL - All Phases")
TEST_VARIATION(24, L"ROW_RESYNCH - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(25, L"ROW_RESYNCH - E_INVALIDARG - All Phases")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"Empty")
TEST_VARIATION(28, L"OTHER SCENARIOS - Resynch_Bufferred all rows")
TEST_VARIATION(29, L"OTHER SCENARIOS - Resynch_Bufferred 2 rows, 1 changed 1 not changed")
TEST_VARIATION(30, L"OTHER SCENARIOS - 1 valid, 1 not valid")
TEST_VARIATION(31, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(32, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(33, L"OTHER SCENARIOS - GetData")
TEST_VARIATION(34, L"OTHER SCENARIOS - GetVisibleData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(Undo)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowsetUpdate::Undo
//
class Undo : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(Undo,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_UNDOCHANGE - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROW_UNDOCHANGE - DB_E_CANCELED
int Variation_4();
// @cmember ROW_UNDOCHANGE - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROW_UNDOCHANGE - Veto OKTODO
int Variation_8();
// @cmember ROW_UNDOCHANGE - Veto ABOUTTODO
int Variation_9();
// @cmember ROW_UNDOCHANGE - Veto SYNCHAFTER
int Variation_10();
// @cmember ROW_UNDOCHANGE - Veto DIDEVENT
int Variation_11();
// @cmember ROW_UNDOCHANGE - Veto FAILEDTODO
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember ROW_UNDOCHANGE - UNWANTED REASON
int Variation_15();
// @cmember ROW_UNDOCHANGE - UNWANTED PHASE OKTODO
int Variation_16();
// @cmember ROW_UNDOCHANGE - UNWANTED PHASE ABOUTTODO
int Variation_17();
// @cmember ROW_UNDOCHANGE - UNWANTED PHASE SYNCHAFTER
int Variation_18();
// @cmember ROW_UNDOCHANGE - UNWANTED PHASE DIDEVENT
int Variation_19();
// @cmember ROW_UNDOCHANGE - UNWANTED PHASE FAILEDTODO
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember Empty
int Variation_22();
// @cmember ROW_UNDOCHANGE - E_FAIL - All Phases
int Variation_23();
// @cmember ROW_UNDOCHANGE - E_OUTOFMEMORY - All Phases
int Variation_24();
// @cmember ROW_UNDOCHANGE - E_INVALIDARG - All Phases
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember Empty
int Variation_27();
// @cmember ROW_UNDOINSERT - Accept all phases
int Variation_28();
// @cmember Empty
int Variation_29();
// @cmember Empty
int Variation_30();
// @cmember ROW_UNDOINSERT - DB_E_CANCELED
int Variation_31();
// @cmember ROW_UNDOINSERT - DB_E_NOTREENTRANT
int Variation_32();
// @cmember Empty
int Variation_33();
// @cmember Empty
int Variation_34();
// @cmember ROW_UNDOINSERT - Veto OKTODO
int Variation_35();
// @cmember ROW_UNDOINSERT - Veto ABOUTTODO
int Variation_36();
// @cmember ROW_UNDOINSERT - Veto SYNCHAFTER
int Variation_37();
// @cmember ROW_UNDOINSERT - Veto DIDEVENT
int Variation_38();
// @cmember ROW_UNDOINSERT - Veto FAILEDTODO
int Variation_39();
// @cmember Empty
int Variation_40();
// @cmember ROW_UNDOINSERT - UNWANTED REASON
int Variation_41();
// @cmember ROW_UNDOINSERT - UNWANTED PHASE OKTODO
int Variation_42();
// @cmember ROW_UNDOINSERT - UNWANTED PHASE ABOUTTO
int Variation_43();
// @cmember ROW_UNDOINSERT - UNWANTED PHASE SYNCHAFTER
int Variation_44();
// @cmember ROW_UNDOINSERT- UNWANTED PHASE DIDEVENT
int Variation_45();
// @cmember ROW_UNDOINSERT - UNWANTED PHASE FAILEDTODO
int Variation_46();
// @cmember Empty
int Variation_47();
// @cmember Empty
int Variation_48();
// @cmember ROW_UNDOINSERT - E_FAIL - All Phases
int Variation_49();
// @cmember ROW_UNDOINSERT - E_OUTOFMEMORY - All Phases
int Variation_50();
// @cmember ROW_UNDOINSERT - E_INVALIDARG - All Phases
int Variation_51();
// @cmember Empty
int Variation_52();
// @cmember Empty
int Variation_53();
// @cmember ROW_UNDODELETE - Accept all phases
int Variation_54();
// @cmember Empty
int Variation_55();
// @cmember Empty
int Variation_56();
// @cmember ROW_UNDODELETE - DB_E_CANCELED
int Variation_57();
// @cmember ROW_UNDODELETE - DB_E_NOTREENTRANT
int Variation_58();
// @cmember Empty
int Variation_59();
// @cmember Empty
int Variation_60();
// @cmember ROW_UNDODELETE - Veto OKTODO
int Variation_61();
// @cmember ROW_UNDODELETE - Veto ABOUTTODO
int Variation_62();
// @cmember ROW_UNDODELETE - Veto SYNCHAFTER
int Variation_63();
// @cmember ROW_UNDODELETE - Veto DIDEVENT
int Variation_64();
// @cmember ROW_UNDODELETE - Veto FAILEDTODO
int Variation_65();
// @cmember Empty
int Variation_66();
// @cmember Empty
int Variation_67();
// @cmember ROW_UNDODELETE - UNWANTED REASON
int Variation_68();
// @cmember ROW_UNDODELETE - UNWANTED PHASE OKTODO
int Variation_69();
// @cmember ROW_UNDODELETE - UNWANTED PHASE ABOUTTODO
int Variation_70();
// @cmember ROW_UNDODELETE - UNWANTED PHASE SYNCHAFTER
int Variation_71();
// @cmember ROW_UNDODELETE - UNWANTED PHASE DIDEVENT
int Variation_72();
// @cmember ROW_UNDODELETE - UNWANTED PHASE FAILEDTODO
int Variation_73();
// @cmember Empty
int Variation_74();
// @cmember Empty
int Variation_75();
// @cmember ROW_UNDODELETE - E_FAIL - All Phases
int Variation_76();
// @cmember ROW_UNDODELETE - E_OUTOFMEMORY - All Phases
int Variation_77();
// @cmember ROW_UNDODELETE - E_INVALIDARG - All Phases
int Variation_78();
// @cmember Empty
int Variation_79();
// @cmember Empty
int Variation_80();
// @cmember OTHER SCENARIOS - Undo unchanged row
int Variation_81();
// @cmember OTHER SCENARIOS - Undo all rows
int Variation_82();
// @cmember OTHER SCENARIOS - Undo changed and unchanged
int Variation_83();
// @cmember Empty
int Variation_84();
// @cmember OTHER SCENARIOS - Verify Undo clears the FIRSTCHANGE status
int Variation_85();
// @cmember Empty
int Variation_86();
// @cmember OTHER SCENARIOS - DBROWSTATUS_E_INVALID
int Variation_87();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_88();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_89();
// @cmember OTHER SCENARIOS - GetData
int Variation_90();
// @cmember OTHER SCENARIOS - GetOriginalData
int Variation_91();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(Undo)
#define THE_CLASS Undo
BEG_TEST_CASE(Undo, CExecutionManager, L"Tests Notifications for IRowsetUpdate::Undo")
TEST_VARIATION(1, L"ROW_UNDOCHANGE - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROW_UNDOCHANGE - DB_E_CANCELED")
TEST_VARIATION(5, L"ROW_UNDOCHANGE - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROW_UNDOCHANGE - Veto OKTODO")
TEST_VARIATION(9, L"ROW_UNDOCHANGE - Veto ABOUTTODO")
TEST_VARIATION(10, L"ROW_UNDOCHANGE - Veto SYNCHAFTER")
TEST_VARIATION(11, L"ROW_UNDOCHANGE - Veto DIDEVENT")
TEST_VARIATION(12, L"ROW_UNDOCHANGE - Veto FAILEDTODO")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"ROW_UNDOCHANGE - UNWANTED REASON")
TEST_VARIATION(16, L"ROW_UNDOCHANGE - UNWANTED PHASE OKTODO")
TEST_VARIATION(17, L"ROW_UNDOCHANGE - UNWANTED PHASE ABOUTTODO")
TEST_VARIATION(18, L"ROW_UNDOCHANGE - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(19, L"ROW_UNDOCHANGE - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(20, L"ROW_UNDOCHANGE - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"Empty")
TEST_VARIATION(23, L"ROW_UNDOCHANGE - E_FAIL - All Phases")
TEST_VARIATION(24, L"ROW_UNDOCHANGE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(25, L"ROW_UNDOCHANGE - E_INVALIDARG - All Phases")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"Empty")
TEST_VARIATION(28, L"ROW_UNDOINSERT - Accept all phases")
TEST_VARIATION(29, L"Empty")
TEST_VARIATION(30, L"Empty")
TEST_VARIATION(31, L"ROW_UNDOINSERT - DB_E_CANCELED")
TEST_VARIATION(32, L"ROW_UNDOINSERT - DB_E_NOTREENTRANT")
TEST_VARIATION(33, L"Empty")
TEST_VARIATION(34, L"Empty")
TEST_VARIATION(35, L"ROW_UNDOINSERT - Veto OKTODO")
TEST_VARIATION(36, L"ROW_UNDOINSERT - Veto ABOUTTODO")
TEST_VARIATION(37, L"ROW_UNDOINSERT - Veto SYNCHAFTER")
TEST_VARIATION(38, L"ROW_UNDOINSERT - Veto DIDEVENT")
TEST_VARIATION(39, L"ROW_UNDOINSERT - Veto FAILEDTODO")
TEST_VARIATION(40, L"Empty")
TEST_VARIATION(41, L"ROW_UNDOINSERT - UNWANTED REASON")
TEST_VARIATION(42, L"ROW_UNDOINSERT - UNWANTED PHASE OKTODO")
TEST_VARIATION(43, L"ROW_UNDOINSERT - UNWANTED PHASE ABOUTTO")
TEST_VARIATION(44, L"ROW_UNDOINSERT - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(45, L"ROW_UNDOINSERT- UNWANTED PHASE DIDEVENT")
TEST_VARIATION(46, L"ROW_UNDOINSERT - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(47, L"Empty")
TEST_VARIATION(48, L"Empty")
TEST_VARIATION(49, L"ROW_UNDOINSERT - E_FAIL - All Phases")
TEST_VARIATION(50, L"ROW_UNDOINSERT - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(51, L"ROW_UNDOINSERT - E_INVALIDARG - All Phases")
TEST_VARIATION(52, L"Empty")
TEST_VARIATION(53, L"Empty")
TEST_VARIATION(54, L"ROW_UNDODELETE - Accept all phases")
TEST_VARIATION(55, L"Empty")
TEST_VARIATION(56, L"Empty")
TEST_VARIATION(57, L"ROW_UNDODELETE - DB_E_CANCELED")
TEST_VARIATION(58, L"ROW_UNDODELETE - DB_E_NOTREENTRANT")
TEST_VARIATION(59, L"Empty")
TEST_VARIATION(60, L"Empty")
TEST_VARIATION(61, L"ROW_UNDODELETE - Veto OKTODO")
TEST_VARIATION(62, L"ROW_UNDODELETE - Veto ABOUTTODO")
TEST_VARIATION(63, L"ROW_UNDODELETE - Veto SYNCHAFTER")
TEST_VARIATION(64, L"ROW_UNDODELETE - Veto DIDEVENT")
TEST_VARIATION(65, L"ROW_UNDODELETE - Veto FAILEDTODO")
TEST_VARIATION(66, L"Empty")
TEST_VARIATION(67, L"Empty")
TEST_VARIATION(68, L"ROW_UNDODELETE - UNWANTED REASON")
TEST_VARIATION(69, L"ROW_UNDODELETE - UNWANTED PHASE OKTODO")
TEST_VARIATION(70, L"ROW_UNDODELETE - UNWANTED PHASE ABOUTTODO")
TEST_VARIATION(71, L"ROW_UNDODELETE - UNWANTED PHASE SYNCHAFTER")
TEST_VARIATION(72, L"ROW_UNDODELETE - UNWANTED PHASE DIDEVENT")
TEST_VARIATION(73, L"ROW_UNDODELETE - UNWANTED PHASE FAILEDTODO")
TEST_VARIATION(74, L"Empty")
TEST_VARIATION(75, L"Empty")
TEST_VARIATION(76, L"ROW_UNDODELETE - E_FAIL - All Phases")
TEST_VARIATION(77, L"ROW_UNDODELETE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(78, L"ROW_UNDODELETE - E_INVALIDARG - All Phases")
TEST_VARIATION(79, L"Empty")
TEST_VARIATION(80, L"Empty")
TEST_VARIATION(81, L"OTHER SCENARIOS - Undo unchanged row")
TEST_VARIATION(82, L"OTHER SCENARIOS - Undo all rows")
TEST_VARIATION(83, L"OTHER SCENARIOS - Undo changed and unchanged")
TEST_VARIATION(84, L"Empty")
TEST_VARIATION(85, L"OTHER SCENARIOS - Verify Undo clears the FIRSTCHANGE status")
TEST_VARIATION(86, L"Empty")
TEST_VARIATION(87, L"OTHER SCENARIOS - DBROWSTATUS_E_INVALID")
TEST_VARIATION(88, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(89, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(90, L"OTHER SCENARIOS - GetData")
TEST_VARIATION(91, L"OTHER SCENARIOS - GetOriginalData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// {{ TCW_TEST_CASE_MAP(Update)
//--------------------------------------------------------------------
// @class Tests Notifications for IRowsetUpdate::Update
//
class Update : public CExecutionManager {
private:
// @cmember Static array of variations
DECLARE_TEST_CASE_DATA();
public:
// {{ TCW_DECLARE_FUNCS
// @cmember Execution Routine
DECLARE_TEST_CASE_FUNCS(Update,CExecutionManager);
// }} TCW_DECLARE_FUNCS_END
// @cmember Initialization Routine
virtual BOOL Init();
// @cmember Termination Routine
virtual BOOL Terminate();
// {{ TCW_TESTVARS()
// @cmember ROW_UPDATE - Accept all phases
int Variation_1();
// @cmember Empty
int Variation_2();
// @cmember Empty
int Variation_3();
// @cmember ROW_UPDATE - DB_E_CANCELED
int Variation_4();
// @cmember ROW_UPDATE - DB_E_NOTREENTRANT
int Variation_5();
// @cmember Empty
int Variation_6();
// @cmember Empty
int Variation_7();
// @cmember ROW_UPDATE - Veto OKTODO
int Variation_8();
// @cmember ROW_UPDATE - Veto ABOUTTODO
int Variation_9();
// @cmember ROW_UPDATE - Veto SYNCHAFTER
int Variation_10();
// @cmember ROW_UPDATE - Veto DIDEVENT
int Variation_11();
// @cmember ROW_UPDATE - Veto FAILEDTODO
int Variation_12();
// @cmember Empty
int Variation_13();
// @cmember Empty
int Variation_14();
// @cmember ROW_UPDATE - UNWANTED REASON
int Variation_15();
// @cmember ROW_UPDATE - UNWANTED PHASE - OKTODO
int Variation_16();
// @cmember ROW_UPDATE - UNWANTED PHASE - ABOUTTODO
int Variation_17();
// @cmember ROW_UPDATE - UNWANTED PHASE - SYNCHAFTER
int Variation_18();
// @cmember ROW_UPDATE - UNWANTED PHASE - DIDEVENT
int Variation_19();
// @cmember ROW_UPDATE - UNWANTED PHASE - FAILEDTODO
int Variation_20();
// @cmember Empty
int Variation_21();
// @cmember Empty
int Variation_22();
// @cmember ROW_UPDATE - E_FAIL - All Phases
int Variation_23();
// @cmember ROW_UPDATE - E_OUTOFMEMORY - All Phases
int Variation_24();
// @cmember ROW_UPDATE - E_INVALIDARG - All Phases
int Variation_25();
// @cmember Empty
int Variation_26();
// @cmember Empty
int Variation_27();
// @cmember OTHER SCENARIOS - Update all [no changes]
int Variation_28();
// @cmember OTHER SCENARIOS - Update all [changes]
int Variation_29();
// @cmember OTHER SCENARIOS - Update changed and unchanged
int Variation_30();
// @cmember Empty
int Variation_31();
// @cmember OTHER SCENARIOS - Verify Update clears FIRSTCHANGE status
int Variation_32();
// @cmember Empty
int Variation_33();
// @cmember OTHER SCENARIOS - DBROWSTATUS_E_INVALID
int Variation_34();
// @cmember OTHER SCENARIOS - EmptyRowset
int Variation_35();
// @cmember OTHER SCENARIOS - Add/Remove Listeners
int Variation_36();
// @cmember OTHER SCENARIOS - GetData
int Variation_37();
// @cmember OTHER SCENARIOS - GetOriginalData
int Variation_38();
// }} TCW_TESTVARS_END
};
// {{ TCW_TESTCASE(Update)
#define THE_CLASS Update
BEG_TEST_CASE(Update, CExecutionManager, L"Tests Notifications for IRowsetUpdate::Update")
TEST_VARIATION(1, L"ROW_UPDATE - Accept all phases")
TEST_VARIATION(2, L"Empty")
TEST_VARIATION(3, L"Empty")
TEST_VARIATION(4, L"ROW_UPDATE - DB_E_CANCELED")
TEST_VARIATION(5, L"ROW_UPDATE - DB_E_NOTREENTRANT")
TEST_VARIATION(6, L"Empty")
TEST_VARIATION(7, L"Empty")
TEST_VARIATION(8, L"ROW_UPDATE - Veto OKTODO")
TEST_VARIATION(9, L"ROW_UPDATE - Veto ABOUTTODO")
TEST_VARIATION(10, L"ROW_UPDATE - Veto SYNCHAFTER")
TEST_VARIATION(11, L"ROW_UPDATE - Veto DIDEVENT")
TEST_VARIATION(12, L"ROW_UPDATE - Veto FAILEDTODO")
TEST_VARIATION(13, L"Empty")
TEST_VARIATION(14, L"Empty")
TEST_VARIATION(15, L"ROW_UPDATE - UNWANTED REASON")
TEST_VARIATION(16, L"ROW_UPDATE - UNWANTED PHASE - OKTODO")
TEST_VARIATION(17, L"ROW_UPDATE - UNWANTED PHASE - ABOUTTODO")
TEST_VARIATION(18, L"ROW_UPDATE - UNWANTED PHASE - SYNCHAFTER")
TEST_VARIATION(19, L"ROW_UPDATE - UNWANTED PHASE - DIDEVENT")
TEST_VARIATION(20, L"ROW_UPDATE - UNWANTED PHASE - FAILEDTODO")
TEST_VARIATION(21, L"Empty")
TEST_VARIATION(22, L"Empty")
TEST_VARIATION(23, L"ROW_UPDATE - E_FAIL - All Phases")
TEST_VARIATION(24, L"ROW_UPDATE - E_OUTOFMEMORY - All Phases")
TEST_VARIATION(25, L"ROW_UPDATE - E_INVALIDARG - All Phases")
TEST_VARIATION(26, L"Empty")
TEST_VARIATION(27, L"Empty")
TEST_VARIATION(28, L"OTHER SCENARIOS - Update all [no changes]")
TEST_VARIATION(29, L"OTHER SCENARIOS - Update all [changes]")
TEST_VARIATION(30, L"OTHER SCENARIOS - Update changed and unchanged")
TEST_VARIATION(31, L"Empty")
TEST_VARIATION(32, L"OTHER SCENARIOS - Verify Update clears FIRSTCHANGE status")
TEST_VARIATION(33, L"Empty")
TEST_VARIATION(34, L"OTHER SCENARIOS - DBROWSTATUS_E_INVALID")
TEST_VARIATION(35, L"OTHER SCENARIOS - EmptyRowset")
TEST_VARIATION(36, L"OTHER SCENARIOS - Add/Remove Listeners")
TEST_VARIATION(37, L"OTHER SCENARIOS - GetData")
TEST_VARIATION(38, L"OTHER SCENARIOS - GetOriginalData")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END
// }} END_DECLARE_TEST_CASES()
// {{ TCW_TESTMODULE(ThisModule)
TEST_MODULE(18, ThisModule, gwszModuleDescrip)
TEST_CASE(1, Release)
TEST_CASE(2, GetNextRows)
TEST_CASE(3, ReleaseRows)
TEST_CASE(4, RestartPosition)
TEST_CASE(5, Seek)
TEST_CASE(6, GetRowsAt)
TEST_CASE(7, GetRowsByBookmark)
TEST_CASE(8, GetRowsAtRatio)
TEST_CASE(9, DeleteRows)
TEST_CASE(10, DeleteRows_Bufferred)
TEST_CASE(11, InsertRow)
TEST_CASE(12, InsertRow_Bufferred)
TEST_CASE(13, SetData)
TEST_CASE(14, SetData_Bufferred)
TEST_CASE(15, Resynch)
TEST_CASE(16, Resynch_Bufferred)
TEST_CASE(17, Undo)
TEST_CASE(18, Update)
END_TEST_MODULE()
// }} TCW_TESTMODULE_END
// {{ TCW_TC_PROTOTYPE(Release)
//*-----------------------------------------------------------------------
//| Test Case: Release - Tests Notifications for IRowset::Release
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL Release::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
if(CreateRowset(DEFAULT_ROWSET)==S_OK)
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_RELEASE - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::Release() {} }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_RELEASE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_4()
{
//Cannot "successfully" Veto DIDEVENT, so there is no use trying to
//use the rowset after Release() since it will no longer be valid
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {L1.ROWSET_RELEASE.DIDEVENT.RETURN_VETO } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_RELEASE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_5()
{
//This really isn't a good senario to be testing DB_E_NOTREENTRANT
//Once the rowset sends DIDEVENT for IRowset::Release() its fairly dangerous
//to do anything!!
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {L1.ROWSET_RELEASE.DIDEVENT.RETURN_ACCEPT } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_RELEASE - Veto DIDEVENT, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_8()
{
//Cannot "successfully" Veto DIDEVENT, so there is no use trying to
//use the rowset after Release() since it will no longer be valid
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {L1.ROWSET_RELEASE.DIDEVENT.RETURN_VETO } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_9()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_10()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_RELEASE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {L1.ROWSET_RELEASE.DIDEVENT.RETURN_UNWANTEDREASON } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_RELEASE - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {L1.ROWSET_RELEASE.DIDEVENT.RETURN_UNWANTEDPHASE } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_RELEASE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {L1.ROWSET_RELEASE.DIDEVENT.RETURN_EFAIL } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_RELEASE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {L1.ROWSET_RELEASE.DIDEVENT.RETURN_EOUTOFMEMORY } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_RELEASE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {L1.ROWSET_RELEASE.DIDEVENT.RETURN_EINVALIDARG } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_18()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_19()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - AddRef - Release - no notifications
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::AddRef() {} "
L" IRowset::Release() {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_21()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {L1.ROWSET_RELEASE.DIDEVENT.RETURN_ACCEPT } "
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {"
// L" L1.ROWSET_RELEASE.DIDEVENT.RETURN_UNADVISE "
// L" L2.ROWSET_RELEASE.DIDEVENT.RETURN_UNADVISE "
L" }"
L" }"
L" }"
L"}";
//NOTE: On ROWSET_RELEASE notification the rowset pointer is already released.
//So trying to QI for IConnectionPointContainer to advise/unadvise listeners may crash
//and is considered a user programming error...
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Release::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::Release() "
L" {"
// L" L1.ROWSET_RELEASE.DIDEVENT.RETURN_ADVISE "
// L" L2.ROWSET_RELEASE.DIDEVENT.RETURN_ADVISE "
L" }"
L" }"
L" }"
L"}";
//NOTE: On ROWSET_RELEASE notification the rowset pointer is already released.
//So trying to QI for IConnectionPointContainer to advise/unadvise listeners may crash
//and is considered a user programming error...
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL Release::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(GetNextRows)
//*-----------------------------------------------------------------------
//| Test Case: GetNextRows - Tests Notifications for IRowset::GetNextRows
//| Created: 09/27/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL GetNextRows::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
if(CreateRowset(DEFAULT_ROWSET)==S_OK)
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - SINGLEROW - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) {} }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - MULTIPLEROWS - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_2()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B,C) {} } "
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_4()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_5()
{
//Verify the FetchPosition did not change when the Veto occurs.
//Obtain the first row and veto. If method actually succeeds, the next
//GetNextRows will fail since it thinks that row has already been retreived...
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A) "
L" {L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO} "
L" IRowset::GetNextRows(A) "
L" {L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_ACCEPT} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, DEFAULT_ROWSET));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_6()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.IRowset::GetNextRows(C,D,DB_E_NOTREENTRANT) {} }"
L" } "
L" } "
L"} ";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT - Non-notification method
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_7()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
// L" {L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.IColumnsInfo::GetColumnInfo(DB_E_NOTREENTRANT){}}"
L" {L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.Thread{IColumnsInfo::GetColumnInfo(DB_E_NOTREENTRANT){}} }"
L" } "
L" } "
L"} ";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_8()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto OKTODO, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_9()
{
//Have L1 VETO the change on the OKTODO phase
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO} "
L" } "
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto ABOUTTODO, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_10()
{
//Have L1 VETO the change on the ABOUTTODO phase
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO} "
L" } "
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto SYNCHAFTER, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_11()
{
//Have L1 VETO the change on the SYNCHAFTER phase
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {L1.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_VETO} "
L" } "
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto DIDEVENT, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_12()
{
//Have L1 VETO the change on the DIDEVENT phase
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_VETO} "
L" } "
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto FAILEDTODO, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_13()
{
//Have L1 VETO the change on the OKTODO phase
//Then try and have it VETO the FAILEDTODO phase as well!
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" L1.ROWSET_FETCHPOSITIONCHANGE.FAILEDTODO.RETURN_VETO "
L" } "
L" } "
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, DEFAULT_ROWSET));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto OKTODO, Listener 2
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_14()
{
//Have L2 VETO the change on the OKTODO phase
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {L2.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto ABOUTTODO, Listener 2
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_15()
{
//Have L2 VETO the change on the ABOUTTODO phase
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto SYNCHAFTER, Listener 3
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_16()
{
//Have L3 VETO the change on the SYNCHAFTER phase
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_VETO} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_17()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_18()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {L3.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_UNWANTEDREASON} "
L" IRowset::GetNextRows(B) {} "
L" } "
L" } "
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {L3.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_UNWANTEDPHASE} "
L" IRowset::GetNextRows(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_21()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {L3.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_UNWANTEDPHASE} "
L" IRowset::GetNextRows(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_UNWANTEDPHASE} "
L" IRowset::GetNextRows(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - DIDENVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {L3.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_UNWANTEDPHASE} "
L" IRowset::GetNextRows(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L3.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" L3.ROWSET_FETCHPOSITIONCHANGE.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowset::GetNextRows(B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, DEFAULT_ROWSET));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_25()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_27()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_EFAIL "
L" L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_EFAIL "
L" L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowset::GetNextRows(B) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_EOUTOFMEMORY "
L" L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowset::GetNextRows(B) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_EINVALIDARG "
L" L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_EINVALIDARG "
L" L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowset::GetNextRows(B) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_30()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_31()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - SINGLEROW - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_32()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) {} }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - MULTIPLEROWS - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_33()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B,C) {} }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_34()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_35()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_36()
{
//Cannot "successfully" veto DIDEVENT, so there is really nothing
//to test on the Veto, besides making sure they are valid row
//handles, which is the purpose of the GetData's
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) "
L" {L3.ROW_ACTIVATE.DIDEVENT.RETURN_VETO} "
L" IRowset::GetData(A) {} "
L" IRowset::GetData(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_37()
{
//Have L1 Call GetNextRows on the DIDEVENT phase
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {"
L" L3.ROW_ACTIVATE.DIDEVENT.IRowset::GetNextRows(C,D,DB_E_NOTREENTRANT) {} "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_38()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_39()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - Veto DIDEVENT, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_40()
{
//Have L1 VETO the change on the DIDEVENT phase
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A,B) "
L" {"
L" L3.ROW_ACTIVATE.DIDEVENT.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_41()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_42()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_43()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {L3.ROW_ACTIVATE.DIDEVENT.RETURN_UNWANTEDREASON} "
L" IRowset::GetNextRows(C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_44()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {L3.ROW_ACTIVATE.DIDEVENT.RETURN_UNWANTEDPHASE} "
L" IRowset::GetNextRows(C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_45()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_46()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_47()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowset::GetNextRows(B) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_48()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowset::GetNextRows(B) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_49()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowset::GetNextRows(B) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_50()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_51()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Fetch no rows - no notifications
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_52()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows() "
L" { "
L" } "
L" IRowset::GetNextRows() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Fetch A, Fetch A again
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_53()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" } "
L" IRowset::RestartPosition() {} "
L" IRowset::GetNextRows(A) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Fetch A, Fetch A,B
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_54()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" } "
L" IRowset::RestartPosition() {} "
L" IRowset::GetNextRows(A,B) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Fetch A, ReleaseRows A, Fetch A
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_55()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" } "
L" IRowset::ReleaseRows(A) {} "
L" IRowset::RestartPosition() {} "
L" IRowset::GetNextRows(A) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_56()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_S_ENDOFROWSET - 1 more than in rowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_57()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(DB_S_ENDOFROWSET) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_S_ENDOFROWSET - 1 more at end of rowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_58()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(DB_S_ENDOFROWSET) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" IRowset::GetNextRows(A, DB_S_ENDOFROWSET) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_S_ENDOFROWSET - Stepping backward
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_59()
{
//TODO need some way to step backward?
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(DB_S_ENDOFROWSET) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_60()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_E_BADSTARTPOSITION
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_61()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A, DB_E_BADSTARTPOSITION) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(62)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_62()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(E_INVALIDARG) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(63)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_63()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(DB_S_ENDOFROWSET) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(64)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_64()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_UNADVISE "
L" } "
L" IRowset::GetNextRows(B) "
L" { "
L" L3.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_UNADVISE "
L" } "
L" IRowset::GetNextRows(C) "
L" { "
L" L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(65)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_65()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" {"
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_ADVISE "
L" } "
L" IRowset::GetNextRows(B) "
L" { "
L" L3.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_ADVISE "
L" } "
L" IRowset::GetNextRows(C) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(66)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetNextRows::Variation_66()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {IRowset::GetNextRows(A) "
L" { "
L" } "
L" IRowset::GetNextRows(B) "
L" {"
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.IRowset::GetData(A) {} "
L" L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.IRowset::GetData(A) {} "
L" L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.IRowset::GetData(A) {} "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.IRowset::GetData(A) {} "
L" } "
L" IRowset::GetNextRows(C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.IRowset::GetData(B) {} "
L" L2.ROW_ACTIVATE.DIDEVENT.IRowset::GetData(A) {} "
L" L3.ROW_ACTIVATE.DIDEVENT.IRowset::GetData(B) {} "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL GetNextRows::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(ReleaseRows)
//*-----------------------------------------------------------------------
//| Test Case: ReleaseRows - Tests Notifications for IRowset::ReleaseRows
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL ReleaseRows::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
if(CreateRowset(DEFAULT_ROWSET)==S_OK)
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - SINGLEROW - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A) {} "
L" IRowset::ReleaseRows(A) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - MULTIPLEROWS - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_2()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowset::ReleaseRows(A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_4()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - DB_E_CANCELED - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_5()
{
//Cannot "sucessfully" Veto a DIDEVENT reason, so just make sure the row
//handle is invalid after a veto of ROW_RELEASE
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A) {} "
L" IRowset::ReleaseRows(A) "
L" { "
L" L1.ROW_RELEASE.DIDEVENT.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - DB_E_NOTREENTRANT - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_6()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A) {} "
L" IRowset::ReleaseRows(A) { L1.ROW_RELEASE.DIDEVENT.IRowset::ReleaseRows(A, DB_E_NOTREENTRANT) {} } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_8()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - Veto DIDEVENT, Listener 2
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A) {} "
L" IRowset::ReleaseRows(A) { L2.ROW_RELEASE.DIDEVENT.RETURN_VETO } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_10()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_11()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A) { L1.ROW_RELEASE.DIDEVENT.RETURN_UNWANTEDREASON } "
L" IRowset::ReleaseRows(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_13()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A) { L1.ROW_RELEASE.DIDEVENT.RETURN_UNWANTEDPHASE } "
L" IRowset::ReleaseRows(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_15()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A) { L1.ROW_RELEASE.DIDEVENT.RETURN_EFAIL } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A) { L1.ROW_RELEASE.DIDEVENT.RETURN_EOUTOFMEMORY } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_RELEASE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A) { L1.ROW_RELEASE.DIDEVENT.RETURN_EINVALIDARG } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_19()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_20()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Release 0 rows
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_21()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows() {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - AddRef Row, ReleaseRows
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::AddRefRows(A,B) {} "
L" IRowset::ReleaseRows(A,B) {} "
L" IRowset::ReleaseRows(A,B) "
L" {"
L" L1.ROW_RELEASE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - ReleaseRow, ReleaseRow
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A,B) "
L" {"
L" L1.ROW_RELEASE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - ReleaseRows [valid, invalid]
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A,B,C,DB_S_ERRORSOCCURRED) "
L" {"
L" L1.ROW_RELEASE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_25()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DBROWSTATUS_S_PENDINGCHANGES
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_26()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowset::ReleaseRows(A) "
L" {"
L" L1.ROW_RELEASE.DIDEVENT.RETURN_ACCEPT "
L" L2.ROW_RELEASE.DIDEVENT.RETURN_ACCEPT "
L" L3.ROW_RELEASE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_27()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A, E_INVALIDARG) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::ReleaseRows(A,B,C,DB_E_ERRORSOCCURRED) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowset::ReleaseRows(A) "
L" {"
L" L1.ROW_RELEASE.DIDEVENT.RETURN_UNADVISE "
L" } "
L" IRowset::ReleaseRows(B) "
L" { "
L" L2.ROW_RELEASE.DIDEVENT.RETURN_UNADVISE "
L" } "
L" IRowset::ReleaseRows(C) "
L" { "
L" L3.ROW_RELEASE.DIDEVENT.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int ReleaseRows::Variation_30()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A) "
L" {"
L" L1.ROW_RELEASE.DIDEVENT.IRowset::GetData(B) {} "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL ReleaseRows::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(RestartPosition)
//*-----------------------------------------------------------------------
//| Test Case: RestartPosition - Tests Notificatons for IRowset::RestartPosition
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL RestartPosition::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
if(CreateRowset(DEFAULT_ROWSET)==S_OK)
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::RestartPosition() {} "
L" IRowset::RestartPosition() {} "
L" IRowset::RestartPosition() {} "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::ReleaseRows(A,B) {} "
L" IRowset::RestartPosition() {} "
L" IRowset::RestartPosition() {} "
L" IRowset::RestartPosition() {} "
L" IRowset::RestartPosition() {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_4()
{
//Need to verify the FETCHPOSITION did not get reset since it was veto'd
//Read all the rows in the rowset. Then Veto the RestartPostition().
//The next GetNextRows should fail, if the FetchPosition was truly veto'd
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(DB_S_ENDOFROWSET) {} "
L" IRowset::RestartPosition() { L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO } "
L" IRowset::GetNextRows(A, DB_S_ENDOFROWSET) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, DEFAULT_ROWSET));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.IRowset::RestartPosition(DB_E_NOTREENTRANT) {} } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L2.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO } "
L" }"
L" }"
L"}";
//TODO need to verify the fetch position does not change!
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L2.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_VETO } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L2.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_VETO } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L3.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" L3.ROWSET_FETCHPOSITIONCHANGE.FAILEDTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, DEFAULT_ROWSET));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L3.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_UNWANTEDREASON } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L3.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_UNWANTEDPHASE } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L3.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_UNWANTEDPHASE } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_UNWANTEDPHASE } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { L3.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_UNWANTEDPHASE } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() {} "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L3.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" L3.ROWSET_FETCHPOSITIONCHANGE.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowset::RestartPosition() {} "
L" IRowset::GetNextRows(A,B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, DEFAULT_ROWSET));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_22()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_EFAIL "
L" L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_EFAIL "
L" L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_EOUTOFMEMORY "
L" L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_EINVALIDARG "
L" L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_EINVALIDARG "
L" L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_27()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_ACCEPT "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_29()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_30()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_31()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_ACCEPT "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_32()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.DIDEVENT.IRowset::RestartPosition() {} "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_33()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_34()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_35()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_ACCEPT "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_36()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_ACCEPT "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_37()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_ACCEPT "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_38()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_VETO "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_39()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_VETO "
L" L1.ROWSET_CHANGED.FAILEDTODO.RETURN_VETO "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_CHANGED, DBEVENTPHASE_DIDEVENT));
TESTC(Execute(CommandString, DEFAULT_ROWSET));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_40()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_41()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_42()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_43()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - UNWANTED PHASE ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_44()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_45()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_46()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_47()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.OKTODO.RETURN_VETO "
L" L1.ROWSET_CHANGED.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_CHANGED, DBEVENTPHASE_OKTODO));
TESTC(Execute(CommandString, DEFAULT_ROWSET));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_48()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_49()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_50()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.OKTODO.RETURN_EFAIL "
L" L2.ROWSET_CHANGED.ABOUTTODO.RETURN_EFAIL "
L" L3.ROWSET_CHANGED.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_EFAIL "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.OKTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_51()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.OKTODO.RETURN_EOUTOFMEMORY "
L" L2.ROWSET_CHANGED.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L3.ROWSET_CHANGED.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.OKTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc ROWSET_CHANGED - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_52()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.OKTODO.RETURN_EINVALIDARG "
L" L2.ROWSET_CHANGED.ABOUTTODO.RETURN_EINVALIDARG "
L" L3.ROWSET_CHANGED.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROWSET_CHANGED.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" ITableDefinition::AddColumn() {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_CHANGED.OKTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_53()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_54()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - RestartPosition
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_55()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetNextRows - RestartPosition - RestartPosition
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_56()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_57()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_E_ROWSNOTRELEASED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_58()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
//TODO need to specifiy no CANHOLDROWS
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_59()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::RestartPosition() "
L" { "
L" } "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_60()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_UNADVISE "
L" L2.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_UNADVISE "
L" } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L3.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_UNADVISE "
L" } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int RestartPosition::Variation_61()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.IRowset::GetData(A) {} "
L" L2.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.IRowset::GetData(B) {} "
L" L3.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.IRowset::GetData(A) {} "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.IRowset::GetData(B) {} "
L" } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.IRowset::GetData(A) {} "
L" } "
L" IRowset::GetNextRows(A,B) {} "
L" IRowset::RestartPosition() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, DEFAULT_ROWSET);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL RestartPosition::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(Seek)
//*-----------------------------------------------------------------------
//| Test Case: Seek - Test Notifications for IRowsetIndex::Seek
//| Created: 03/24/97
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL Seek::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(ROWSETINDEX_ROWSET)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_4()
{
//Need to verify the Veto was successful
//Verify the FETCHPOSITION is unachanged after veto
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.IRowsetIndex::Seek(1) {} "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_VETO "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO "
L" L1.ROWSET_FETCHPOSITIONCHANGE.FAILEDTODO.RETURN_VETO "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_OKTODO));
TESTC(Execute(CommandString, ROWSETINDEX_ROWSET));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - UNWANTED PHASE - FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO "
L" L1.ROWSET_FETCHPOSITIONCHANGE.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROWSET_FETCHPOSITIONCHANGE, DBEVENTPHASE_OKTODO));
TESTC(Execute(CommandString, ROWSETINDEX_ROWSET));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_22()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_EFAIL "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_EFAIL "
L" L1.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_EOUTOFMEMORY "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc FETCHPOSITIONCHANGE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_EINVALIDARG "
L" L1.ROWSET_FETCHPOSITIONCHANGE.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.ROWSET_FETCHPOSITIONCHANGE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROWSET_FETCHPOSITIONCHANGE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_27()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1,DB_E_BADACCESSORHANDLE) "
L" { "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetIndex::Seek(1,DB_S_ENDOFROWSET) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_30()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_ADVISE "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" L2.ROWSET_FETCHPOSITIONCHANGE.OKTODO.RETURN_UNADVISE "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Seek::Variation_31()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetIndex::Seek(1) "
L" { "
L" L1.ROWSET_FETCHPOSITIONCHANGE.OKTODO.IRowset::GetData(A) {} "
L" } "
L" IRowsetIndex::Seek(1) "
L" { "
L" L2.ROWSET_FETCHPOSITIONCHANGE.OKTODO.IRowset::GetData(B) "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETINDEX_ROWSET);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL Seek::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(GetRowsAt)
//*-----------------------------------------------------------------------
//| Test Case: GetRowsAt - Tests Notificatons for IRowsetLocate::GetRowsAt
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL GetRowsAt::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(ROWSETLOCATE_ROWSET)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - SINGLEROW - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - MULTIPLEROWS - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_2()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_4()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_5()
{
//Cannot "successfully" veto DIDEVENT
//Verify rows are valid after veto
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_VETO "
L" }"
L" IRowset::GetData(A) {} "
L" IRowset::GetData(B) {} "
L" IRowset::GetData(C) {} "
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_6()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C, DB_E_NOTREENTRANT) {} "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_8()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - Veto DIDEVENT, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_VETO "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_10()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_11()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_UNWANTEDREASON "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_13()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_15()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EFAIL "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EINVALIDARG "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_19()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_20()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Get same row twice
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_21()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_E_BADSTARTPOSITION
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C, DB_E_BADSTARTPOSITION) "
L" {"
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, DB_S_ENDOFROWSET) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_S_ENDOFROWSET - more rows than are in the rowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C,D,E, DB_S_ENDOFROWSET) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_S_ENDOFROWSET - at end of rowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_LAST, A, DB_S_ENDOFROWSET) "
L" {"
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, B,C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - no rows at head of rowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_26()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST) "
L" {"
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - no rows at end of rowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_27()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_LAST) "
L" {"
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_UNADVISE "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B,C) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAt::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A) {} "
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.IRowset::GetData(A) {} "
L" }"
L" IRowsetLocate::GetRowsAt(DBBMK_FIRST, A) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL GetRowsAt::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(GetRowsByBookmark)
//*-----------------------------------------------------------------------
//| Test Case: GetRowsByBookmark - Tests Notifications for IRowsetLocate::GetRowsbyBookmark
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL GetRowsByBookmark::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(ROWSETLOCATE_ROWSET)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - SINGLEROW - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A) {} "
L" IRowset::ReleaseRows(A) {} "
L" IRowsetLocate::GetRowsByBookmark(A) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" IRowsetLocate::GetRowsByBookmark(A) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - MULTIPLEROWS - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_2()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" IRowsetLocate::GetRowsByBookmark(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_4()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_5()
{
//Need to verify the Veto was successful
//Verify rows are not valid after veto
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_VETO "
L" }"
L" IRowsetLocate::GetRowsByBookmark(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_6()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.IRowsetLocate::GetRowsByBookmark(A,B,DB_E_NOTREENTRANT) {} "
L" }"
L" IRowsetLocate::GetRowsByBookmark(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_8()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - Veto DIDEVENT, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_VETO "
L" }"
L" IRowsetLocate::GetRowsByBookmark(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_10()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_11()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_UNWANTEDREASON "
L" }"
L" IRowsetLocate::GetRowsByBookmark(C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_13()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetLocate::GetRowsByBookmark(C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_15()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EFAIL "
L" }"
L" IRowsetLocate::GetRowsByBookmark(C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" }"
L" IRowsetLocate::GetRowsByBookmark(C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(A,B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EINVALIDARG "
L" }"
L" IRowsetLocate::GetRowsByBookmark(C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_19()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_20()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Get no rows
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_21()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark() "
L" {"
L" }"
L" IRowsetLocate::GetRowsByBookmark(B,C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Get same row twice
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" }"
L" IRowsetLocate::GetRowsByBookmark(C) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(B,E_INVALIDARG) "
L" {"
L" }"
L" IRowsetLocate::GetRowsByBookmark(C) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetLocate::GetRowsByBookmark(B, DB_E_ERRORSOCCURRED) "
L" {"
L" }"
L" IRowsetLocate::GetRowsByBookmark(C, DB_E_ERRORSOCCURRED) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_UNADVISE "
L" }"
L" IRowsetLocate::GetRowsByBookmark(C) "
L" {"
L" L2.ROW_ACTIVATE.DIDEVENT.RETURN_UNADVISE "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsByBookmark::Variation_26()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowset::ReleaseRows(A,B,C,D) {} "
L" IRowsetLocate::GetRowsByBookmark(B) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.IRowset::GetData(B) {} "
L" }"
L" IRowsetLocate::GetRowsByBookmark(C) "
L" {"
L" L1.ROW_ACTIVATE.DIDEVENT.IRowset::GetData(C) {} "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETLOCATE_ROWSET);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL GetRowsByBookmark::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(GetRowsAtRatio)
//*-----------------------------------------------------------------------
//| Test Case: GetRowsAtRatio - Test Nofications for IRowsetScroll::GetRowsAtRatio
//| Created: 03/24/97
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL GetRowsAtRatio::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(ROWSETSCROLL_ROWSET)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - SINGLEROW - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - MULTIPLEROWS - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_2()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_4()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_5()
{
//Veriy the veto was successful
//Row should be unaffected by the resynch
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_6()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.IRowsetScroll::GetRowsAtRatio(1,A,B,C,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_8()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - Veto DIDEVENT, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_10()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_11()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_13()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_15()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_ACTIVATE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_19()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_20()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - No rows
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_21()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1) "
L" { "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_S_ENDOFROWSET 1 more than rowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1, A,B,C,D, DB_S_ENDOFROWSET) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1, A,B,C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_S_ENDOFROWSET - at end of rowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1, A,B,C, DB_S_ENDOFROWSET) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_ACCEPT "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1, A,B,C, DB_S_ENDOFROWSET) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1, DB_S_ENDOFROWSET) "
L" { "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1, DB_S_ENDOFROWSET) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.RETURN_UNADVISE "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int GetRowsAtRatio::Variation_26()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowset::ReleaseRows(A,B,C) {} "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C) "
L" { "
L" L1.ROW_ACTIVATE.DIDEVENT.IRowset::GetData(A) {} "
L" L2.ROW_ACTIVATE.DIDEVENT.IRowset::GetData(B) {} "
L" L3.ROW_ACTIVATE.DIDEVENT.IRowset::GetData(C) {} "
L" } "
L" IRowsetScroll::GetRowsAtRatio(1,A,B,C,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, ROWSETSCROLL_ROWSET);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL GetRowsAtRatio::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(DeleteRows)
//*-----------------------------------------------------------------------
//| Test Case: DeleteRows - Tests Notifications for IRowsetChange::DeleteRows
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL DeleteRows::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(CHANGE_IMMEDIATE)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" } "
L" } "
L"}";
TableInsert(ONE_ROW); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_2()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_4()
{
//Need to make sure the Veto of ROW_DELETE did not delete the row
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowset::GetData(A) {} "
L" } "
L" } "
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_DELETE, DBEVENTPHASE_ABOUTTODO));
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.IRowsetChange::DeleteRows(B, DB_E_NOTREENTRANT) {} "
L" } "
L" } "
L" } "
L"}";
TableInsert(ONE_ROW); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Veto OKTODO Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Veto SYNCHAFTER Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L2.ROW_DELETE.SYNCHAFTER.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Veto DIDEVENT Listener 2
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.DIDEVENT.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Veto FAILEDTODO Listener 2
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_DELETE.FAILEDTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_DELETE, DBEVENTPHASE_ABOUTTODO));
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners - SINGLEROW
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_13()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_UNADVISE "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_ADVISE "
L" } "
L" IRowsetChange::DeleteRows(B) "
L" { "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData - SINGLEROW
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_14()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.IRowset::GetData(A) {} "
L" L3.ROW_DELETE.ABOUTTODO.IRowset::GetData(A) {} "
L" } "
L" IRowsetChange::DeleteRows(B) "
L" { "
L" L3.ROW_DELETE.OKTODO.IRowset::GetData(B) {} "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - UNWANTED PHASE ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_DELETE.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(C,D) {} "
L" } "
L" } "
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_DELETE, DBEVENTPHASE_ABOUTTODO));
TableInsert(FOUR_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DBROWSTATUS_DELETED - SINGLEROW
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_21()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" IRowsetChange::DeleteRows(A,DB_E_ERRORSOCCURRED) "
L" { "
L" } "
L" } "
L" } "
L"}";
TableInsert(ONE_ROW); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - Veto ABOUTTODO Listener 1 - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_EFAIL "
L" L2.ROW_DELETE.ABOUTTODO.RETURN_EFAIL "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_DELETE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetChange::DeleteRows(B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_EFAIL "
L" L2.ROW_DELETE.ABOUTTODO.RETURN_EFAIL "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_DELETE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetChange::DeleteRows(C,D) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
//TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_DELETE, DBEVENTPHASE_ABOUTTODO));
TableInsert(FOUR_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_EOUTOFMEMORY "
L" L2.ROW_DELETE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_DELETE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetChange::DeleteRows(C,D) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
TableInsert(FOUR_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Veto ABOUTTODO Listener 1 - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_EINVALIDARG "
L" L2.ROW_DELETE.ABOUTTODO.RETURN_EINVALIDARG "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_DELETE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetChange::DeleteRows(C,D) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
TableInsert(FOUR_ROWS); //Compensate for the deleted row(s)
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_26()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_EOUTOFMEMORY "
L" L2.ROW_DELETE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_DELETE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetChange::DeleteRows(B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_27()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_EINVALIDARG "
L" L2.ROW_DELETE.ABOUTTODO.RETURN_EINVALIDARG "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_DELETE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetChange::DeleteRows(B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Delete no rows, Delete MULTIPLEROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows() "
L" { "
L" } "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DBROWSTATUS_DELETED - MULTIPLEROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" IRowsetChange::DeleteRows(A,B,DB_E_ERRORSOCCURRED) "
L" { "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_30()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowsetChange::DeleteRows() "
L" { "
L" } "
L" IRowsetChange::DeleteRows() "
L" { "
L" } "
L" } "
L" } "
L"}";
TableInsert(TWO_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, EMPTY_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners - MULTIPLEROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_31()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_UNADVISE "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_ADVISE "
L" } "
L" IRowsetChange::DeleteRows(C) "
L" { "
L" } "
L" } "
L" } "
L"}";
TableInsert(THREE_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData - MULTIPLEROWS
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows::Variation_32()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.OKTODO.IRowset::GetData(A) {} "
L" L3.ROW_DELETE.ABOUTTODO.IRowset::GetData(B) {} "
L" } "
L" IRowsetChange::DeleteRows(C) "
L" { "
L" L3.ROW_DELETE.OKTODO.IRowset::GetData(C) {} "
L" } "
L" } "
L" } "
L"}";
TableInsert(THREE_ROWS); //Compensate for the deleted row(s)
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL DeleteRows::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(DeleteRows_Bufferred)
//*-----------------------------------------------------------------------
//| Test Case: DeleteRows_Bufferred - Test Notifications for IRowsetChange::DeleteRows in Buffered Mode
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL DeleteRows_Bufferred::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(CHANGE_BUFFERRED)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - SINGLEROW - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - MULTIPLEROWS - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_2()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_4()
{
//Need to make sure the Veto of ROW_DELETE did not delete the row
//Make sure row is valid after Veto
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowset::GetData(A) {} "
L" } "
L" } "
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_DELETE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.IRowsetChange::DeleteRows(B, DB_E_NOTREENTRANT) {} "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - Veto OKTODO Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - Veto ABOUTTODO Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - Veto SYNCHAFTER Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L2.ROW_DELETE.SYNCHAFTER.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - Veto DIDEVENT Listener 2
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.DIDEVENT.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - Veto FAILEDTODO Listener 2
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_DELETE.FAILEDTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_DELETE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - UNWANTED PHASE ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(B) {} "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_DELETE.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::DeleteRows(C,D) {} "
L" } "
L" } "
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_DELETE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_22()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_EFAIL "
L" L2.ROW_DELETE.ABOUTTODO.RETURN_EFAIL "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_DELETE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetChange::DeleteRows(C,D) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_EOUTOFMEMORY "
L" L2.ROW_DELETE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_DELETE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetChange::DeleteRows(C,D) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc ROW_DELETE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(A,B) "
L" { "
L" L1.ROW_DELETE.OKTODO.RETURN_EINVALIDARG "
L" L2.ROW_DELETE.ABOUTTODO.RETURN_EINVALIDARG "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_DELETE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetChange::DeleteRows(C,D) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_27()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Delete no rows
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows() "
L" { "
L" } "
L" IRowsetChange::DeleteRows(C) "
L" { "
L" L2.ROW_DELETE.OKTODO.RETURN_ACCEPT "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DBROWSTATUS_DELETED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(C) "
L" { "
L" L2.ROW_DELETE.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetChange::DeleteRows(C,DB_E_ERRORSOCCURRED) "
L" { "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_30()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" { "
L" IRowsetChange::DeleteRows() "
L" { "
L" } "
L" IRowsetChange::DeleteRows() "
L" { "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, EMPTY_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_31()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(C) "
L" { "
L" L2.ROW_DELETE.OKTODO.RETURN_UNADVISE "
L" L3.ROW_DELETE.SYNCHAFTER.RETURN_UNADVISE "
L" } "
L" IRowsetChange::DeleteRows(D) "
L" { "
L" L1.ROW_DELETE.DIDEVENT.RETURN_UNADVISE "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_32()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(C) "
L" { "
L" L2.ROW_DELETE.OKTODO.IRowset::GetData(C) {} "
L" L3.ROW_DELETE.ABOUTTODO.IRowset::GetData(C) {} "
L" } "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.ABOUTTODO.IRowset::GetData(D) {} "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetOriginalData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int DeleteRows_Bufferred::Variation_33()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" { "
L" IRowset::GetNextRows(A,B,C,D) {} "
L" IRowsetChange::DeleteRows(C) "
L" { "
L" L2.ROW_DELETE.OKTODO.IRowsetUpdate::GetOriginalData(C,DB_E_NOTREENTRANT) {} "
L" L3.ROW_DELETE.SYNCHAFTER.IRowsetUpdate::GetOriginalData(C,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetChange::DeleteRows(A) "
L" { "
L" L1.ROW_DELETE.DIDEVENT.IRowsetUpdate::GetOriginalData(D,DB_E_NOTREENTRANT) {} "
L" } "
L" } "
L" } "
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL DeleteRows_Bufferred::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(InsertRow)
//*-----------------------------------------------------------------------
//| Test Case: InsertRow - Tests Notifications for IRowsetChange::InsertRow
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL InsertRow::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(CHANGE_IMMEDIATE)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_4()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.IRowsetChange::InsertRow(C, DB_E_NOTREENTRANT) {} "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_5()
{
//Make sure the Veto of InsertRow actually occrrued.
//Row handle should not be valid after delete
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" IRowsetChange::SetData(A,2,DB_E_BADROWHANDLE) {} "
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto OKTODO, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto ABOUTTODO, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto SYNCHAFTER, Listener 2
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L2.ROW_INSERT.SYNCHAFTER.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto DIDEVENT, Listener 3
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.DIDEVENT.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto FAILEDTODO, Listener 3
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" L1.ROW_INSERT.FAILEDTODO.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_INSERT, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_14()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_UNWANTEDREASON "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.DIDEVENT.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" L1.ROW_INSERT.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_INSERT, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_20()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_EFAIL "
L" L1.ROW_INSERT.ABOUTTODO.RETURN_EFAIL "
L" L1.ROW_INSERT.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_INSERT.DIDEVENT.RETURN_EFAIL "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_INSERT.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_INSERT.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_INSERT.DIDEVENT.RETURN_EOUTOFMEMORY "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_EINVALIDARG "
L" L1.ROW_INSERT.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.ROW_INSERT.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_INSERT.DIDEVENT.RETURN_EINVALIDARG "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_25()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_27()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A,DB_E_BADACCESSORHANDLE) "
L" {"
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_ADVISE "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_UNADVISE "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow::Variation_30()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A) {} "
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.OKTODO.IRowset::GetData(A) {} "
L" }"
L" IRowset::GetData(A) {} "
L" IRowsetChange::InsertRow(C) "
L" {"
L" L1.ROW_INSERT.OKTODO.IRowset::GetData(B) {} "
L" }"
L" IRowset::GetData(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL InsertRow::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(InsertRow_Bufferred)
//*-----------------------------------------------------------------------
//| Test Case: InsertRow_Bufferred - Test Notifications for IRowsetChange::InsertRow in Buffered Mode
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL InsertRow_Bufferred::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(CHANGE_BUFFERRED)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_4()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.IRowsetChange::InsertRow(C, DB_E_NOTREENTRANT) {} "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_5()
{
//Need to make sure the Veto was successful
//Row should not be valid after insert
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" IRowsetChange::SetData(A,2,DB_E_BADROWHANDLE) {} "
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto OKTODO, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto ABOUTTODO, Listener 1
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto SYNCHAFTER, Listener 2
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L2.ROW_INSERT.SYNCHAFTER.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto DIDEVENT, Listener 3
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.DIDEVENT.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - Veto FAILEDTODO, Listener 3
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" L1.ROW_INSERT.FAILEDTODO.RETURN_VETO "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_INSERT, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_14()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_UNWANTEDREASON "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.DIDEVENT.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" L1.ROW_INSERT.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetChange::InsertRow(B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_INSERT, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_20()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_EFAIL "
L" L1.ROW_INSERT.ABOUTTODO.RETURN_EFAIL "
L" L1.ROW_INSERT.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_INSERT.DIDEVENT.RETURN_EFAIL "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_INSERT.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_INSERT.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_INSERT.DIDEVENT.RETURN_EOUTOFMEMORY "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc ROW_INSERT - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_EINVALIDARG "
L" L1.ROW_INSERT.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.ROW_INSERT.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_INSERT.DIDEVENT.RETURN_EINVALIDARG "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_VETO "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_25()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_27()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A,DB_E_BADACCESSORHANDLE) "
L" {"
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.ABOUTTODO.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) "
L" {"
L" L1.ROW_INSERT.OKTODO.RETURN_UNADVISE "
L" }"
L" IRowsetChange::InsertRow(B) "
L" {"
L" L2.ROW_INSERT.OKTODO.RETURN_ADVISE "
L" L3.ROW_INSERT.OKTODO.RETURN_UNADVISE "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_30()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) {} "
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.OKTODO.IRowset::GetData(A) {} "
L" }"
L" IRowsetChange::InsertRow(C) "
L" {"
L" L1.ROW_INSERT.OKTODO.IRowset::GetData(A) {} "
L" L2.ROW_INSERT.OKTODO.IRowset::GetData(B) {} "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetOriginalData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int InsertRow_Bufferred::Variation_31()
{
// From the spec:
//GetOriginalData() gets the data most recently fetched from or transmitted to the data store;
//does not get values based on pending changes => we can not call GetOriginalData for newly inserted row untill it's transmeted
//Commented out this variation
/* WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetChange::InsertRow(A) {} "
L" IRowsetChange::InsertRow(B) "
L" {"
L" L1.ROW_INSERT.OKTODO.IRowsetUpdate::GetOriginalData(A,DB_E_NOTREENTRANT) {} "
L" }"
L" IRowsetChange::InsertRow(C) "
L" {"
L" L1.ROW_INSERT.OKTODO.IRowsetUpdate::GetOriginalData(A,DB_E_NOTREENTRANT) {} "
L" L2.ROW_INSERT.OKTODO.IRowsetUpdate::GetOriginalData(B,DB_E_NOTREENTRANT) {} "
L" L3.ROW_INSERT.DIDEVENT.IRowsetUpdate::GetOriginalData(C,DB_E_NOTREENTRANT) {} "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
*/
return TEST_SKIPPED;
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL InsertRow_Bufferred::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(SetData)
//*-----------------------------------------------------------------------
//| Test Case: SetData - Tests Notifications for IRowsetChange::SetData
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL SetData::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(CHANGE_IMMEDIATE)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_4()
{
//Need to make sure the Veto was successful
//RowData should not have been altered after veto, GetData will ensure this
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowset::GetData(A) {} "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) { L1.COLUMN_SET.OKTODO.IRowsetChange::SetData(A,2,DB_E_NOTREENTRANT) {} } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) { L1.COLUMN_SET.OKTODO.RETURN_VETO } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) { L1.COLUMN_SET.ABOUTTODO.RETURN_VETO } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) { L1.COLUMN_SET.SYNCHAFTER.RETURN_VETO } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) { L1.COLUMN_SET.DIDEVENT.RETURN_VETO } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" L1.COLUMN_SET.FAILEDTODO.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_COLUMN_SET, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_14()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED PHASE ABOUTTO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET- UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" L1.COLUMN_SET.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_COLUMN_SET, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_IMMEDIATE));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_20()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_22()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L3.COLUMN_SET.OKTODO.RETURN_EFAIL "
L" L2.COLUMN_SET.ABOUTTODO.RETURN_EFAIL "
L" L1.COLUMN_SET.SYNCHAFTER.RETURN_EFAIL "
L" L3.COLUMN_SET.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L2.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L3.COLUMN_SET.OKTODO.RETURN_EOUTOFMEMORY "
L" L2.COLUMN_SET.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.COLUMN_SET.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L3.COLUMN_SET.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L2.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L3.COLUMN_SET.OKTODO.RETURN_EINVALIDARG "
L" L2.COLUMN_SET.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.COLUMN_SET.SYNCHAFTER.RETURN_EINVALIDARG "
L" L3.COLUMN_SET.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L2.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_25()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - DB_E_ERRORSOCCURRED - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_27()
{
//Try to change the Data for the computed column.
//Should get DB_E_ERRORSOCCURRED with no notifications
//We need the only computed column is been modified in SetData to be sure
//that modification of the computed column causes an error (and not other columns)
//so use special mode COMPUTED_COLUMNS_INCLUDE (only one column will be included to m_rgUpBindings)
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,DB_E_ERRORSOCCURRED) "
L" { "
L" } "
L" IRowsetChange::SetData(A,2,DB_E_ERRORSOCCURRED) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS_INCLUDE | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_28()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_29()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_30()
{
//Need to make sure the Veto was successful
//RowData should not have been altered after veto, GetData will ensure this
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_VETO "
L" } "
L" IRowset::GetData(A) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_31()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.IRowsetChange::SetData(A,2,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_32()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_33()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_34()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_35()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_36()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_37()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_38()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_39()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_40()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_41()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_42()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_43()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_44()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_45()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_46()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,DB_E_BADACCESSORHANDLE) "
L" { "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.DIDEVENT.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_47()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetChange::SetData(A,2,DB_E_BADROWHANDLE) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_48()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_ADVISE "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.DIDEVENT.RETURN_UNADVISE "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData::Variation_49()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.IRowset::GetData(A) {} "
L" } "
L" IRowsetChange::SetData(B,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.IRowset::GetData(A) {} "
L" L2.COLUMN_SET.ABOUTTODO.IRowset::GetData(B) {} "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL SetData::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(SetData_Bufferred)
//*-----------------------------------------------------------------------
//| Test Case: SetData_Bufferred - Test Notifications for IRowsetChange::SetData in Buffered Mode
//| Created: 03/24/97
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL SetData_Bufferred::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(CHANGE_BUFFERRED)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - InsertRow(A), SetData(A) - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_4()
{
//Need to make sure the Veto was successful
//FIRSTCHANGE should be fired again
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowset::GetData(A) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.OKTODO.IRowsetChange::SetData(A,2,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.SYNCHAFTER.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_FIRSTCHANGE.FAILEDTODO.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_FIRSTCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetChange::SetData(B,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(B,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - UNWANTED PHASE ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(B,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(B,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(B,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_FIRSTCHANGE.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(B,2) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_FIRSTCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_22()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_EFAIL "
L" L2.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_EFAIL "
L" L3.ROW_FIRSTCHANGE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_FIRSTCHANGE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetChange::SetData(B,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_EOUTOFMEMORY "
L" L2.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L3.ROW_FIRSTCHANGE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_FIRSTCHANGE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetChange::SetData(B,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc ROW_FIRSTCHANGE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_EINVALIDARG "
L" L2.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_EINVALIDARG "
L" L3.ROW_FIRSTCHANGE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_FIRSTCHANGE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetChange::SetData(B,2) "
L" { "
L" L1.ROW_FIRSTCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_27()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_29()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_30()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_31()
{
//Need to verify the Veto was successful
//SetData should not have modified the row, GetData will verify this
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowset::GetData(A) {} "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_32()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.IRowsetChange::SetData(A,2,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_33()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_34()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_35()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_36()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_37()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.SYNCHAFTER.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_38()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_39()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" L1.COLUMN_SET.FAILEDTODO.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_FIRSTCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_40()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_41()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_42()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED PHASE ABOUTTO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_43()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_44()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET- UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_45()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_46()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" L1.COLUMN_SET.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_FIRSTCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_47()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_48()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_49()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_EFAIL "
L" L2.COLUMN_SET.ABOUTTODO.RETURN_EFAIL "
L" L3.COLUMN_SET.SYNCHAFTER.RETURN_EFAIL "
L" L1.COLUMN_SET.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_50()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_EOUTOFMEMORY "
L" L2.COLUMN_SET.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L3.COLUMN_SET.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.COLUMN_SET.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_SET - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_51()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_EINVALIDARG "
L" L2.COLUMN_SET.ABOUTTODO.RETURN_EINVALIDARG "
L" L3.COLUMN_SET.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.COLUMN_SET.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_52()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_53()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_54()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_ACCEPT "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_55()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_56()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_57()
{
//Need to make sure the Veto was successful
//RowData should not have been altered after veto, GetOriginalData will ensure this
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetUpdate::GetOriginalData(A) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_58()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.IRowsetUpdate::Update(A) {} "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_59()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_60()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_61()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(62)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_62()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(63)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_63()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(64)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_64()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) {} "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(65)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_65()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) {} "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(66)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_66()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(67)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_67()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(68)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_68()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(69)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_69()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(70)
//*-----------------------------------------------------------------------
// @mfunc COLUMN_RECALCULATED - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_70()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetChange::SetData(A,2) {} "
L" IRowsetUpdate::Update(A) "
L" { "
L" L1.COLUMN_RECALCULATED.DIDEVENT.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
//COMPUTED_COLUMNS - makes the first column the input and
//the second column the computed column (col1-col2).
return Execute(CommandString, COMPUTED_COLUMNS | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(71)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_71()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(72)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_72()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(73)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DB_E_BADACCESSORHANDLE
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_73()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,DB_E_BADACCESSORHANDLE) "
L" { "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(74)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_74()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowsetChange::SetData(A,2,DB_E_BADROWHANDLE) "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(75)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_75()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_UNADVISE "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.RETURN_ADVISE "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(76)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_76()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.IRowset::GetData(A) {} "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.IRowset::GetData(A) {} "
L" L2.COLUMN_SET.ABOUTTODO.IRowset::GetData(B) {} "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(77)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetOriginalData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int SetData_Bufferred::Variation_77()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.IRowsetUpdate::GetOriginalData(A,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetChange::SetData(A,2) "
L" { "
L" L1.COLUMN_SET.OKTODO.IRowsetUpdate::GetOriginalData(A,DB_E_NOTREENTRANT) {} "
L" L2.COLUMN_SET.ABOUTTODO.IRowsetUpdate::GetOriginalData(B,DB_E_NOTREENTRANT) {} "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL SetData_Bufferred::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(Resynch)
//*-----------------------------------------------------------------------
//| Test Case: Resynch - Tests Notifications for IRowsetResynch::ResyncRows
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL Resynch::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(RESYNCH_ROWSET | CHANGE_IMMEDIATE)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetResynch::ResynchRows(A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_4()
{
//Need to verify the Veto was successful
//Verify rows are unchanged by resynch
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowset::GetData(A) {} "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowsetResynch::ResynchRows(A,B,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" L1.ROW_RESYNCH.FAILEDTODO.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_RESYNCH, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" L1.ROW_RESYNCH.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_RESYNCH, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_22()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_EFAIL "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_EFAIL "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_EINVALIDARG "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_27()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Resynch all rows
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows() "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Resynch 2 rows, 1 changed 1 not changed
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - 1 valid, 1 not valid
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_30()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,C,DB_S_ERRORSOCCURRED) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_31()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetResynch::ResynchRows() "
L" { "
L" } "
L" IRowsetResynch::ResynchRows() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_32()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_UNADVISE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L2.ROW_RESYNCH.OKTODO.RETURN_UNADVISE "
L" L3.ROW_RESYNCH.OKTODO.RETURN_UNADVISE "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_33()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowset::GetData(A) {} "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowset::GetData(B) {} "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetVisibleData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch::Variation_34()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowsetResynch::GetVisibleData(A, DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowsetResynch::GetVisibleData(B, DB_E_NOTREENTRANT) {} "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_IMMEDIATE);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL Resynch::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(Resynch_Bufferred)
//*-----------------------------------------------------------------------
//| Test Case: Resynch_Bufferred - Tests Notifications for IRowsetResynch_Bufferred::ResyncRows
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL Resynch_Bufferred::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(RESYNCH_ROWSET | CHANGE_BUFFERRED)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetResynch::ResynchRows(A,B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_4()
{
//Veriy the veto was successful
//Row should be unaffected by the resynch
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowset::GetData(A) {} "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowsetResynch::ResynchRows(A,B,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" L1.ROW_RESYNCH.FAILEDTODO.RETURN_VETO "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_RESYNCH, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - UNWANTED PHASE - FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" L1.ROW_RESYNCH.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_RESYNCH, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_22()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_EFAIL "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_EFAIL "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc ROW_RESYNCH - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_EINVALIDARG "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.ROW_RESYNCH.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_RESYNCH.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_27()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Resynch_Bufferred all rows
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetResynch::ResynchRows() "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetResynch::ResynchRows() "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Resynch_Bufferred 2 rows, 1 changed 1 not changed
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - 1 valid, 1 not valid
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_30()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,C,DB_S_ERRORSOCCURRED) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_31()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetResynch::ResynchRows() "
L" { "
L" } "
L" IRowsetResynch::ResynchRows() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_32()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_ADVISE "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.RETURN_UNADVISE "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_33()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowset::GetData(A) {} "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowset::GetData(B) {} "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetVisibleData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Resynch_Bufferred::Variation_34()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowsetResynch::GetVisibleData(A, DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetResynch::ResynchRows(A,B) "
L" { "
L" L1.ROW_RESYNCH.OKTODO.IRowsetResynch::GetVisibleData(B, DB_E_NOTREENTRANT) {} "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, RESYNCH_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL Resynch_Bufferred::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(Undo)
//*-----------------------------------------------------------------------
//| Test Case: Undo - Tests Notifications for IRowsetUpdate::Undo
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL Undo::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(CHANGE_BUFFERRED)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_4()
{
//Veriy the veto was successful
//Row should be unaffected by the Undo
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowset::GetData(B) {} "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.OKTODO.IRowsetUpdate::Undo(B,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.OKTODO.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_9()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.SYNCHAFTER.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_12()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_UNDOCHANGE.FAILEDTODO.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_UNDOCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.DIDEVENT.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - UNWANTED PHASE ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_UNDOCHANGE.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(B,C) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_UNDOCHANGE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_22()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.OKTODO.RETURN_EFAIL "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_EFAIL "
L" L1.ROW_UNDOCHANGE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_UNDOCHANGE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.OKTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_UNDOCHANGE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_UNDOCHANGE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOCHANGE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::SetData(C,2,5) {} "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDOCHANGE.OKTODO.RETURN_EINVALIDARG "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.ROW_UNDOCHANGE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_UNDOCHANGE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_27()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_29()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_30()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_31()
{
//Veriy the veto was successful
//Row should be unaffected by the Undo
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowset::GetData(C) {} "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_32()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.OKTODO.IRowsetUpdate::Undo(C,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_33()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_34()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_35()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.OKTODO.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_36()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_37()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.SYNCHAFTER.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_38()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_39()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_VETO "
L" L1.ROW_UNDOINSERT.FAILEDTODO.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_UNDOINSERT, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_40()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_41()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_42()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - UNWANTED PHASE ABOUTTO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_43()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_44()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT- UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_45()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_46()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_VETO "
L" L1.ROW_UNDOINSERT.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(D) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_UNDOINSERT, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_47()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_48()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_49()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.OKTODO.RETURN_EFAIL "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_EFAIL "
L" L1.ROW_UNDOINSERT.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_UNDOINSERT.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetUpdate::Undo(D) "
L" { "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_50()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.OKTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_UNDOINSERT.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_UNDOINSERT.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetUpdate::Undo(D) "
L" { "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDOINSERT - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_51()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::DeleteRows(A) {} "
L" IRowsetChange::SetData(D,2,5) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" L1.ROW_UNDOINSERT.OKTODO.RETURN_EINVALIDARG "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.ROW_UNDOINSERT.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_UNDOINSERT.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetUpdate::Undo(D) "
L" { "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_52()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_53()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_54()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.OKTODO.RETURN_ACCEPT "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_55()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_56()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_57()
{
//Veriy the veto was successful
//Row should be unaffected by the Undo
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowsetChange::DeleteRows(A,DB_E_ERRORSOCCURRED) {} "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_58()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.OKTODO.IRowsetUpdate::Undo(A,B,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_59()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_60()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_61()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.OKTODO.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(62)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_62()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(63)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_63()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.SYNCHAFTER.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(64)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_64()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.DIDEVENT.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(65)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_65()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_UNDODELETE.FAILEDTODO.RETURN_VETO "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_UNDODELETE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(66)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_66()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(67)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_67()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(68)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_68()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.OKTODO.RETURN_UNWANTEDREASON "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(69)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - UNWANTED PHASE OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_69()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.OKTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(70)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - UNWANTED PHASE ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_70()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(71)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - UNWANTED PHASE SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_71()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(72)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - UNWANTED PHASE DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_72()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(73)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - UNWANTED PHASE FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_73()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_UNDODELETE.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" } "
L" IRowsetUpdate::Undo(A,B) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_UNDODELETE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(74)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_74()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(75)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_75()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(76)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_76()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.OKTODO.RETURN_EFAIL "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_EFAIL "
L" L1.ROW_UNDODELETE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_UNDODELETE.DIDEVENT.RETURN_EFAIL "
L" } "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(77)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_77()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.OKTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_UNDODELETE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_UNDODELETE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" } "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(78)
//*-----------------------------------------------------------------------
// @mfunc ROW_UNDODELETE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_78()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B) {} "
L" IRowsetChange::InsertRow(C) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(A,B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDODELETE.OKTODO.RETURN_EINVALIDARG "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.ROW_UNDODELETE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_UNDODELETE.DIDEVENT.RETURN_EINVALIDARG "
L" } "
L" IRowsetUpdate::Undo(B) "
L" { "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_VETO "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(79)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_79()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(80)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_80()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(81)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Undo unchanged row
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_81()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::DeleteRows(B) {} "
L" IRowsetUpdate::Undo(C) "
L" { "
L" } "
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(82)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Undo all rows
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_82()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::DeleteRows(B) {} "
L" IRowsetUpdate::Undo() "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_ACCEPT "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_ACCEPT "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" IRowsetUpdate::Undo() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(83)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Undo changed and unchanged
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_83()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::DeleteRows(B) {} "
L" IRowsetUpdate::Undo(A,B,C,D) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_ACCEPT "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_ACCEPT "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" IRowsetUpdate::Undo() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(84)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_84()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(85)
//--------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Verify Undo clears the FIRSTCHANGE status
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_85()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::SetData(A,2) "
L" {"
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetUpdate::Undo(A) "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" IRowsetChange::SetData(A,2) "
L" {"
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(86)
//--------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_86()
{
// TO DO: Add your own code here
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(87)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DBROWSTATUS_E_INVALID
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_87()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::DeleteRows(B) {} "
L" IRowsetUpdate::Undo(E,DB_E_ERRORSOCCURRED) "
L" { "
L" } "
L" IRowsetUpdate::Undo() "
L" { "
L" L1.ROW_UNDOCHANGE.ABOUTTODO.RETURN_ACCEPT "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_ACCEPT "
L" L1.ROW_UNDOINSERT.ABOUTTODO.RETURN_ACCEPT "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(88)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_88()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetUpdate::Undo() "
L" { "
L" } "
L" IRowsetUpdate::Undo() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(89)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_89()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::DeleteRows(B) {} "
L" IRowsetUpdate::Undo(A,B,C,D) "
L" { "
L" L1.ROW_UNDODELETE.ABOUTTODO.RETURN_ADVISE "
L" } "
L" IRowsetUpdate::Undo() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(90)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_90()
{
//From the spec: in delayed update mode rows with pending deletes cannot be used in GetData
//Povider may return DB_E_DELETEDROW from GetData if hRow referred to a pending delete row, but
//providers are not required to check for this condition and result of passing an invalid row handle in hRow is undefined
//=>Commented out L1.ROW_UNDODELETE.ABOUTTODO.IRowset::GetData(B)
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::DeleteRows(B) {} "
L" IRowsetUpdate::Undo(A,B,C,D) "
L" { "
L" L1.ROW_UNDOCHANGE.OKTODO.IRowset::GetData(A) {} "
// L" L1.ROW_UNDODELETE.ABOUTTODO.IRowset::GetData(B) {} "
L" L1.ROW_UNDODELETE.SYNCHAFTER.IRowset::GetData(B) {} "
L" L3.ROW_UNDOINSERT.ABOUTTODO.IRowset::GetData(D) {} "
L" } "
L" IRowsetUpdate::Undo() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(91)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetOriginalData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Undo::Variation_91()
{
//Form the spec:
//GetOriginalData gets the data most recently fetched from or transmitted to the data store
//=> for newly inserted row in delayed update mode we can not call GetOriginalData untill it's transmitted
//=> commented out L3.ROW_UNDOINSERT.ABOUTTODO.IRowsetUpdate::GetOriginalData(D,DB_E_NOTREENTRANT)
WCHAR CommandString[] =
L"{Listener L1; Listener L2; Listener L3; "
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::DeleteRows(B) {} "
L" IRowsetUpdate::Undo(A,B,C,D) "
L" { "
L" L1.ROW_UNDOCHANGE.OKTODO.IRowsetUpdate::GetOriginalData(A,DB_E_NOTREENTRANT) {} "
L" L1.ROW_UNDODELETE.ABOUTTODO.IRowsetUpdate::GetOriginalData(B,DB_E_NOTREENTRANT) {} "
// L" L3.ROW_UNDOINSERT.ABOUTTODO.IRowsetUpdate::GetOriginalData(D,DB_E_NOTREENTRANT) {} "
L" } "
L" IRowsetUpdate::Undo() "
L" { "
L" } "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL Undo::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}
// {{ TCW_TC_PROTOTYPE(Update)
//*-----------------------------------------------------------------------
//| Test Case: Update - Tests Notifications for IRowsetUpdate::Update
//| Created: 09/29/96
//*-----------------------------------------------------------------------
//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL Update::Init()
{
// {{ TCW_INIT_BASECLASS_CHECK
if(CExecutionManager::Init())
// }}
{
//Verify Rowset can be created...
TEST_PROVIDER(CreateRowset(CHANGE_BUFFERRED)==S_OK);
return TRUE;
}
return FALSE;
}
// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - Accept all phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_1()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetUpdate::Update(A,D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_2()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_3()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - DB_E_CANCELED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_4()
{
//Veriy the veto was successful
//Row should be unaffected by the Update
//Make sure Veto of the first setdata, doesn't affect the Update
//of the second setdata
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_VETO "
L" }"
L" IRowsetUpdate::GetOriginalData(A) {} "
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - DB_E_NOTREENTRANT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_5()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.OKTODO.IRowsetUpdate::Update(A,B,C,DB_E_NOTREENTRANT) {} "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_6()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_7()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - Veto OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_8()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_VETO "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - Veto ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_9()
{
//Make sure Veto of the first insert, doesn't affect the Update
//of the second insert
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::InsertRow(E) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(D,E,A) "
L" {"
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_VETO "
L" }"
L" IRowsetUpdate::Update(C) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - Veto SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_10()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.SYNCHAFTER.RETURN_VETO "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - Veto DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_11()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.DIDEVENT.RETURN_VETO "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - Veto FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_12()
{
//Make sure Veto of the first delete, doesn't affect the Update
//of the second delete
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::DeleteRows(B) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(B,C,A) "
L" {"
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_UPDATE.FAILEDTODO.RETURN_VETO "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_UPDATE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_13()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_14()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - UNWANTED REASON
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_15()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_UNWANTEDREASON "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - UNWANTED PHASE - OKTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_16()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - UNWANTED PHASE - ABOUTTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_17()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - UNWANTED PHASE - SYNCHAFTER
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_18()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.SYNCHAFTER.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - UNWANTED PHASE - DIDEVENT
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_19()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.DIDEVENT.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - UNWANTED PHASE - FAILEDTODO
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_20()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_VETO "
L" L1.ROW_UPDATE.FAILEDTODO.RETURN_UNWANTEDPHASE "
L" }"
L" IRowsetUpdate::Update(D) {} "
L" }"
L" }"
L"}";
//To produce FAILEDTODO, this reason/phase must be vetoable...
TESTC_PROVIDER(IsCancelableEvent(DBREASON_ROW_UPDATE, DBEVENTPHASE_ABOUTTODO));
TESTC(Execute(CommandString, CHANGE_BUFFERRED));
CLEANUP:
TRETURN;
}
// }}
// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_21()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_22()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - E_FAIL - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_23()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_EFAIL "
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_EFAIL "
L" L1.ROW_UPDATE.SYNCHAFTER.RETURN_EFAIL "
L" L1.ROW_UPDATE.DIDEVENT.RETURN_EFAIL "
L" }"
L" IRowsetUpdate::Update(C,D) "
L" {"
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_VETO "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - E_OUTOFMEMORY - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_24()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_EOUTOFMEMORY "
L" L1.ROW_UPDATE.SYNCHAFTER.RETURN_EOUTOFMEMORY "
L" L1.ROW_UPDATE.DIDEVENT.RETURN_EOUTOFMEMORY "
L" }"
L" IRowsetUpdate::Update(C,D) "
L" {"
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_VETO "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc ROW_UPDATE - E_INVALIDARG - All Phases
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_25()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_EINVALIDARG "
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_EINVALIDARG "
L" L1.ROW_UPDATE.SYNCHAFTER.RETURN_EINVALIDARG "
L" L1.ROW_UPDATE.DIDEVENT.RETURN_EINVALIDARG "
L" }"
L" IRowsetUpdate::Update(C,D) "
L" {"
L" L1.ROW_UPDATE.ABOUTTODO.RETURN_VETO "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_26()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_27()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Update all [no changes]
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_28()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetUpdate::Update() "
L" {"
L" }"
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Update all [changes]
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_29()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(D) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetUpdate::Update(D) "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Update changed and unchanged
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_30()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetUpdate::Update(A,B,D) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_31()
{
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(32)
//--------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Verify Update clears FIRSTCHANGE status
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_32()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::SetData(A,2) "
L" {"
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetUpdate::Update(A) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_ACCEPT "
L" }"
L" IRowsetChange::SetData(A,2) "
L" {"
L" L1.ROW_FIRSTCHANGE.OKTODO.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(33)
//--------------------------------------------------------------------
// @mfunc Empty
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_33()
{
// TO DO: Add your own code here
return TEST_SKIPPED;
}
// }}
// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - DBROWSTATUS_E_INVALID
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_34()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(E,DB_E_ERRORSOCCURRED) "
L" {"
L" }"
L" IRowsetUpdate::Update(C,D) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_ACCEPT "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - EmptyRowset
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_35()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowsetUpdate::Update() "
L" {"
L" }"
L" IRowsetUpdate::Update() "
L" {"
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, EMPTY_ROWSET | CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - Add/Remove Listeners
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_36()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_ADVISE "
L" }"
L" IRowsetUpdate::Update(C,D) "
L" {"
L" L1.ROW_UPDATE.OKTODO.RETURN_UNADVISE "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_37()
{
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B,C) "
L" {"
L" L1.ROW_UPDATE.OKTODO.IRowset::GetData(A) {} "
L" L1.ROW_UPDATE.OKTODO.IRowset::GetData(B) {} "
L" }"
L" IRowsetUpdate::Update(D) "
L" {"
L" L1.ROW_UPDATE.OKTODO.IRowset::GetData(D) {} "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc OTHER SCENARIOS - GetOriginalData
//
// @rdesc TEST_PASS or TEST_FAIL
//
int Update::Variation_38()
{
//Form the spec:
//GetOriginalData "gets the data most recently fetched from or transmitted to the data store;
//does not get values based on pending changes"
//=> for newly inserted row in delayed update mode we can not call GetOriginalData until it's transmitted
//=> commented out L1.ROW_UPDATE.OKTODO.IRowsetUpdate::GetOriginalData(D,DB_E_NOTREENTRANT)
WCHAR CommandString[] =
L"{Listener L1; Listener L2;"
L" {Control Control1;"
L" {"
L" IRowset::GetNextRows(A,B,C) {} "
L" IRowsetChange::InsertRow(D) {} "
L" IRowsetChange::SetData(A,2,5) {} "
L" IRowsetChange::SetData(B,2,5) {} "
L" IRowsetChange::DeleteRows(C) {} "
L" IRowsetUpdate::Update(A,B) "
L" {"
L" L1.ROW_UPDATE.OKTODO.IRowsetUpdate::GetOriginalData(A,DB_E_NOTREENTRANT) {} "
L" L1.ROW_UPDATE.OKTODO.IRowsetUpdate::GetOriginalData(B,DB_E_NOTREENTRANT) {} "
L" }"
L" IRowsetUpdate::Update(D) "
L" {"
// L" L1.ROW_UPDATE.OKTODO.IRowsetUpdate::GetOriginalData(D,DB_E_NOTREENTRANT) {} "
L" }"
L" }"
L" }"
L"}";
return Execute(CommandString, CHANGE_BUFFERRED);
}
// }}
// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL Update::Terminate()
{
// {{ TCW_TERM_BASECLASS_CHECK2
return(CExecutionManager::Terminate());
} // }}
// }}
// }}