-- File [Ivy]<Nelson>Lupine>LupineExerciser.mesa.
-- Last edited by BZM on  9-Mar-82 17:05:26.


LupineExerciser: DEFINITIONS = BEGIN

  Counter: TYPE = INTEGER;
  String: TYPE = LONG STRING ← NIL;

  StandardPasses: Counter = 1;
  StandardTrialsPerPass: Counter = 1;
  StandardTestsPerTrial: Counter = 2000;


  Exercise: TYPE = RECORD [
	name, description: String ← NIL,
	routine: ExerciseProc ];

  ExerciseIndex: TYPE = INTEGER[0..LAST[INTEGER]];

  ExerciseList: TYPE =
    LONG DESCRIPTOR FOR READONLY ARRAY ExerciseIndex OF Exercise ← NIL;

  ExerciseProc: TYPE = PROCEDURE [
	exerciser: Handle,
	name: String,
	trials: Counter ← StandardTrialsPerPass,
	testsPerTrial: Counter ← StandardTestsPerTrial,
	checkResults: BOOLEAN ← TRUE ];

  Handle: TYPE [1];


  PerformExercises: PROCEDURE [
	nameOfExercisedInterface: String,
	exercises: ExerciseList ];

  BadExercise: SIGNAL;

  Start: PROCEDURE [self: Handle, name: String];
  Stamp: PROCEDURE [self: Handle];
  Delay: PROCEDURE [self: Handle];
  Stop:  PROCEDURE [self: Handle];

  StartPrecisionTiming: PROCEDURE [self: Handle];
  StopPrecisionTiming:  PROCEDURE [self: Handle];

END.  -- LupineExerciser.