mac-rom/OS/StartMgr/UnivTestEnv/TestController.c
Elliot Nunn 4325cdcc78 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-12-26 09:52:23 +08:00

105 lines
2.6 KiB
C

/*
File: TestController.c
Contains: This file contains the test controller functions for the
Common Test Environment. These functions let the caller
locate and execute a test.
Written by: Mark Appleman
Copyright: © 1990 by Apple Computer, Inc., all rights reserved.
Change History (most recent first):
<1> 9/4/90 SS first checked in
To Do:
*/
#include "TestController.h"
#include <Stdio.h>
TestNode *FindTest(CTEGlobals *globs, TestID id)
{
return((TestNode *)FindKeyedNode(&globs->testList, id)) ;
}
TestErr DoTest(CTEGlobals *globs, TestID testID, SubtestID subtestID,
ULONG modifier, ExecMode execMode)
{
TestNode *theTestNode = NULL ;
SubtestNode *theSubtestNode = NULL ;
void *subtestParams = NULL ;
int subtestParamsSize = 0 ;
void *subtestResults = NULL ;
int subtestResultsSize = 0 ;
TestErr err ;
// Free all temp heap storage.
FreeTempMem(globs) ;
// Find the test node in the test list.
if(NULL == (theTestNode = FindTest(globs, testID)))
{
err = CTE_Kernel_Err_TestNotAvailable ;
goto ErrorExit ;
}
// Save some of the info from the Test node in the CTE globals.
globs->testID = testID ;
globs->modifier = modifier ;
globs->execMode = execMode ;
// Find the subtest node in the subtest list.
if(NULL == (theSubtestNode = FindSubtest(globs, subtestID)))
{
err = CTE_Kernel_Err_SubtestNotAvailable ;
goto ErrorExit ;
}
// Allocate and clear storage for the subtest parameters.
subtestParamsSize = theSubtestNode->pbSize ;
if(NULL == (subtestParams = AllocTempMem(globs, subtestParamsSize)))
{
err = CTE_Kernel_Err_CantAllocParamBlock ;
goto ErrorExit ;
}
// Allocate and clear storage for the subtest results.
subtestResultsSize = theSubtestNode->rbSize ;
if(NULL == (subtestResults = AllocTempMem(globs, subtestResultsSize)))
{
err = CTE_Kernel_Err_CantAllocResultBlock ;
goto ErrorExit ;
}
// Save some of the info from the Subtest node in the CTE globals.
globs->subtestID = subtestID ;
globs->subtestParams = subtestParams ;
globs->subtestParamsSize = subtestParamsSize ;
globs->subtestResults = subtestResults ;
globs->subtestResultsSize = subtestResultsSize ;
switch(globs->execMode)
{
case normalMode :
case dontExecSubtestMode :
err = (*theTestNode->testPtr)(globs, globs->subtestParams, globs->modifier, globs->subtestID) ;
break ;
case dontExecTestMode :
err = CTE_Kernel_Err_TestNotExecuted ;
break ;
default :
err = CTE_Kernel_Err_UnknownExecMode ;
break ;
}
ErrorExit :
return(err) ;
}