179 lines
4.2 KiB
C++
179 lines
4.2 KiB
C++
//+------------------------------------------------------------------
|
||
//
|
||
// File: tmain.cxx
|
||
//
|
||
// Contents: entry point common for all test drivers.
|
||
//
|
||
//--------------------------------------------------------------------
|
||
#include <pch.cxx>
|
||
#include <tstmain.hxx>
|
||
#include <regmain.hxx>
|
||
|
||
BOOL fQuiet = 0; // turn tracing on/off
|
||
DWORD gInitFlag; // current COINT flag used on main thread.
|
||
|
||
DWORD dwInitFlag[2] = {COINIT_APARTMENTTHREADED,
|
||
COINIT_MULTITHREADED};
|
||
|
||
LPSTR pszInitFlag[2] = {"ApartmentThreaded",
|
||
"MultiThreaded"};
|
||
|
||
|
||
// global statistics counters
|
||
LONG gCountAttempts = 0; // # of tests attempted
|
||
LONG gCountPassed = 0; // # of tests passed
|
||
LONG gCountFailed = 0; // # of tests failed
|
||
|
||
void InitStatistics();
|
||
void PrintStatistics();
|
||
|
||
//+-------------------------------------------------------------------
|
||
//
|
||
// Function: DriverMain
|
||
//
|
||
// Synopsis: Entry point to EXE
|
||
//
|
||
// Returns: TRUE
|
||
//
|
||
// History: 21-Nov-92 Rickhi Created
|
||
//
|
||
// Parses parameters, sets the threading model, initializes OLE,
|
||
// runs the test, Uninitializes OLE, reports PASSED/FAILED.
|
||
//
|
||
//--------------------------------------------------------------------
|
||
int _cdecl DriverMain(int argc, char **argv, char *pszTestName, LPFNTEST pfnTest)
|
||
{
|
||
char *pszAppName = *argv;
|
||
|
||
// default to running both single-thread and multi-thread
|
||
int iStart = 0;
|
||
int iEnd = 2;
|
||
|
||
|
||
// process the command line args
|
||
if (argc > 1)
|
||
{
|
||
for (int i=argc; i>0; i--, argv++)
|
||
{
|
||
if (!_strnicmp(*argv, "-r", 2))
|
||
{
|
||
// register class information
|
||
RegistrySetup(pszAppName);
|
||
return 0;
|
||
}
|
||
else if (!_strnicmp(*argv, "-q", 2))
|
||
{
|
||
// quiet output
|
||
fQuiet = TRUE;
|
||
}
|
||
else if (!_strnicmp(*argv, "-s", 2))
|
||
{
|
||
// just run single-threaded
|
||
iStart = 0;
|
||
iEnd = 1;
|
||
}
|
||
else if (!_strnicmp(*argv, "-m", 2))
|
||
{
|
||
// just run multi-threaded
|
||
iStart = 1;
|
||
iEnd = 2;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
// run the tests.
|
||
for (int i=iStart; i<iEnd; i++)
|
||
{
|
||
InitStatistics();
|
||
|
||
WriteProfileStringA("OleSrv",
|
||
"ThreadMode",
|
||
pszInitFlag[i]);
|
||
|
||
printf ("Starting %s Test with %s threading model\n",
|
||
pszTestName, pszInitFlag[i]);
|
||
|
||
gInitFlag = dwInitFlag[i];
|
||
SCODE sc = CoInitializeEx(NULL, gInitFlag);
|
||
|
||
if (sc != S_OK)
|
||
{
|
||
printf("CoInitializeEx Failed with %lx\n", sc);
|
||
DebugBreak();
|
||
return 1;
|
||
}
|
||
|
||
BOOL fRslt = (pfnTest)();
|
||
|
||
PrintStatistics();
|
||
|
||
if (fRslt)
|
||
printf("%s Tests PASSED\n", pszTestName);
|
||
else
|
||
printf("%s Tests FAILED\n", pszTestName);
|
||
|
||
CoUninitialize();
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
//+-------------------------------------------------------------------
|
||
//
|
||
// Function: TestResult
|
||
//
|
||
// Synopsis: prints test results
|
||
//
|
||
// History: 21-Nov-92 Rickhi Created
|
||
//
|
||
//--------------------------------------------------------------------
|
||
BOOL TestResult(BOOL RetVal, LPSTR pszTestName)
|
||
{
|
||
gCountAttempts++;
|
||
|
||
if (RetVal == TRUE)
|
||
{
|
||
printf ("PASSED: %s\n", pszTestName);
|
||
gCountPassed++;
|
||
}
|
||
else
|
||
{
|
||
printf ("FAILED: %s\n", pszTestName);
|
||
gCountFailed++;
|
||
}
|
||
|
||
return RetVal;
|
||
}
|
||
|
||
//+-------------------------------------------------------------------
|
||
//
|
||
// Function: InitStatistics
|
||
//
|
||
// Synopsis: Initializes run statistics
|
||
//
|
||
// History: 21-Nov-92 Rickhi Created
|
||
//
|
||
//--------------------------------------------------------------------
|
||
void InitStatistics()
|
||
{
|
||
gCountAttempts = 0;
|
||
gCountPassed = 0;
|
||
gCountFailed = 0;
|
||
}
|
||
|
||
//+-------------------------------------------------------------------
|
||
//
|
||
// Function: PrintStatistics
|
||
//
|
||
// Synopsis: Prints run statistics
|
||
//
|
||
// History: 21-Nov-92 Rickhi Created
|
||
//
|
||
//--------------------------------------------------------------------
|
||
void PrintStatistics()
|
||
{
|
||
printf("\nTEST STATISTICS -- Attempted:%d Passed:%d Failed:%d\n\n",
|
||
gCountAttempts, gCountPassed, gCountFailed);
|
||
}
|
||
|