mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2025-01-04 01:29:22 +00:00
105 lines
2.6 KiB
C
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: <EFBFBD> 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) ;
|
|||
|
}
|
|||
|
|
|||
|
|