4044 lines
104 KiB
C++
4044 lines
104 KiB
C++
//--------------------------------------------------------------------
|
|
// Microsoft OLE DB Test
|
|
//
|
|
// Copyright 1995-2000 Microsoft Corporation.
|
|
//
|
|
// @doc
|
|
//
|
|
// @module ICLSFACT.CPP | OLE DB IClassFactory tests for Provider,
|
|
// Provider's Error Lookup Service and the SDK Error object.
|
|
//
|
|
|
|
#include "modstandard.hpp"
|
|
#define DBINITCONSTANTS // Must be defined to initialize constants in OLEDB.H
|
|
#define INITGUID
|
|
#include "iclsfact.h"
|
|
#include "msdaguid.h" // ExtendedError
|
|
#include "msdadc.h" // DataConversion
|
|
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
// Module Values
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
// {{ TCW_MODULE_GLOBALS
|
|
DECLARE_MODULE_CLSID = { 0xad830a70, 0x5fd7, 0x11cf, { 0x97, 0x63, 0x00, 0xaa, 0x00, 0xbd, 0xf9, 0x52 }};
|
|
DECLARE_MODULE_NAME("IClassFactory");
|
|
DECLARE_MODULE_OWNER("Microsoft");
|
|
DECLARE_MODULE_DESCRIP("OLE DB Class Factory tests for Provider, Provider's Error Lookup Service and SDK Error Object.");
|
|
DECLARE_MODULE_VERSION(823743346);
|
|
// 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)
|
|
{
|
|
//Must either call CreateModInfo or CreateModuleDBSession before any testing
|
|
if(!CreateModInfo(pThisTestModule))
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @func Module level termination routine
|
|
//
|
|
// @rdesc Success or Failure
|
|
// @flag TRUE | Successful initialization
|
|
// @flag FALSE | Initialization problems
|
|
//
|
|
BOOL ModuleTerminate(CThisTestModule * pThisTestModule)
|
|
{
|
|
return ReleaseModInfo(pThisTestModule);
|
|
}
|
|
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
// Base Class Section
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
class CClsFac : public COLEDB
|
|
{
|
|
protected:
|
|
CLSID m_Clsid;
|
|
CLSCTX m_ClsCtx;
|
|
TCHAR m_wszLibFileName[MAX_PATH];
|
|
IUnknown * m_pIUnknown;
|
|
IUnknown * m_pIUnknown2;
|
|
IClassFactory * m_pIClassFactory;
|
|
public:
|
|
// @cmember CTOR
|
|
CClsFac(LPWSTR wszTestCaseName);
|
|
// @cmember DTOR
|
|
virtual ~CClsFac(){}
|
|
|
|
// @cmember This function must be called before
|
|
// executing any member function so that the
|
|
// correct component CLSID is used for valid calls.
|
|
BOOL SetComponent(CLSID ComponentClsid, CLSCTX ComponentClsCtx);
|
|
|
|
// @cmember This function will return the
|
|
// CLSID for the EXTENDEDERRORS CLSID.
|
|
CLSID GetExtendedErrorsCLSID();
|
|
|
|
// @cmember This function will return the
|
|
// CLSID for the Provider's Enumerator CLSID.
|
|
CLSID GetProviderEnumCLSID();
|
|
};
|
|
|
|
class CDllGetClassObj : public CClsFac
|
|
{
|
|
|
|
protected:
|
|
|
|
|
|
public:
|
|
// @cmember CTOR
|
|
CDllGetClassObj(LPWSTR wszTestCaseName) : CClsFac(wszTestCaseName){};
|
|
// @cmember DTOR
|
|
virtual ~CDllGetClassObj(){};
|
|
|
|
//-----------------------------------------
|
|
// Member functions which perform each test
|
|
//-----------------------------------------
|
|
|
|
// @cmember Valid creation with CoGetClassObject
|
|
int ValidCreationCoGetClassObject();
|
|
// @cmember Valid creation with LoadLibraryExEx
|
|
int ValidCreationLoadLibraryEx();
|
|
// @cmember E_INVALIDARG - ppvObj = NULL
|
|
int NullppvObj();
|
|
// @cmember E_NOINTERFACE - Invalid riid
|
|
int Invalidriid();
|
|
// @cmember CLASS_E_CLASSNOTAVAILABLE - LoadLibraryExEx, Bad CLSID
|
|
int Invalidrclsid();
|
|
|
|
};
|
|
|
|
|
|
class CCreateInstance : public CClsFac
|
|
{
|
|
protected:
|
|
|
|
public:
|
|
// @cmember CTOR
|
|
CCreateInstance(LPWSTR wszTestCaseName) : CClsFac(wszTestCaseName){};
|
|
// @cmember DTOR
|
|
virtual ~CCreateInstance(){};
|
|
|
|
//-----------------------------------------
|
|
// Member functions which perform each test
|
|
//-----------------------------------------
|
|
|
|
// @cmember Valid creation of 2 objects, release in same order
|
|
int MultipleCreateReleaseSameOrder();
|
|
// @cmember Valid creation of 2 objects, release in opposite order
|
|
int MultipleCreateReleaseOppositeOrder();
|
|
// @cmember Call LockServer after CreateInstance
|
|
int LockServerAfter();
|
|
// @cmember Non null pUnkOuter, takes expected HRESULT
|
|
int ValidpUnkOuter(HRESULT hr);
|
|
// @cmember Creates an instance for each supported interface
|
|
int CreateEachInterface(ULONG cIids, IID * rgIids);
|
|
// @cmember E_NOINTERFACE for Invalid riid
|
|
int InvalidRiid();
|
|
// @cmember E_INVALIDARG for Null ppvObj
|
|
int NullppvObj();
|
|
|
|
};
|
|
|
|
class CLockServer : public CClsFac
|
|
{
|
|
protected:
|
|
|
|
public:
|
|
// @cmember CTOR
|
|
CLockServer(LPWSTR wszTestCaseName) : CClsFac(wszTestCaseName){};
|
|
// @cmember DTOR
|
|
virtual ~CLockServer(){};
|
|
|
|
//-----------------------------------------
|
|
// Member functions which perform each test
|
|
//-----------------------------------------
|
|
|
|
// @cmember LockServer and CreateInstance
|
|
int LockAndCreate();
|
|
// @cmember LockServer and call CoFreeUnusedLibraries
|
|
int LockAndFree();
|
|
// @cmember LockServer twice
|
|
int LockTwice();
|
|
// @cmember LockServer, CreateInstance and Unlock Server
|
|
int LockAndCreateAndUnlock();
|
|
// @cmember LockServer, Unlock Server and Create
|
|
int LockAndUnlockAndCreate();
|
|
|
|
|
|
};
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// CClsFac CClsFac CClsFac
|
|
//--------------------------------------------------------------------
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Constructor
|
|
//
|
|
CClsFac::CClsFac(LPWSTR wszTestCaseName) : COLEDB(wszTestCaseName)
|
|
{
|
|
m_Clsid = GUID_NULL;
|
|
m_ClsCtx = CLSCTX_INPROC_SERVER;
|
|
wcscpy((wchar_t*)m_wszLibFileName, (wchar_t*)"");
|
|
m_pIUnknown = NULL;
|
|
m_pIUnknown2 = NULL;
|
|
m_pIClassFactory = NULL;
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Records the components CLSID to be tested in this test case,
|
|
// and uses it to find the dll path and name based in the registry.
|
|
//
|
|
BOOL CClsFac::SetComponent(CLSID ComponentClsid, CLSCTX ComponentClsCtx)
|
|
{
|
|
DWORD cbDllName = sizeof(m_wszLibFileName);
|
|
HKEY SubKey = 0;
|
|
BOOL fResults = FALSE;
|
|
TCHAR wszSubKeyIProc[MAX_PATH+1];
|
|
TCHAR wszSubKeyOProc[MAX_PATH+1];
|
|
LPWSTR wszClsid = NULL;
|
|
LPTSTR szClsid1 = NULL;
|
|
|
|
//Record the class id for the component to be tested
|
|
m_Clsid = ComponentClsid;
|
|
m_ClsCtx = ComponentClsCtx;
|
|
|
|
//Make sure we allocated memory ok
|
|
szClsid1 = (LPTSTR)PROVIDER_ALLOC(CLSID_WCHAR_SIZE_IN_BYTES);
|
|
if (!szClsid1)
|
|
goto CLEANUP;
|
|
|
|
//Get string form of component's class ID
|
|
if (SUCCEEDED(StringFromCLSID(ComponentClsid, &wszClsid)))
|
|
{
|
|
//Plug in clsid string to typical registry key path
|
|
_tcscpy(wszSubKeyIProc, _T("CLSID\\"));
|
|
_tcscpy(wszSubKeyOProc, _T("CLSID\\"));
|
|
#ifndef UNICODE
|
|
WideCharToMultiByte(CP_ACP,0,wszClsid,-1,szClsid1,CLSID_WCHAR_SIZE_IN_BYTES,NULL,NULL);
|
|
_tcscat(wszSubKeyIProc, szClsid1);
|
|
_tcscat(wszSubKeyOProc, szClsid1);
|
|
#else
|
|
wcscat((wchar_t*)wszSubKeyIProc, (wchar_t*)wszClsid);
|
|
wcscat((wchar_t*)wszSubKeyOProc, (wchar_t*)wszClsid);
|
|
#endif
|
|
_tcscat(wszSubKeyIProc, _T("\\InprocServer32"));
|
|
_tcscat(wszSubKeyOProc, _T("\\LocalServer32"));
|
|
|
|
//Lookup the dll path and name and store it for use in LoadLibraryEx
|
|
if( (ERROR_SUCCESS == RegOpenKeyEx(HKEY_CLASSES_ROOT, wszSubKeyIProc, 0, KEY_QUERY_VALUE, &SubKey)) ||
|
|
(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CLASSES_ROOT, wszSubKeyOProc, 0, KEY_QUERY_VALUE, &SubKey)) )
|
|
{
|
|
if (ERROR_SUCCESS == RegQueryValueEx(SubKey, NULL, NULL, NULL,
|
|
(BYTE *)m_wszLibFileName, &cbDllName))
|
|
{
|
|
fResults = TRUE;
|
|
goto CLEANUP;
|
|
}
|
|
}
|
|
|
|
//If we got here, there was a registry error
|
|
odtLog << wszErrorReadingRegistry;
|
|
}
|
|
|
|
CLEANUP:
|
|
|
|
// Close the SubKey
|
|
if(SubKey) RegCloseKey(SubKey);
|
|
|
|
PROVIDER_FREE(wszClsid);
|
|
PROVIDER_FREE(szClsid1);
|
|
|
|
return fResults;
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Records the components CLSID to be tested in this test case,
|
|
// and uses it to find the CLSID for Extended Error Lookup.
|
|
//
|
|
CLSID CClsFac::GetExtendedErrorsCLSID()
|
|
{
|
|
DWORD cbDllName = sizeof(m_wszLibFileName);
|
|
HKEY SubKey = 0;
|
|
CLSID ExtErrCLSID = GUID_NULL;
|
|
TCHAR wszSubKey[MAX_PATH+1];
|
|
TCHAR szSubKeyName[MAX_PATH+1];
|
|
LPWSTR wpszKeyCLSID = NULL;
|
|
LPWSTR wszClsid = NULL;
|
|
LPTSTR szClsid1 = NULL;
|
|
|
|
//Make sure we allocated memory ok
|
|
szClsid1 = (LPTSTR)PROVIDER_ALLOC(CLSID_WCHAR_SIZE_IN_BYTES);
|
|
if (!szClsid1)
|
|
goto CLEANUP;
|
|
|
|
//Get string form of provider class ID
|
|
if (SUCCEEDED(StringFromCLSID(m_pThisTestModule->m_ProviderClsid, &wszClsid)))
|
|
{
|
|
//Plug in clsid string to typical registry key path
|
|
_tcscpy(wszSubKey, _T("CLSID\\"));
|
|
#ifndef UNICODE
|
|
WideCharToMultiByte(CP_ACP,0,wszClsid,-1,szClsid1,CLSID_WCHAR_SIZE_IN_BYTES,NULL,NULL);
|
|
_tcscat(wszSubKey, szClsid1);
|
|
#else
|
|
wcscat((wchar_t*)wszSubKey, (wchar_t*)wszClsid);
|
|
#endif
|
|
|
|
_tcscat(wszSubKey, _T("\\EXTENDEDERRORS"));
|
|
|
|
//Lookup the dll path and name and store it for use in LoadLibraryEx
|
|
if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_CLASSES_ROOT, wszSubKey, 0, KEY_ENUMERATE_SUB_KEYS, &SubKey))
|
|
{
|
|
//If we got here, there was a registry error
|
|
odtLog << L"No Extended Error Support by the Provider\n";
|
|
goto CLEANUP;
|
|
}
|
|
|
|
//Lookup the dll path and name and store it for use in LoadLibraryEx
|
|
if (ERROR_SUCCESS == RegEnumKeyEx(SubKey, NULL, szSubKeyName, &cbDllName,
|
|
NULL, NULL, NULL, NULL))
|
|
{
|
|
wpszKeyCLSID = (LPWSTR)PROVIDER_ALLOC(MAX_PATH+1);
|
|
MultiByteToWideChar(CP_ACP,0,(LPCSTR)szSubKeyName,-1,wpszKeyCLSID,MAX_PATH+1);
|
|
CLSIDFromString((LPOLESTR)wpszKeyCLSID, &ExtErrCLSID);
|
|
}
|
|
}
|
|
|
|
CLEANUP:
|
|
|
|
// Close the SubKey
|
|
if(SubKey) RegCloseKey(SubKey);
|
|
|
|
PROVIDER_FREE(wszClsid);
|
|
PROVIDER_FREE(szClsid1);
|
|
PROVIDER_FREE(wpszKeyCLSID);
|
|
|
|
return ExtErrCLSID;
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Records the components CLSID to be tested in this test case,
|
|
// and uses it to find the CLSID for theProviders Enumerator.
|
|
//
|
|
CLSID CClsFac::GetProviderEnumCLSID()
|
|
{
|
|
HKEY SubKey = 0;
|
|
CLSID ExtErrCLSID = GUID_NULL;
|
|
TCHAR wszSubKey[MAX_PATH+1] = _T("");
|
|
TCHAR szKeyName[MAX_PATH+1] = _T("");
|
|
LONG cbKeyName;
|
|
LPWSTR wszClsid = NULL;
|
|
LPTSTR szClsid1 = NULL;
|
|
|
|
//Make sure we allocated memory ok
|
|
szClsid1 = (LPTSTR)PROVIDER_ALLOC(CLSID_WCHAR_SIZE_IN_BYTES);
|
|
if (!szClsid1)
|
|
goto CLEANUP;
|
|
|
|
//Get string form of provider class ID
|
|
if (SUCCEEDED(StringFromCLSID(m_pThisTestModule->m_ProviderClsid, &wszClsid)))
|
|
{
|
|
//Plug in clsid string to typical registry key path
|
|
_tcscpy(wszSubKey, _T("CLSID\\"));
|
|
#ifndef UNICODE
|
|
WideCharToMultiByte(CP_ACP,0,wszClsid,-1,szClsid1,CLSID_WCHAR_SIZE_IN_BYTES,NULL,NULL);
|
|
_tcscat(wszSubKey, szClsid1);
|
|
#else
|
|
wcscat((wchar_t*)wszSubKey, (wchar_t*)wszClsid);
|
|
#endif
|
|
|
|
//Lookup the dll path and name and store it for use in LoadLibraryEx
|
|
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_CLASSES_ROOT, wszSubKey, 0, KEY_READ, &SubKey))
|
|
if (ERROR_SUCCESS != RegQueryValue(SubKey, NULL, szKeyName, &cbKeyName))
|
|
goto CLEANUP;
|
|
|
|
_tcscat(szKeyName, _T(" Enumerator"));
|
|
}
|
|
|
|
CLEANUP:
|
|
|
|
odtLog <<szKeyName <<ENDL;
|
|
|
|
// Close the SubKey
|
|
if(SubKey) RegCloseKey(SubKey);
|
|
|
|
PROVIDER_FREE(wszClsid);
|
|
PROVIDER_FREE(szClsid1);
|
|
|
|
return ExtErrCLSID;
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// CDllGetClassObject CDllGetClassObject CDllGetClassObject
|
|
//--------------------------------------------------------------------
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Valid creation with CoGetClassObject
|
|
//
|
|
int CDllGetClassObj::ValidCreationCoGetClassObject()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
|
|
//Get a class factory from the component being tested
|
|
if (CHECK(CoGetClassObject(m_Clsid, m_ClsCtx, NULL,
|
|
IID_IClassFactory, (void **)&m_pIClassFactory), S_OK))
|
|
{
|
|
// Invalid for Remoting AV
|
|
if (m_ClsCtx == CLSCTX_INPROC_SERVER)
|
|
{
|
|
//Make sure that CreateInstance checks for NULL ppvObj
|
|
m_hr=m_pIClassFactory->CreateInstance(NULL, IID_IUnknown, NULL);
|
|
if ((m_hr != E_INVALIDARG) && (m_hr != E_POINTER))
|
|
CHECK(m_hr, E_INVALIDARG);
|
|
}
|
|
|
|
//Make sure we can use this class factory interface successfully
|
|
if (CHECK(m_pIClassFactory->CreateInstance(NULL, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
{
|
|
//We've gotten the object successfully
|
|
fResults = TRUE;
|
|
|
|
if(m_pIUnknown->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CreateInstance." <<ENDL;
|
|
m_pIUnknown = NULL;
|
|
}
|
|
|
|
if(m_pIClassFactory->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoGetClassObject." <<ENDL;
|
|
m_pIClassFactory = NULL;
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Valid creation with LoadLibraryEx
|
|
//
|
|
int CDllGetClassObj::ValidCreationLoadLibraryEx()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
HINSTANCE hinst;
|
|
DLLGETCLASSOBJECTFUNC proc;
|
|
|
|
//Use LoadLibraryEx/GetProcAddress to access the DllGetClassObject
|
|
if (hinst = LoadLibraryEx(m_wszLibFileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH))
|
|
{
|
|
if (proc = (DLLGETCLASSOBJECTFUNC)GetProcAddress(hinst, "DllGetClassObject"))
|
|
if (CHECK(m_hr = ((proc)(m_Clsid, IID_IClassFactory, (void**)&m_pIClassFactory)), S_OK))
|
|
{
|
|
//Make sure we can use this class factory interface successfully
|
|
if (CHECK(m_pIClassFactory->CreateInstance(NULL, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
{
|
|
//We've gotten the object successfully
|
|
fResults = TRUE;
|
|
|
|
if(m_pIUnknown->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CreateInstance." <<ENDL;
|
|
m_pIUnknown = NULL;
|
|
}
|
|
|
|
if(m_pIClassFactory->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoGetClassObject." <<ENDL;
|
|
m_pIClassFactory = NULL;
|
|
}
|
|
|
|
FreeLibrary(hinst);
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc E_INVALIDARG - ppvObj = NULL
|
|
//
|
|
int CDllGetClassObj::NullppvObj()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
HINSTANCE hinst;
|
|
DLLGETCLASSOBJECTFUNC proc;
|
|
|
|
//Use LoadLibraryEx/GetProcAddress to access the DllGetClassObject
|
|
//We use LoadLibraryEx because CoGetClassObject tries to validate
|
|
//the pointer, causing an annoying Access Violation (which it still handles).
|
|
if (hinst = LoadLibraryEx(m_wszLibFileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH))
|
|
{
|
|
if (proc = (DLLGETCLASSOBJECTFUNC)GetProcAddress(hinst, "DllGetClassObject"))
|
|
{
|
|
//Pass a NULL ppvObj to DllGetClassObject
|
|
m_hr = ((proc)(m_Clsid, IID_IClassFactory, NULL));
|
|
|
|
if ((m_hr == E_INVALIDARG) || (m_hr == E_POINTER))
|
|
fResults = TRUE;
|
|
}
|
|
|
|
FreeLibrary(hinst);
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc E_NOINTERFACE - Invalid riid
|
|
//
|
|
int CDllGetClassObj::Invalidriid()
|
|
{
|
|
//Pass an Invalid riid (IID_IRowset) to DllGetClassObject via CoGetClassObject
|
|
m_hr = CoGetClassObject(m_Clsid, m_ClsCtx, NULL,
|
|
IID_IRowset, (void **)&m_pIClassFactory);
|
|
|
|
if ((m_hr == E_NOINTERFACE) || (m_hr == REGDB_E_CLASSNOTREG))
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
//
|
|
int CDllGetClassObj::Invalidrclsid()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
HINSTANCE hinst;
|
|
DLLGETCLASSOBJECTFUNC proc;
|
|
|
|
//Use LoadLibraryEx/GetProcAddress to access the DllGetClassObject
|
|
if (hinst = LoadLibraryEx(m_wszLibFileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH))
|
|
{
|
|
if (proc = (DLLGETCLASSOBJECTFUNC)GetProcAddress(hinst, "DllGetClassObject"))
|
|
//Now call the function with a bogus class id
|
|
if (CHECK( m_hr = ((proc)(GUID_NULL, IID_IClassFactory,
|
|
(void **)&m_pIClassFactory)) , CLASS_E_CLASSNOTAVAILABLE))
|
|
//We got the correct return value
|
|
fResults = TRUE;
|
|
|
|
FreeLibrary(hinst);
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// CCreateInstance CCreateInstance CCreateInstance
|
|
//--------------------------------------------------------------------
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Valid creation of 2 objects, release in same order
|
|
//
|
|
int CCreateInstance::MultipleCreateReleaseSameOrder()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
|
|
//Create first object
|
|
if (CHECK(CoCreateInstance(m_Clsid, NULL, m_ClsCtx, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
|
|
//Create second object
|
|
if (CHECK(CoCreateInstance(m_Clsid, NULL, m_ClsCtx, IID_IUnknown,
|
|
(void **)&m_pIUnknown2), S_OK))
|
|
{
|
|
//We've gotten the object successfully
|
|
fResults = TRUE;
|
|
|
|
//Release first object
|
|
if(m_pIUnknown->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoCreateInstance." <<ENDL;
|
|
m_pIUnknown = NULL;
|
|
|
|
if(m_pIUnknown2->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoCreateInstance." <<ENDL;
|
|
m_pIUnknown2 = NULL;
|
|
}
|
|
|
|
SAFE_RELEASE(m_pIUnknown);
|
|
SAFE_RELEASE(m_pIUnknown2);
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Valid creation of 2 objects, release in opposite order
|
|
int CCreateInstance::MultipleCreateReleaseOppositeOrder()
|
|
//
|
|
{
|
|
|
|
BOOL fResults = FALSE;
|
|
|
|
//Create first object
|
|
if (CHECK(CoCreateInstance(m_Clsid, NULL, m_ClsCtx, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
|
|
//Create second object
|
|
if (CHECK(CoCreateInstance(m_Clsid, NULL, m_ClsCtx, IID_IUnknown,
|
|
(void **)&m_pIUnknown2), S_OK))
|
|
{
|
|
//We've gotten the object successfully
|
|
fResults = TRUE;
|
|
|
|
//Release second object
|
|
if(m_pIUnknown2->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoCreateInstance." <<ENDL;
|
|
m_pIUnknown2 = NULL;
|
|
|
|
if(m_pIUnknown->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoCreateInstance." <<ENDL;
|
|
m_pIUnknown = NULL;
|
|
}
|
|
|
|
SAFE_RELEASE(m_pIUnknown);
|
|
SAFE_RELEASE(m_pIUnknown2);
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Call LockServer after CreateInstance
|
|
//
|
|
int CCreateInstance::LockServerAfter()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
HINSTANCE hinst;
|
|
DLLGETCLASSOBJECTFUNC proc;
|
|
|
|
//Use LoadLibraryEx/GetProcAddress to access the IClassFactory interface
|
|
if (hinst = LoadLibraryEx(m_wszLibFileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH))
|
|
{
|
|
if (proc = (DLLGETCLASSOBJECTFUNC)GetProcAddress(hinst, "DllGetClassObject"))
|
|
if (CHECK( m_hr = ((proc)(m_Clsid, IID_IClassFactory,
|
|
(void **)&m_pIClassFactory)) , S_OK))
|
|
{
|
|
//Call CreateInstance first
|
|
if (CHECK(m_pIClassFactory->CreateInstance(NULL, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
{
|
|
//Call LockServer next
|
|
if (CHECK(m_pIClassFactory->LockServer(TRUE), S_OK))
|
|
{
|
|
fResults = TRUE;
|
|
CHECK(m_pIClassFactory->LockServer(FALSE), S_OK);
|
|
}
|
|
|
|
SAFE_RELEASE(m_pIUnknown);
|
|
}
|
|
|
|
SAFE_RELEASE(m_pIClassFactory);
|
|
}
|
|
|
|
FreeLibrary(hinst);
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Non null pUnkOuter, takes expected HRESULT
|
|
//
|
|
int CCreateInstance::ValidpUnkOuter(HRESULT hr)
|
|
{
|
|
BOOL fResults = FALSE;
|
|
|
|
//Make a bogus IUnkOuter, just to see if its taken by the object
|
|
//which we are attempting to aggregate.
|
|
IUnknown * pBogusIUnknown = NULL;
|
|
if( !CHECK(CoCreateInstance(m_Clsid, NULL, m_ClsCtx, IID_IUnknown,
|
|
(void **)&pBogusIUnknown), S_OK) )
|
|
return TEST_FAIL;
|
|
|
|
//Try to make an aggregated object, checking that the result is what user expected
|
|
if (CHECK(CoCreateInstance(m_Clsid, pBogusIUnknown, CLSCTX_INPROC_SERVER, IID_IUnknown,
|
|
(void **)&m_pIUnknown), hr))
|
|
fResults = TRUE;
|
|
|
|
//Release object if we successfully created it
|
|
SAFE_RELEASE(m_pIUnknown);
|
|
SAFE_RELEASE(pBogusIUnknown);
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc Creates an instance for each supported interface
|
|
//
|
|
int CCreateInstance::CreateEachInterface(ULONG cIids, IID * rgIids)
|
|
{
|
|
BOOL fResults = TRUE; //This will only change if we fail at least once
|
|
|
|
//Loop thru array of IIDs and create one object using each interface
|
|
while (cIids > 0)
|
|
{
|
|
//Change the one based count into an array index
|
|
cIids--;
|
|
|
|
if (CHECK(CoCreateInstance(m_Clsid, NULL, m_ClsCtx, rgIids[cIids],
|
|
(void **)&m_pIUnknown), S_OK))
|
|
{
|
|
SAFE_RELEASE(m_pIUnknown);
|
|
}
|
|
else
|
|
fResults = FALSE;
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc E_NOINTERFACE for Invalid riid
|
|
//
|
|
int CCreateInstance::InvalidRiid()
|
|
{
|
|
//Try to create the object asking for a invalid interface at this level
|
|
if (CHECK(CoCreateInstance(m_Clsid, NULL, m_ClsCtx, IID_IRowsetLocate,
|
|
(void **)&m_pIUnknown), E_NOINTERFACE))
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc E_INVALIDARG for Null ppvObj
|
|
//
|
|
int CCreateInstance::NullppvObj()
|
|
{
|
|
if (CHECK(CoCreateInstance(m_Clsid, NULL, m_ClsCtx, IID_IClassFactory, NULL), E_INVALIDARG))
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// CLockServer CLockServer CLockServer
|
|
//--------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc LockServer and CreateInstance
|
|
//
|
|
int CLockServer::LockAndCreate()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
|
|
//Check that our object can be created after locking and
|
|
//released after unlocking the server
|
|
if (CHECK(CoGetClassObject(m_Clsid, m_ClsCtx, NULL,
|
|
IID_IClassFactory, (void **)&m_pIClassFactory), S_OK))
|
|
{
|
|
if (CHECK(m_pIClassFactory->LockServer(TRUE), S_OK))
|
|
if (CHECK(m_pIClassFactory->CreateInstance(NULL, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
if (CHECK(m_pIClassFactory->LockServer(FALSE), S_OK))
|
|
{
|
|
//We've gotten the object successfully
|
|
fResults = TRUE;
|
|
|
|
if(m_pIUnknown->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CreateInstance." <<ENDL;
|
|
m_pIUnknown = NULL;
|
|
}
|
|
|
|
if(m_pIClassFactory->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoGetClassObject." <<ENDL;
|
|
m_pIClassFactory = NULL;
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc LockServer and call CoFreeUnusedLibraries
|
|
//
|
|
int CLockServer::LockAndFree()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
|
|
//Check that our object can be created after locking and
|
|
//calling CoFreeUnusedLibraries. Note, we can't really
|
|
//verify that the library doesn't get freed and then reloaded,
|
|
//but we can make sure that it doesn't blow up following a call
|
|
//to CoFreeUnusedLibraries.
|
|
if (CHECK(CoGetClassObject(m_Clsid, m_ClsCtx, NULL,
|
|
IID_IClassFactory, (void **)&m_pIClassFactory), S_OK))
|
|
{
|
|
if (CHECK(m_pIClassFactory->LockServer(TRUE), S_OK))
|
|
{
|
|
CoFreeUnusedLibraries();
|
|
if (CHECK(m_pIClassFactory->CreateInstance(NULL, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
if (CHECK(m_pIClassFactory->LockServer(FALSE), S_OK))
|
|
{
|
|
//We've gotten the object successfully
|
|
fResults = TRUE;
|
|
|
|
if(m_pIUnknown->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CreateInstance." <<ENDL;
|
|
m_pIUnknown = NULL;
|
|
}
|
|
}
|
|
|
|
if(m_pIClassFactory->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoGetClassObject." <<ENDL;
|
|
m_pIClassFactory = NULL;
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc LockServer twice
|
|
//
|
|
int CLockServer::LockTwice()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
|
|
//Check that our object can be created after locking twice and
|
|
//released before unlocking the server
|
|
if (CHECK(CoGetClassObject(m_Clsid, m_ClsCtx, NULL,
|
|
IID_IClassFactory, (void **)&m_pIClassFactory), S_OK))
|
|
{
|
|
if (CHECK(m_pIClassFactory->LockServer(TRUE), S_OK))
|
|
if (CHECK(m_pIClassFactory->LockServer(TRUE), S_OK))
|
|
if (CHECK(m_pIClassFactory->CreateInstance(NULL, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
//Lock here again just to be sure we can do it after Create
|
|
if (CHECK(m_pIClassFactory->LockServer(TRUE), S_OK))
|
|
if (CHECK(m_pIClassFactory->LockServer(FALSE), S_OK))
|
|
{
|
|
if(m_pIUnknown->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CreateInstance." <<ENDL;
|
|
m_pIUnknown = NULL;
|
|
|
|
if (CHECK(m_pIClassFactory->LockServer(FALSE), S_OK))
|
|
if (CHECK(m_pIClassFactory->LockServer(FALSE), S_OK))
|
|
fResults = TRUE;
|
|
}
|
|
|
|
if(m_pIClassFactory->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoGetClassObject." <<ENDL;
|
|
m_pIClassFactory = NULL;
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc LockServer, CreateInstance and Unlock Server
|
|
//
|
|
int CLockServer::LockAndCreateAndUnlock()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
|
|
//Check that our object can be created after locking twice and
|
|
//released before unlocking the server
|
|
if (CHECK(CoGetClassObject(m_Clsid, m_ClsCtx, NULL,
|
|
IID_IClassFactory, (void **)&m_pIClassFactory), S_OK))
|
|
{
|
|
if (CHECK(m_pIClassFactory->LockServer(TRUE), S_OK))
|
|
if (CHECK(m_pIClassFactory->CreateInstance(NULL, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
if (CHECK(m_pIClassFactory->LockServer(FALSE), S_OK))
|
|
{
|
|
//We've gotten the object successfully
|
|
fResults = TRUE;
|
|
|
|
if(m_pIClassFactory->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoGetClassObject." <<ENDL;
|
|
m_pIClassFactory = NULL;
|
|
|
|
if(m_pIUnknown->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CreateInstance." <<ENDL;
|
|
m_pIUnknown = NULL;
|
|
}
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc LockServer, Unlock Server and CreateInstance
|
|
//
|
|
int CLockServer::LockAndUnlockAndCreate()
|
|
{
|
|
BOOL fResults = FALSE;
|
|
|
|
//Check that our object can be created after locking twice and
|
|
//released before unlocking the server
|
|
if (CHECK(CoGetClassObject(m_Clsid, m_ClsCtx, NULL,
|
|
IID_IClassFactory, (void **)&m_pIClassFactory), S_OK))
|
|
{
|
|
if (CHECK(m_pIClassFactory->LockServer(TRUE), S_OK))
|
|
if (CHECK(m_pIClassFactory->LockServer(FALSE), S_OK))
|
|
if (CHECK(m_pIClassFactory->CreateInstance(NULL, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
{
|
|
//We've gotten the object successfully
|
|
fResults = TRUE;
|
|
|
|
if(m_pIClassFactory->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CoGetClassObject." <<ENDL;
|
|
m_pIClassFactory = NULL;
|
|
|
|
if(m_pIUnknown->Release() != 0)
|
|
odtLog <<L"Release did not return 0 for CreateInstance." <<ENDL;
|
|
m_pIUnknown = NULL;
|
|
}
|
|
}
|
|
|
|
if (fResults)
|
|
return TEST_PASS;
|
|
else
|
|
return TEST_FAIL;
|
|
}
|
|
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
// Test Case Section
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(DllGetClassObj_ErrorObject)
|
|
//--------------------------------------------------------------------
|
|
// @class DllGetClassObject test for OLE DB Error Object
|
|
//
|
|
class DllGetClassObj_ErrorObject : public CDllGetClassObj {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(DllGetClassObj_ErrorObject,CDllGetClassObj);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Valid creation with CoGetClassObject
|
|
int Variation_1();
|
|
// @cmember Valid creation with LoadLibraryEx
|
|
int Variation_2();
|
|
// @cmember E_INVALIDARG - ppvObj = NULL
|
|
int Variation_3();
|
|
// @cmember E_NOINTERFACE - Invalid riid
|
|
int Variation_4();
|
|
// @cmember CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(DllGetClassObj_ErrorObject)
|
|
#define THE_CLASS DllGetClassObj_ErrorObject
|
|
BEG_TEST_CASE(DllGetClassObj_ErrorObject, CDllGetClassObj, L"DllGetClassObject test for OLE DB Error Object")
|
|
TEST_VARIATION(1, L"Valid creation with CoGetClassObject")
|
|
TEST_VARIATION(2, L"Valid creation with LoadLibraryEx")
|
|
TEST_VARIATION(3, L"E_INVALIDARG - ppvObj = NULL")
|
|
TEST_VARIATION(4, L"E_NOINTERFACE - Invalid riid")
|
|
TEST_VARIATION(5, L"CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(DllGetClassObj_Provider)
|
|
//--------------------------------------------------------------------
|
|
// @class DllGetClassObject test for Provider
|
|
//
|
|
class DllGetClassObj_Provider : public CDllGetClassObj {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(DllGetClassObj_Provider,CDllGetClassObj);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Valid creation with CoGetClassObject
|
|
int Variation_1();
|
|
// @cmember Valid creation with LoadLibraryEx
|
|
int Variation_2();
|
|
// @cmember E_INVALIDARG - ppvObj = NULL
|
|
int Variation_3();
|
|
// @cmember E_NOINTERFACE - Invalid riid
|
|
int Variation_4();
|
|
// @cmember CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(DllGetClassObj_Provider)
|
|
#define THE_CLASS DllGetClassObj_Provider
|
|
BEG_TEST_CASE(DllGetClassObj_Provider, CDllGetClassObj, L"DllGetClassObject test for Provider")
|
|
TEST_VARIATION(1, L"Valid creation with CoGetClassObject")
|
|
TEST_VARIATION(2, L"Valid creation with LoadLibraryEx")
|
|
TEST_VARIATION(3, L"E_INVALIDARG - ppvObj = NULL")
|
|
TEST_VARIATION(4, L"E_NOINTERFACE - Invalid riid")
|
|
TEST_VARIATION(5, L"CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(DllGetClassObj_ErrorLookup)
|
|
//--------------------------------------------------------------------
|
|
// @class DllGetClassObject test for Provider's Error Lookup service
|
|
//
|
|
class DllGetClassObj_ErrorLookup : public CDllGetClassObj {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(DllGetClassObj_ErrorLookup,CDllGetClassObj);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Valid creation with CoGetClassObject
|
|
int Variation_1();
|
|
// @cmember Valid creation with LoadLibraryEx
|
|
int Variation_2();
|
|
// @cmember E_INVALIDARG - ppvObj = NULL
|
|
int Variation_3();
|
|
// @cmember E_NOINTERFACE - Invalid riid
|
|
int Variation_4();
|
|
// @cmember CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(DllGetClassObj_ErrorLookup)
|
|
#define THE_CLASS DllGetClassObj_ErrorLookup
|
|
BEG_TEST_CASE(DllGetClassObj_ErrorLookup, CDllGetClassObj, L"DllGetClassObject test for Provider's Error Lookup service")
|
|
TEST_VARIATION(1, L"Valid creation with CoGetClassObject")
|
|
TEST_VARIATION(2, L"Valid creation with LoadLibraryEx")
|
|
TEST_VARIATION(3, L"E_INVALIDARG - ppvObj = NULL")
|
|
TEST_VARIATION(4, L"E_NOINTERFACE - Invalid riid")
|
|
TEST_VARIATION(5, L"CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(DllGetClassObj_ConversionLibrary)
|
|
//--------------------------------------------------------------------
|
|
// @class DllGetClassObject test for OLE DB Conversion Library Object
|
|
//
|
|
class DllGetClassObj_ConversionLibrary : public CDllGetClassObj {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(DllGetClassObj_ConversionLibrary,CDllGetClassObj);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Valid creation with CoGetClassObject
|
|
int Variation_1();
|
|
// @cmember Valid creation with LoadLibraryEx
|
|
int Variation_2();
|
|
// @cmember E_INVALIDARG - ppvObj = NULL
|
|
int Variation_3();
|
|
// @cmember E_NOINTERFACE - Invalid riid
|
|
int Variation_4();
|
|
// @cmember CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(DllGetClassObj_ConversionLibrary)
|
|
#define THE_CLASS DllGetClassObj_ConversionLibrary
|
|
BEG_TEST_CASE(DllGetClassObj_ConversionLibrary, CDllGetClassObj, L"DllGetClassObject test for OLE DB Conversion Library Object")
|
|
TEST_VARIATION(1, L"Valid creation with CoGetClassObject")
|
|
TEST_VARIATION(2, L"Valid creation with LoadLibraryEx")
|
|
TEST_VARIATION(3, L"E_INVALIDARG - ppvObj = NULL")
|
|
TEST_VARIATION(4, L"E_NOINTERFACE - Invalid riid")
|
|
TEST_VARIATION(5, L"CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(DllGetClassObj_OleDBEnumerator)
|
|
//--------------------------------------------------------------------
|
|
// @class DllGetClassObject test for OLE DB Root Enumerator Object
|
|
//
|
|
class DllGetClassObj_OleDBEnumerator : public CDllGetClassObj {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(DllGetClassObj_OleDBEnumerator,CDllGetClassObj);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Valid creation with CoGetClassObject
|
|
int Variation_1();
|
|
// @cmember Valid creation with LoadLibraryEx
|
|
int Variation_2();
|
|
// @cmember E_INVALIDARG - ppvObj = NULL
|
|
int Variation_3();
|
|
// @cmember E_NOINTERFACE - Invalid riid
|
|
int Variation_4();
|
|
// @cmember CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(DllGetClassObj_OleDBEnumerator)
|
|
#define THE_CLASS DllGetClassObj_OleDBEnumerator
|
|
BEG_TEST_CASE(DllGetClassObj_OleDBEnumerator, CDllGetClassObj, L"DllGetClassObject test for OLE DB Root Enumerator Object")
|
|
TEST_VARIATION(1, L"Valid creation with CoGetClassObject")
|
|
TEST_VARIATION(2, L"Valid creation with LoadLibraryEx")
|
|
TEST_VARIATION(3, L"E_INVALIDARG - ppvObj = NULL")
|
|
TEST_VARIATION(4, L"E_NOINTERFACE - Invalid riid")
|
|
TEST_VARIATION(5, L"CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(DllGetClassObj_MsdasqlEnumerator)
|
|
//--------------------------------------------------------------------
|
|
// @class DllGetClassObject test for MSDASQL's Enumerator Object
|
|
//
|
|
class DllGetClassObj_MsdasqlEnumerator : public CDllGetClassObj {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(DllGetClassObj_MsdasqlEnumerator,CDllGetClassObj);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Valid creation with CoGetClassObject
|
|
int Variation_1();
|
|
// @cmember Valid creation with LoadLibraryEx
|
|
int Variation_2();
|
|
// @cmember E_INVALIDARG - ppvObj = NULL
|
|
int Variation_3();
|
|
// @cmember E_NOINTERFACE - Invalid riid
|
|
int Variation_4();
|
|
// @cmember CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(DllGetClassObj_MsdasqlEnumerator)
|
|
#define THE_CLASS DllGetClassObj_MsdasqlEnumerator
|
|
BEG_TEST_CASE(DllGetClassObj_MsdasqlEnumerator, CDllGetClassObj, L"DllGetClassObject test for MSDASQL's Enumerator Object")
|
|
TEST_VARIATION(1, L"Valid creation with CoGetClassObject")
|
|
TEST_VARIATION(2, L"Valid creation with LoadLibraryEx")
|
|
TEST_VARIATION(3, L"E_INVALIDARG - ppvObj = NULL")
|
|
TEST_VARIATION(4, L"E_NOINTERFACE - Invalid riid")
|
|
TEST_VARIATION(5, L"CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(CreateInstance_ErrorObject)
|
|
//--------------------------------------------------------------------
|
|
// @class CreateInstance test for OLE DB Error Object
|
|
//
|
|
class CreateInstance_ErrorObject : public CCreateInstance {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(CreateInstance_ErrorObject,CCreateInstance);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Multiple Creations, Release in same order
|
|
int Variation_1();
|
|
// @cmember Multiple Creations, Release in opposite order
|
|
int Variation_2();
|
|
// @cmember LockServer After CreateInstance
|
|
int Variation_3();
|
|
// @cmember Valid pUnkOuter
|
|
int Variation_4();
|
|
// @cmember Create one object with each supported interface
|
|
int Variation_5();
|
|
// @cmember Invalid riid
|
|
int Variation_6();
|
|
// @cmember Null ppvObj
|
|
int Variation_7();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(CreateInstance_ErrorObject)
|
|
#define THE_CLASS CreateInstance_ErrorObject
|
|
BEG_TEST_CASE(CreateInstance_ErrorObject, CCreateInstance, L"CreateInstance test for OLE DB Error Object")
|
|
TEST_VARIATION(1, L"Multiple Creations, Release in same order")
|
|
TEST_VARIATION(2, L"Multiple Creations, Release in opposite order")
|
|
TEST_VARIATION(3, L"LockServer After CreateInstance")
|
|
TEST_VARIATION(4, L"Valid pUnkOuter")
|
|
TEST_VARIATION(5, L"Create one object with each supported interface")
|
|
TEST_VARIATION(6, L"Invalid riid")
|
|
TEST_VARIATION(7, L"Null ppvObj")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(CreateInstance_Provider)
|
|
//--------------------------------------------------------------------
|
|
// @class CreateInstance test for the Provider
|
|
//
|
|
class CreateInstance_Provider : public CCreateInstance {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(CreateInstance_Provider,CCreateInstance);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Multiple Creations, Release in same order
|
|
int Variation_1();
|
|
// @cmember Multiple Creations, Release in opposite order
|
|
int Variation_2();
|
|
// @cmember LockServer After CreateInstance
|
|
int Variation_3();
|
|
// @cmember Valid pUnkOuter
|
|
int Variation_4();
|
|
// @cmember Create one object with each supported interface
|
|
int Variation_5();
|
|
// @cmember Invalid riid
|
|
int Variation_6();
|
|
// @cmember Null ppvObj
|
|
int Variation_7();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(CreateInstance_Provider)
|
|
#define THE_CLASS CreateInstance_Provider
|
|
BEG_TEST_CASE(CreateInstance_Provider, CCreateInstance, L"CreateInstance test for the Provider")
|
|
TEST_VARIATION(1, L"Multiple Creations, Release in same order")
|
|
TEST_VARIATION(2, L"Multiple Creations, Release in opposite order")
|
|
TEST_VARIATION(3, L"LockServer After CreateInstance")
|
|
TEST_VARIATION(4, L"Valid pUnkOuter")
|
|
TEST_VARIATION(5, L"Create one object with each supported interface")
|
|
TEST_VARIATION(6, L"Invalid riid")
|
|
TEST_VARIATION(7, L"Null ppvObj")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(CreateInstance_ErrorLookup)
|
|
//--------------------------------------------------------------------
|
|
// @class CreateInstance test for Provider's Error Lookup Service
|
|
//
|
|
class CreateInstance_ErrorLookup : public CCreateInstance {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(CreateInstance_ErrorLookup,CCreateInstance);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Multiple Creations, Release in same order
|
|
int Variation_1();
|
|
// @cmember Multiple Creations, Release in opposite order
|
|
int Variation_2();
|
|
// @cmember LockServer After CreateInstance
|
|
int Variation_3();
|
|
// @cmember Valid pUnkOuter
|
|
int Variation_4();
|
|
// @cmember Create one object with each supported interface
|
|
int Variation_5();
|
|
// @cmember Invalid riid
|
|
int Variation_6();
|
|
// @cmember Null ppvObj
|
|
int Variation_7();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(CreateInstance_ErrorLookup)
|
|
#define THE_CLASS CreateInstance_ErrorLookup
|
|
BEG_TEST_CASE(CreateInstance_ErrorLookup, CCreateInstance, L"CreateInstance test for Provider's Error Lookup Service")
|
|
TEST_VARIATION(1, L"Multiple Creations, Release in same order")
|
|
TEST_VARIATION(2, L"Multiple Creations, Release in opposite order")
|
|
TEST_VARIATION(3, L"LockServer After CreateInstance")
|
|
TEST_VARIATION(4, L"Valid pUnkOuter")
|
|
TEST_VARIATION(5, L"Create one object with each supported interface")
|
|
TEST_VARIATION(6, L"Invalid riid")
|
|
TEST_VARIATION(7, L"Null ppvObj")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(CreateInstance_ConversionLibrary)
|
|
//--------------------------------------------------------------------
|
|
// @class CreateInstance test for OLE DB Conversion Library Object
|
|
//
|
|
class CreateInstance_ConversionLibrary : public CCreateInstance {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(CreateInstance_ConversionLibrary,CCreateInstance);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Multiple Creations, Release in same order
|
|
int Variation_1();
|
|
// @cmember Multiple Creations, Release in opposite order
|
|
int Variation_2();
|
|
// @cmember LockServer After CreateInstance
|
|
int Variation_3();
|
|
// @cmember Valid pUnkOuter
|
|
int Variation_4();
|
|
// @cmember Create one object with each supported interface
|
|
int Variation_5();
|
|
// @cmember Invalid riid
|
|
int Variation_6();
|
|
// @cmember Null ppvObj
|
|
int Variation_7();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(CreateInstance_ConversionLibrary)
|
|
#define THE_CLASS CreateInstance_ConversionLibrary
|
|
BEG_TEST_CASE(CreateInstance_ConversionLibrary, CCreateInstance, L"CreateInstance test for OLE DB Conversion Library Object")
|
|
TEST_VARIATION(1, L"Multiple Creations, Release in same order")
|
|
TEST_VARIATION(2, L"Multiple Creations, Release in opposite order")
|
|
TEST_VARIATION(3, L"LockServer After CreateInstance")
|
|
TEST_VARIATION(4, L"Valid pUnkOuter")
|
|
TEST_VARIATION(5, L"Create one object with each supported interface")
|
|
TEST_VARIATION(6, L"Invalid riid")
|
|
TEST_VARIATION(7, L"Null ppvObj")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(CreateInstance_OleDBEnumerator)
|
|
//--------------------------------------------------------------------
|
|
// @class CreateInstance test for OLE DB Root Enumerator Object
|
|
//
|
|
class CreateInstance_OleDBEnumerator : public CCreateInstance {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(CreateInstance_OleDBEnumerator,CCreateInstance);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Multiple Creations, Release in same order
|
|
int Variation_1();
|
|
// @cmember Multiple Creations, Release in opposite order
|
|
int Variation_2();
|
|
// @cmember LockServer After CreateInstance
|
|
int Variation_3();
|
|
// @cmember Valid pUnkOuter
|
|
int Variation_4();
|
|
// @cmember Create one object with each supported interface
|
|
int Variation_5();
|
|
// @cmember Invalid riid
|
|
int Variation_6();
|
|
// @cmember Null ppvObj
|
|
int Variation_7();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(CreateInstance_OleDBEnumerator)
|
|
#define THE_CLASS CreateInstance_OleDBEnumerator
|
|
BEG_TEST_CASE(CreateInstance_OleDBEnumerator, CCreateInstance, L"CreateInstance test for OLE DB Root Enumerator Object")
|
|
TEST_VARIATION(1, L"Multiple Creations, Release in same order")
|
|
TEST_VARIATION(2, L"Multiple Creations, Release in opposite order")
|
|
TEST_VARIATION(3, L"LockServer After CreateInstance")
|
|
TEST_VARIATION(4, L"Valid pUnkOuter")
|
|
TEST_VARIATION(5, L"Create one object with each supported interface")
|
|
TEST_VARIATION(6, L"Invalid riid")
|
|
TEST_VARIATION(7, L"Null ppvObj")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(CreateInstance_MsdasqlEnumerator)
|
|
//--------------------------------------------------------------------
|
|
// @class CreateInstance test for MSDASQL's Enumerator Object
|
|
//
|
|
class CreateInstance_MsdasqlEnumerator : public CCreateInstance {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(CreateInstance_MsdasqlEnumerator,CCreateInstance);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember Multiple Creations, Release in same order
|
|
int Variation_1();
|
|
// @cmember Multiple Creations, Release in opposite order
|
|
int Variation_2();
|
|
// @cmember LockServer After CreateInstance
|
|
int Variation_3();
|
|
// @cmember Valid pUnkOuter
|
|
int Variation_4();
|
|
// @cmember Create one object with each supported interface
|
|
int Variation_5();
|
|
// @cmember Invalid riid
|
|
int Variation_6();
|
|
// @cmember Null ppvObj
|
|
int Variation_7();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(CreateInstance_MsdasqlEnumerator)
|
|
#define THE_CLASS CreateInstance_MsdasqlEnumerator
|
|
BEG_TEST_CASE(CreateInstance_MsdasqlEnumerator, CCreateInstance, L"CreateInstance test for MSDASQL's Enumerator Object")
|
|
TEST_VARIATION(1, L"Multiple Creations, Release in same order")
|
|
TEST_VARIATION(2, L"Multiple Creations, Release in opposite order")
|
|
TEST_VARIATION(3, L"LockServer After CreateInstance")
|
|
TEST_VARIATION(4, L"Valid pUnkOuter")
|
|
TEST_VARIATION(5, L"Create one object with each supported interface")
|
|
TEST_VARIATION(6, L"Invalid riid")
|
|
TEST_VARIATION(7, L"Null ppvObj")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(LockServer_ErrorObject)
|
|
//--------------------------------------------------------------------
|
|
// @class LockServer test for the OLE DB Error Object
|
|
//
|
|
class LockServer_ErrorObject : public CLockServer {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(LockServer_ErrorObject,CLockServer);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember LockAndCreate
|
|
int Variation_1();
|
|
// @cmember LockAndFree
|
|
int Variation_2();
|
|
// @cmember LockTwice
|
|
int Variation_3();
|
|
// @cmember LockAndCreateAndUnlock
|
|
int Variation_4();
|
|
// @cmember LockAndUnlockAndCreate
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(LockServer_ErrorObject)
|
|
#define THE_CLASS LockServer_ErrorObject
|
|
BEG_TEST_CASE(LockServer_ErrorObject, CLockServer, L"LockServer test for the OLE DB Error Object")
|
|
TEST_VARIATION(1, L"LockAndCreate")
|
|
TEST_VARIATION(2, L"LockAndFree")
|
|
TEST_VARIATION(3, L"LockTwice")
|
|
TEST_VARIATION(4, L"LockAndCreateAndUnlock")
|
|
TEST_VARIATION(5, L"LockAndUnlockAndCreate")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(LockServer_Provider)
|
|
//--------------------------------------------------------------------
|
|
// @class LockServer test for the Provider
|
|
//
|
|
class LockServer_Provider : public CLockServer {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(LockServer_Provider,CLockServer);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember LockAndCreate
|
|
int Variation_1();
|
|
// @cmember LockAndFree
|
|
int Variation_2();
|
|
// @cmember LockTwice
|
|
int Variation_3();
|
|
// @cmember LockAndCreateAndUnlock
|
|
int Variation_4();
|
|
// @cmember LockAndUnlockAndCreate
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(LockServer_Provider)
|
|
#define THE_CLASS LockServer_Provider
|
|
BEG_TEST_CASE(LockServer_Provider, CLockServer, L"LockServer test for the Provider")
|
|
TEST_VARIATION(1, L"LockAndCreate")
|
|
TEST_VARIATION(2, L"LockAndFree")
|
|
TEST_VARIATION(3, L"LockTwice")
|
|
TEST_VARIATION(4, L"LockAndCreateAndUnlock")
|
|
TEST_VARIATION(5, L"LockAndUnlockAndCreate")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(LockServer_ErrorLookup)
|
|
//--------------------------------------------------------------------
|
|
// @class LockServer test for the Provider's Error Lookup Service
|
|
//
|
|
class LockServer_ErrorLookup : public CLockServer {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(LockServer_ErrorLookup,CLockServer);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember LockAndCreate
|
|
int Variation_1();
|
|
// @cmember LockAndFree
|
|
int Variation_2();
|
|
// @cmember LockTwice
|
|
int Variation_3();
|
|
// @cmember LockAndCreateAndUnlock
|
|
int Variation_4();
|
|
// @cmember LockAndUnlockAndCreate
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(LockServer_ErrorLookup)
|
|
#define THE_CLASS LockServer_ErrorLookup
|
|
BEG_TEST_CASE(LockServer_ErrorLookup, CLockServer, L"LockServer test for the Provider's Error Lookup Service")
|
|
TEST_VARIATION(1, L"LockAndCreate")
|
|
TEST_VARIATION(2, L"LockAndFree")
|
|
TEST_VARIATION(3, L"LockTwice")
|
|
TEST_VARIATION(4, L"LockAndCreateAndUnlock")
|
|
TEST_VARIATION(5, L"LockAndUnlockAndCreate")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(LockServer_ConversionLibrary)
|
|
//--------------------------------------------------------------------
|
|
// @class LockServer test for OLE DB Conversion Library Object
|
|
//
|
|
class LockServer_ConversionLibrary : public CLockServer {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(LockServer_ConversionLibrary,CLockServer);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember LockAndCreate
|
|
int Variation_1();
|
|
// @cmember LockAndFree
|
|
int Variation_2();
|
|
// @cmember LockTwice
|
|
int Variation_3();
|
|
// @cmember LockAndCreateAndUnlock
|
|
int Variation_4();
|
|
// @cmember LockAndUnlockAndCreate
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(LockServer_ConversionLibrary)
|
|
#define THE_CLASS LockServer_ConversionLibrary
|
|
BEG_TEST_CASE(LockServer_ConversionLibrary, CLockServer, L"LockServer test for OLE DB Conversion Library Object")
|
|
TEST_VARIATION(1, L"LockAndCreate")
|
|
TEST_VARIATION(2, L"LockAndFree")
|
|
TEST_VARIATION(3, L"LockTwice")
|
|
TEST_VARIATION(4, L"LockAndCreateAndUnlock")
|
|
TEST_VARIATION(5, L"LockAndUnlockAndCreate")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(LockServer_OleDBEnumerator)
|
|
//--------------------------------------------------------------------
|
|
// @class LockServer test for OLE DB Root Enumerator Object
|
|
//
|
|
class LockServer_OleDBEnumerator : public CLockServer {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(LockServer_OleDBEnumerator,CLockServer);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember LockAndCreate
|
|
int Variation_1();
|
|
// @cmember LockAndFree
|
|
int Variation_2();
|
|
// @cmember LockTwice
|
|
int Variation_3();
|
|
// @cmember LockAndCreateAndUnlock
|
|
int Variation_4();
|
|
// @cmember LockAndUnlockAndCreate
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(LockServer_OleDBEnumerator)
|
|
#define THE_CLASS LockServer_OleDBEnumerator
|
|
BEG_TEST_CASE(LockServer_OleDBEnumerator, CLockServer, L"LockServer test for OLE DB Root Enumerator Object")
|
|
TEST_VARIATION(1, L"LockAndCreate")
|
|
TEST_VARIATION(2, L"LockAndFree")
|
|
TEST_VARIATION(3, L"LockTwice")
|
|
TEST_VARIATION(4, L"LockAndCreateAndUnlock")
|
|
TEST_VARIATION(5, L"LockAndUnlockAndCreate")
|
|
END_TEST_CASE()
|
|
#undef THE_CLASS
|
|
// }} TCW_TESTCASE_END
|
|
// }} TCW_TEST_CASE_MAP_END
|
|
|
|
|
|
// {{ TCW_TEST_CASE_MAP(LockServer_MsdasqlEnumerator)
|
|
//--------------------------------------------------------------------
|
|
// @class LockServer test for MSDASQL's Enumerator Object
|
|
//
|
|
class LockServer_MsdasqlEnumerator : public CLockServer {
|
|
private:
|
|
// @cmember Static array of variations
|
|
DECLARE_TEST_CASE_DATA();
|
|
|
|
public:
|
|
// {{ TCW_DECLARE_FUNCS
|
|
// @cmember Execution Routine
|
|
DECLARE_TEST_CASE_FUNCS(LockServer_MsdasqlEnumerator,CLockServer);
|
|
// }} TCW_DECLARE_FUNCS_END
|
|
|
|
// @cmember Initialization Routine
|
|
virtual BOOL Init();
|
|
// @cmember Termination Routine
|
|
virtual BOOL Terminate();
|
|
|
|
// {{ TCW_TESTVARS()
|
|
// @cmember LockAndCreate
|
|
int Variation_1();
|
|
// @cmember LockAndFree
|
|
int Variation_2();
|
|
// @cmember LockTwice
|
|
int Variation_3();
|
|
// @cmember LockAndCreateAndUnlock
|
|
int Variation_4();
|
|
// @cmember LockAndUnlockAndCreate
|
|
int Variation_5();
|
|
// }} TCW_TESTVARS_END
|
|
};
|
|
|
|
// {{ TCW_TESTCASE(LockServer_MsdasqlEnumerator)
|
|
#define THE_CLASS LockServer_MsdasqlEnumerator
|
|
BEG_TEST_CASE(LockServer_MsdasqlEnumerator, CLockServer, L"LockServer test for MSDASQL's Enumerator Object")
|
|
TEST_VARIATION(1, L"LockAndCreate")
|
|
TEST_VARIATION(2, L"LockAndFree")
|
|
TEST_VARIATION(3, L"LockTwice")
|
|
TEST_VARIATION(4, L"LockAndCreateAndUnlock")
|
|
TEST_VARIATION(5, L"LockAndUnlockAndCreate")
|
|
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, DllGetClassObj_ErrorObject)
|
|
TEST_CASE(2, DllGetClassObj_Provider)
|
|
TEST_CASE(3, DllGetClassObj_ErrorLookup)
|
|
TEST_CASE(4, DllGetClassObj_ConversionLibrary)
|
|
TEST_CASE(5, DllGetClassObj_OleDBEnumerator)
|
|
TEST_CASE(6, DllGetClassObj_MsdasqlEnumerator)
|
|
TEST_CASE(7, CreateInstance_ErrorObject)
|
|
TEST_CASE(8, CreateInstance_Provider)
|
|
TEST_CASE(9, CreateInstance_ErrorLookup)
|
|
TEST_CASE(10, CreateInstance_ConversionLibrary)
|
|
TEST_CASE(11, CreateInstance_OleDBEnumerator)
|
|
TEST_CASE(12, CreateInstance_MsdasqlEnumerator)
|
|
TEST_CASE(13, LockServer_ErrorObject)
|
|
TEST_CASE(14, LockServer_Provider)
|
|
TEST_CASE(15, LockServer_ErrorLookup)
|
|
TEST_CASE(16, LockServer_ConversionLibrary)
|
|
TEST_CASE(17, LockServer_OleDBEnumerator)
|
|
TEST_CASE(18, LockServer_MsdasqlEnumerator)
|
|
END_TEST_MODULE()
|
|
// }} TCW_TESTMODULE_END
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(DllGetClassObj_ErrorObject)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: DllGetClassObj_ErrorObject - DllGetClassObject test for OLE DB Error Object
|
|
//| Created: 02/05/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_ErrorObject::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CDllGetClassObj::Init())
|
|
// }}
|
|
{
|
|
//Set the correct component for this testcase
|
|
return SetComponent(CLSID_EXTENDEDERRORINFO,CLSCTX_INPROC_SERVER);
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with CoGetClassObject
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorObject::Variation_1()
|
|
{
|
|
return ValidCreationCoGetClassObject();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with LoadLibraryEx
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorObject::Variation_2()
|
|
{
|
|
return ValidCreationLoadLibraryEx();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_INVALIDARG - ppvObj = NULL
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorObject::Variation_3()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_NOINTERFACE - Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorObject::Variation_4()
|
|
{
|
|
return Invalidriid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorObject::Variation_5()
|
|
{
|
|
return Invalidrclsid();
|
|
}
|
|
// }}
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_ErrorObject::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CDllGetClassObj::Terminate());
|
|
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(DllGetClassObj_Provider)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: DllGetClassObj_Provider - DllGetClassObject test for Provider
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_Provider::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CDllGetClassObj::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(m_pThisTestModule->m_ProviderClsid, m_pThisTestModule->m_clsctxProvider);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with CoGetClassObject
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_Provider::Variation_1()
|
|
{
|
|
return ValidCreationCoGetClassObject();
|
|
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with LoadLibraryEx
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_Provider::Variation_2()
|
|
{
|
|
return ValidCreationLoadLibraryEx();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_INVALIDARG - ppvObj = NULL
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_Provider::Variation_3()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_NOINTERFACE - Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_Provider::Variation_4()
|
|
{
|
|
return Invalidriid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_Provider::Variation_5()
|
|
{
|
|
return Invalidrclsid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_Provider::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CDllGetClassObj::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(DllGetClassObj_ErrorLookup)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: DllGetClassObj_ErrorLookup - DllGetClassObject test for Provider's Error Lookup service
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_ErrorLookup::Init()
|
|
{
|
|
CLSID ErrorLookupCLSID;
|
|
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CDllGetClassObj::Init())
|
|
// }}
|
|
{
|
|
// Get the CLSID out of the Registry
|
|
ErrorLookupCLSID = GetExtendedErrorsCLSID();
|
|
|
|
if(ErrorLookupCLSID != GUID_NULL)
|
|
return SetComponent(ErrorLookupCLSID,CLSCTX_INPROC_SERVER);
|
|
else
|
|
return TEST_SKIPPED;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with CoGetClassObject
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorLookup::Variation_1()
|
|
{
|
|
return ValidCreationCoGetClassObject();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with LoadLibraryEx
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorLookup::Variation_2()
|
|
{
|
|
return ValidCreationLoadLibraryEx();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_INVALIDARG - ppvObj = NULL
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorLookup::Variation_3()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_NOINTERFACE - Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorLookup::Variation_4()
|
|
{
|
|
return Invalidriid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ErrorLookup::Variation_5()
|
|
{
|
|
return Invalidrclsid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_ErrorLookup::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CDllGetClassObj::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(DllGetClassObj_ConversionLibrary)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: DllGetClassObj_ConversionLibrary - DllGetClassObject test for OLE DB Conversion Library Object
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_ConversionLibrary::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CDllGetClassObj::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_OLEDB_CONVERSIONLIBRARY,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with CoGetClassObject
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ConversionLibrary::Variation_1()
|
|
{
|
|
return ValidCreationCoGetClassObject();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with LoadLibraryEx
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ConversionLibrary::Variation_2()
|
|
{
|
|
return ValidCreationLoadLibraryEx();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_INVALIDARG - ppvObj = NULL
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ConversionLibrary::Variation_3()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_NOINTERFACE - Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ConversionLibrary::Variation_4()
|
|
{
|
|
return Invalidriid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_ConversionLibrary::Variation_5()
|
|
{
|
|
return Invalidrclsid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_ConversionLibrary::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CDllGetClassObj::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(DllGetClassObj_OleDBEnumerator)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: DllGetClassObj_OleDBEnumerator - DllGetClassObject test for OLE DB Root Enumerator Object
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_OleDBEnumerator::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CDllGetClassObj::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_OLEDB_ENUMERATOR,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with CoGetClassObject
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_OleDBEnumerator::Variation_1()
|
|
{
|
|
return ValidCreationCoGetClassObject();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with LoadLibraryEx
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_OleDBEnumerator::Variation_2()
|
|
{
|
|
return ValidCreationLoadLibraryEx();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_INVALIDARG - ppvObj = NULL
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_OleDBEnumerator::Variation_3()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_NOINTERFACE - Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_OleDBEnumerator::Variation_4()
|
|
{
|
|
return Invalidriid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_OleDBEnumerator::Variation_5()
|
|
{
|
|
return Invalidrclsid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_OleDBEnumerator::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CDllGetClassObj::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(DllGetClassObj_MsdasqlEnumerator)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: DllGetClassObj_MsdasqlEnumerator - DllGetClassObject test for MSDASQL's Enumerator Object
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_MsdasqlEnumerator::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CDllGetClassObj::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_MSDASQL_ENUMERATOR,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with CoGetClassObject
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_MsdasqlEnumerator::Variation_1()
|
|
{
|
|
return ValidCreationCoGetClassObject();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid creation with LoadLibraryEx
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_MsdasqlEnumerator::Variation_2()
|
|
{
|
|
return ValidCreationLoadLibraryEx();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_INVALIDARG - ppvObj = NULL
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_MsdasqlEnumerator::Variation_3()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc E_NOINTERFACE - Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_MsdasqlEnumerator::Variation_4()
|
|
{
|
|
return Invalidriid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc CLASS_E_CLASSNOTAVAILABLE - LoadLibraryEx, Bad CLSID
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int DllGetClassObj_MsdasqlEnumerator::Variation_5()
|
|
{
|
|
return Invalidrclsid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL DllGetClassObj_MsdasqlEnumerator::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CDllGetClassObj::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(CreateInstance_ErrorObject)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: CreateInstance_ErrorObject - CreateInstance test for OLE DB Error Object
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_ErrorObject::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CCreateInstance::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_EXTENDEDERRORINFO,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in same order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorObject::Variation_1()
|
|
{
|
|
return MultipleCreateReleaseSameOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in opposite order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorObject::Variation_2()
|
|
{
|
|
return MultipleCreateReleaseOppositeOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockServer After CreateInstance
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorObject::Variation_3()
|
|
{
|
|
return LockServerAfter();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid pUnkOuter
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorObject::Variation_4()
|
|
{
|
|
return ValidpUnkOuter(CLASS_E_NOAGGREGATION);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Create one object with each supported interface
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorObject::Variation_5()
|
|
{
|
|
GUID rgIids[2];
|
|
|
|
//We have to do separate inits because IIDs are consts
|
|
//and won't work with the direct initialization of the array
|
|
rgIids[0] = IID_IErrorRecords;
|
|
rgIids[1] = IID_IErrorInfo;
|
|
|
|
return CreateEachInterface(2, rgIids);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(6)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorObject::Variation_6()
|
|
{
|
|
return InvalidRiid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(7)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Null ppvObj
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorObject::Variation_7()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_ErrorObject::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CCreateInstance::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(CreateInstance_Provider)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: CreateInstance_Provider - CreateInstance test for the Provider
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_Provider::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CCreateInstance::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(m_pThisTestModule->m_ProviderClsid,m_pThisTestModule->m_clsctxProvider);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in same order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_Provider::Variation_1()
|
|
{
|
|
return MultipleCreateReleaseSameOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in opposite order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_Provider::Variation_2()
|
|
{
|
|
return MultipleCreateReleaseOppositeOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockServer After CreateInstance
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_Provider::Variation_3()
|
|
{
|
|
return LockServerAfter();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid pUnkOuter
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_Provider::Variation_4()
|
|
{
|
|
//Aggregation is mandatory for provider,
|
|
//this should return S_OK
|
|
return ValidpUnkOuter(S_OK);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Create one object with each supported interface
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_Provider::Variation_5()
|
|
{
|
|
|
|
const ULONG TOTAL_INTERFACES = 8; //8 Possible interfaces on the DSO
|
|
IID rgIids[TOTAL_INTERFACES];
|
|
IID rgSupportedIids[TOTAL_INTERFACES];
|
|
ULONG cSupportedIids = 0;
|
|
ULONG ul;
|
|
|
|
//We have to do separate inits because IIDs are consts
|
|
//and won't work with the direct initialization of the array
|
|
|
|
//List of all optional interfaces we need to determine support for
|
|
rgIids[0] = IID_IUnknown;
|
|
rgIids[1] = IID_IDBInitialize;
|
|
rgIids[2] = IID_IDBProperties;
|
|
rgIids[3] = IID_IDBCreateSession;
|
|
rgIids[4] = IID_IDBInfo;
|
|
rgIids[5] = IID_IPersistFile;
|
|
rgIids[6] = IID_ISupportErrorInfo;
|
|
rgIids[7] = IID_IPersist;
|
|
|
|
//Record all the mandatory interfaces as supported
|
|
//NOTE: We can't include IDBCreateSession and IDBProperties
|
|
//because they can't be directly asked for on CreateInstance,
|
|
//they require Initialization first.
|
|
|
|
if (CHECK(CoCreateInstance(m_Clsid, NULL, m_ClsCtx, IID_IUnknown,
|
|
(void **)&m_pIUnknown), S_OK))
|
|
{
|
|
//Loop thru optional interfaces, finding out which ones are supported
|
|
for (ul = 0; ul < TOTAL_INTERFACES; ul++)
|
|
{
|
|
if (S_OK == (m_hr = m_pIUnknown->QueryInterface(rgIids[ul], (void **)&m_pIUnknown2)))
|
|
{
|
|
//Record this interface in our supported array
|
|
rgSupportedIids[cSupportedIids] = rgIids[ul];
|
|
cSupportedIids++;
|
|
m_pIUnknown2->Release();
|
|
}
|
|
else
|
|
{
|
|
//Make sure we failed because it wasn't supported
|
|
if( m_hr != E_NOINTERFACE )
|
|
CHECK(m_hr, E_UNEXPECTED);
|
|
}
|
|
}
|
|
|
|
//Release our first interface
|
|
m_pIUnknown->Release();
|
|
}
|
|
|
|
//Now pass the array of supported interfaces to the function
|
|
return CreateEachInterface(cSupportedIids, rgSupportedIids);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(6)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_Provider::Variation_6()
|
|
{
|
|
return InvalidRiid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(7)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Null ppvObj
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_Provider::Variation_7()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_Provider::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CCreateInstance::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(CreateInstance_ErrorLookup)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: CreateInstance_ErrorLookup - CreateInstance test for Provider's Error Lookup Service
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_ErrorLookup::Init()
|
|
{
|
|
CLSID ErrorLookupCLSID;
|
|
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CCreateInstance::Init())
|
|
// }}
|
|
{
|
|
// Get the CLSID out of the Registry
|
|
ErrorLookupCLSID = GetExtendedErrorsCLSID();
|
|
|
|
if(ErrorLookupCLSID != GUID_NULL)
|
|
return SetComponent(ErrorLookupCLSID,CLSCTX_INPROC_SERVER);
|
|
else
|
|
return TEST_SKIPPED;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in same order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorLookup::Variation_1()
|
|
{
|
|
return MultipleCreateReleaseSameOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in opposite order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorLookup::Variation_2()
|
|
{
|
|
return MultipleCreateReleaseOppositeOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockServer After CreateInstance
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorLookup::Variation_3()
|
|
{
|
|
return LockServerAfter();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid pUnkOuter
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorLookup::Variation_4()
|
|
{
|
|
return ValidpUnkOuter(S_OK);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Create one object with each supported interface
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorLookup::Variation_5()
|
|
{
|
|
//Only interface we support is IErrorLookup
|
|
IID rgIids[1];
|
|
|
|
rgIids[0] = IID_IErrorLookup;
|
|
|
|
//Create object using this interface
|
|
return CreateEachInterface(1, rgIids);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(6)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorLookup::Variation_6()
|
|
{
|
|
return InvalidRiid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(7)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Null ppvObj
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ErrorLookup::Variation_7()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_ErrorLookup::Terminate()
|
|
{
|
|
// TO DO: Add your own code here
|
|
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CCreateInstance::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(CreateInstance_ConversionLibrary)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: CreateInstance_ConversionLibrary - CreateInstance test for OLE DB Conversion Library Object
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_ConversionLibrary::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CCreateInstance::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_OLEDB_CONVERSIONLIBRARY,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in same order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ConversionLibrary::Variation_1()
|
|
{
|
|
return MultipleCreateReleaseSameOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in opposite order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ConversionLibrary::Variation_2()
|
|
{
|
|
return MultipleCreateReleaseOppositeOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockServer After CreateInstance
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ConversionLibrary::Variation_3()
|
|
{
|
|
return LockServerAfter();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid pUnkOuter
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ConversionLibrary::Variation_4()
|
|
{
|
|
return ValidpUnkOuter(S_OK);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Create one object with each supported interface
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ConversionLibrary::Variation_5()
|
|
{
|
|
GUID rgIids[1];
|
|
|
|
//We have to do separate inits because IIDs are consts
|
|
//and won't work with the direct initialization of the array
|
|
rgIids[0] = IID_IDataConvert;
|
|
|
|
return CreateEachInterface(1, rgIids);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(6)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ConversionLibrary::Variation_6()
|
|
{
|
|
return InvalidRiid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(7)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Null ppvObj
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_ConversionLibrary::Variation_7()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_ConversionLibrary::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CCreateInstance::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(CreateInstance_OleDBEnumerator)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: CreateInstance_OleDBEnumerator - CreateInstance test for OLE DB Root Enumerator Object
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_OleDBEnumerator::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CCreateInstance::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_OLEDB_ENUMERATOR,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in same order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_OleDBEnumerator::Variation_1()
|
|
{
|
|
return MultipleCreateReleaseSameOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in opposite order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_OleDBEnumerator::Variation_2()
|
|
{
|
|
return MultipleCreateReleaseOppositeOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockServer After CreateInstance
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_OleDBEnumerator::Variation_3()
|
|
{
|
|
return LockServerAfter();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid pUnkOuter
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_OleDBEnumerator::Variation_4()
|
|
{
|
|
return ValidpUnkOuter(S_OK);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Create one object with each supported interface
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_OleDBEnumerator::Variation_5()
|
|
{
|
|
GUID rgIids[2];
|
|
|
|
//We have to do separate inits because IIDs are consts
|
|
//and won't work with the direct initialization of the array
|
|
rgIids[0] = IID_ISourcesRowset;
|
|
rgIids[1] = IID_IParseDisplayName;
|
|
|
|
return CreateEachInterface(2, rgIids);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(6)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_OleDBEnumerator::Variation_6()
|
|
{
|
|
return InvalidRiid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(7)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Null ppvObj
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_OleDBEnumerator::Variation_7()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_OleDBEnumerator::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CCreateInstance::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(CreateInstance_MsdasqlEnumerator)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: CreateInstance_MsdasqlEnumerator - CreateInstance test for MSDASQL's Enumerator Object
|
|
//| Created: 02/06/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_MsdasqlEnumerator::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CCreateInstance::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_MSDASQL_ENUMERATOR,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in same order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_MsdasqlEnumerator::Variation_1()
|
|
{
|
|
return MultipleCreateReleaseSameOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Multiple Creations, Release in opposite order
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_MsdasqlEnumerator::Variation_2()
|
|
{
|
|
return MultipleCreateReleaseOppositeOrder();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockServer After CreateInstance
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_MsdasqlEnumerator::Variation_3()
|
|
{
|
|
return LockServerAfter();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Valid pUnkOuter
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_MsdasqlEnumerator::Variation_4()
|
|
{
|
|
return ValidpUnkOuter(S_OK);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Create one object with each supported interface
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_MsdasqlEnumerator::Variation_5()
|
|
{
|
|
GUID rgIids[2];
|
|
|
|
//We have to do separate inits because IIDs are consts
|
|
//and won't work with the direct initialization of the array
|
|
rgIids[0] = IID_ISourcesRowset;
|
|
rgIids[1] = IID_IParseDisplayName;
|
|
|
|
return CreateEachInterface(2, rgIids);
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(6)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Invalid riid
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_MsdasqlEnumerator::Variation_6()
|
|
{
|
|
return InvalidRiid();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(7)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc Null ppvObj
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int CreateInstance_MsdasqlEnumerator::Variation_7()
|
|
{
|
|
return NullppvObj();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL CreateInstance_MsdasqlEnumerator::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CCreateInstance::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(LockServer_ErrorObject)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: LockServer_ErrorObject - LockServer test for the OLE DB Error Object
|
|
//| Created: 02/07/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_ErrorObject::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CLockServer::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_EXTENDEDERRORINFO,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorObject::Variation_1()
|
|
{
|
|
return LockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndFree
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorObject::Variation_2()
|
|
{
|
|
return LockAndFree();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockTwice
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorObject::Variation_3()
|
|
{
|
|
return LockTwice();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreateAndUnlock
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorObject::Variation_4()
|
|
{
|
|
return LockAndCreateAndUnlock();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndUnlockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorObject::Variation_5()
|
|
{
|
|
return LockAndUnlockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_ErrorObject::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CLockServer::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(LockServer_Provider)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: LockServer_Provider - LockServer test for the Provider
|
|
//| Created: 02/07/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_Provider::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CLockServer::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(m_pThisTestModule->m_ProviderClsid,m_pThisTestModule->m_clsctxProvider);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_Provider::Variation_1()
|
|
{
|
|
return LockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndFree
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_Provider::Variation_2()
|
|
{
|
|
return LockAndFree();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockTwice
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_Provider::Variation_3()
|
|
{
|
|
return LockTwice();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreateAndUnlock
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_Provider::Variation_4()
|
|
{
|
|
return LockAndCreateAndUnlock();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndUnlockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_Provider::Variation_5()
|
|
{
|
|
return LockAndUnlockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_Provider::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CLockServer::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(LockServer_ErrorLookup)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: LockServer_ErrorLookup - LockServer test for the Provider's Error Lookup Service
|
|
//| Created: 02/07/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_ErrorLookup::Init()
|
|
{
|
|
CLSID ErrorLookupCLSID;
|
|
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CLockServer::Init())
|
|
// }}
|
|
{
|
|
// Get the CLSID out of the Registry
|
|
ErrorLookupCLSID = GetExtendedErrorsCLSID();
|
|
|
|
if(ErrorLookupCLSID != GUID_NULL)
|
|
return SetComponent(ErrorLookupCLSID,CLSCTX_INPROC_SERVER);
|
|
else
|
|
return TEST_SKIPPED;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorLookup::Variation_1()
|
|
{
|
|
return LockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndFree
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorLookup::Variation_2()
|
|
{
|
|
return LockAndFree();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockTwice
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorLookup::Variation_3()
|
|
{
|
|
return LockTwice();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreateAndUnlock
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorLookup::Variation_4()
|
|
{
|
|
return LockAndCreateAndUnlock();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndUnlockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ErrorLookup::Variation_5()
|
|
{
|
|
return LockAndUnlockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_ErrorLookup::Terminate()
|
|
{
|
|
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CLockServer::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(LockServer_ConversionLibrary)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: LockServer_ConversionLibrary - LockServer test for OLE DB Conversion Library Object
|
|
//| Created: 02/07/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_ConversionLibrary::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CLockServer::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_OLEDB_CONVERSIONLIBRARY,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ConversionLibrary::Variation_1()
|
|
{
|
|
return LockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndFree
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ConversionLibrary::Variation_2()
|
|
{
|
|
return LockAndFree();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockTwice
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ConversionLibrary::Variation_3()
|
|
{
|
|
return LockTwice();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreateAndUnlock
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ConversionLibrary::Variation_4()
|
|
{
|
|
return LockAndCreateAndUnlock();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndUnlockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_ConversionLibrary::Variation_5()
|
|
{
|
|
return LockAndUnlockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_ConversionLibrary::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CLockServer::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(LockServer_OleDBEnumerator)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: LockServer_OleDBEnumerator - LockServer test for OLE DB Root Enumerator Object
|
|
//| Created: 02/07/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_OleDBEnumerator::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CLockServer::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_OLEDB_ENUMERATOR,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_OleDBEnumerator::Variation_1()
|
|
{
|
|
return LockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndFree
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_OleDBEnumerator::Variation_2()
|
|
{
|
|
return LockAndFree();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockTwice
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_OleDBEnumerator::Variation_3()
|
|
{
|
|
return LockTwice();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreateAndUnlock
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_OleDBEnumerator::Variation_4()
|
|
{
|
|
return LockAndCreateAndUnlock();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndUnlockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_OleDBEnumerator::Variation_5()
|
|
{
|
|
return LockAndUnlockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_OleDBEnumerator::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CLockServer::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TC_PROTOTYPE(LockServer_MsdasqlEnumerator)
|
|
//*-----------------------------------------------------------------------
|
|
//| Test Case: LockServer_MsdasqlEnumerator - LockServer test for MSDASQL's Enumerator Object
|
|
//| Created: 02/07/96
|
|
//| Updated: 04/25/98
|
|
//*-----------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Initialization Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_MsdasqlEnumerator::Init()
|
|
{
|
|
// {{ TCW_INIT_BASECLASS_CHECK
|
|
if(CLockServer::Init())
|
|
// }}
|
|
{
|
|
return SetComponent(CLSID_MSDASQL_ENUMERATOR,CLSCTX_INPROC_SERVER);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(1)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_MsdasqlEnumerator::Variation_1()
|
|
{
|
|
return LockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(2)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndFree
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_MsdasqlEnumerator::Variation_2()
|
|
{
|
|
return LockAndFree();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(3)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockTwice
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_MsdasqlEnumerator::Variation_3()
|
|
{
|
|
return LockTwice();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(4)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndCreateAndUnlock
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_MsdasqlEnumerator::Variation_4()
|
|
{
|
|
return LockAndCreateAndUnlock();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_VAR_PROTOTYPE(5)
|
|
//*-----------------------------------------------------------------------
|
|
// @mfunc LockAndUnlockAndCreate
|
|
//
|
|
// @rdesc TEST_PASS or TEST_FAIL
|
|
//
|
|
int LockServer_MsdasqlEnumerator::Variation_5()
|
|
{
|
|
return LockAndUnlockAndCreate();
|
|
}
|
|
// }}
|
|
|
|
|
|
// {{ TCW_TERMINATE_METHOD
|
|
//--------------------------------------------------------------------
|
|
// @mfunc TestCase Termination Routine
|
|
//
|
|
// @rdesc TRUE or FALSE
|
|
//
|
|
BOOL LockServer_MsdasqlEnumerator::Terminate()
|
|
{
|
|
// {{ TCW_TERM_BASECLASS_CHECK2
|
|
return(CLockServer::Terminate());
|
|
} // }}
|
|
// }}
|
|
// }}
|
|
|
|
|