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);
|
|||
|
}
|
|||
|
|