2 * PROJECT: ReactOS kernel
3 * FILE: regtests/shared/regtests.c
4 * PURPOSE: Regression testing framework
5 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
7 * 06-07-2003 CSH Created
14 #define NTOS_MODE_USER
24 static LIST_ENTRY AllTests
;
45 InitializeListHead(&AllTests
);
49 PerformTest(TestOutputRoutine OutputRoutine
, PROS_TEST Test
, LPSTR TestName
)
51 char OutputBuffer
[5000];
55 memset(Buffer
, 0, sizeof(Buffer
));
56 memset(Name
, 0, sizeof(Name
));
60 (Test
->Routine
)(TESTCMD_TESTNAME
);
67 strcpy(Name
, "Unnamed");
72 if (_stricmp(Name
, TestName
) != 0)
83 (Test
->Routine
)(TESTCMD_RUN
);
85 } __except(EXCEPTION_EXECUTE_HANDLER
) {
87 strcpy(Buffer
, "Failed due to exception");
93 sprintf(OutputBuffer
, "ROSREGTEST: |%s| Status: Failed (%s)\n", Name
, Buffer
);
97 sprintf(OutputBuffer
, "ROSREGTEST: |%s| Status: Success\n", Name
);
99 if (OutputRoutine
!= NULL
)
101 (*OutputRoutine
)(OutputBuffer
);
105 DbgPrint(OutputBuffer
);
110 PerformTests(TestOutputRoutine OutputRoutine
, LPSTR TestName
)
112 PLIST_ENTRY CurrentEntry
;
113 PLIST_ENTRY NextEntry
;
116 CurrentEntry
= AllTests
.Flink
;
117 while (CurrentEntry
!= &AllTests
)
119 NextEntry
= CurrentEntry
->Flink
;
120 Current
= CONTAINING_RECORD(CurrentEntry
, ROS_TEST
, ListEntry
);
121 PerformTest(OutputRoutine
, Current
, TestName
);
122 CurrentEntry
= NextEntry
;
127 AddTest(TestRoutine Routine
)
131 Test
= (PROS_TEST
) AllocateMemory(sizeof(ROS_TEST
));
134 DbgPrint("Out of memory");
138 Test
->Routine
= Routine
;
140 InsertTailList(&AllTests
, &Test
->ListEntry
);