windows-nt/Source/XPSP1/NT/com/oleutest/balls/common/tstmain.cxx
2020-09-26 16:20:57 +08:00

179 lines
4.2 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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