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
42 InitializeListHead(&AllTests
);
46 PerformTest(TestOutputRoutine OutputRoutine
, PROS_TEST Test
, LPSTR TestName
)
48 char OutputBuffer
[5000];
53 memset(Name
, 0, sizeof(Name
));
54 memset(Buffer
, 0, sizeof(Buffer
));
56 if (!((Test
->Routine
)(TESTCMD_TESTNAME
, Name
) == 0))
62 strcpy(Name
, "Unnamed");
67 if (_stricmp(Name
, TestName
) != 0)
76 Result
= (Test
->Routine
)(TESTCMD_RUN
, Buffer
);
78 } __except(EXCEPTION_EXECUTE_HANDLER
) {
80 strcpy(Buffer
, "Failed due to exception");
86 sprintf(OutputBuffer
, "ROSREGTEST: |%s| Status: Failed (%s)\n", Name
, Buffer
);
90 sprintf(OutputBuffer
, "ROSREGTEST: |%s| Status: Success\n", Name
);
92 if (OutputRoutine
!= NULL
)
94 (*OutputRoutine
)(OutputBuffer
);
98 DbgPrint(OutputBuffer
);
103 PerformTests(TestOutputRoutine OutputRoutine
, LPSTR TestName
)
105 PLIST_ENTRY CurrentEntry
;
106 PLIST_ENTRY NextEntry
;
109 CurrentEntry
= AllTests
.Flink
;
110 while (CurrentEntry
!= &AllTests
)
112 NextEntry
= CurrentEntry
->Flink
;
113 Current
= CONTAINING_RECORD(CurrentEntry
, ROS_TEST
, ListEntry
);
114 PerformTest(OutputRoutine
, Current
, TestName
);
115 CurrentEntry
= NextEntry
;
120 AddTest(TestRoutine Routine
)
124 Test
= (PROS_TEST
) AllocateMemory(sizeof(ROS_TEST
));
127 DbgPrint("Out of memory");
131 Test
->Routine
= Routine
;
133 InsertTailList(&AllTests
, &Test
->ListEntry
);