1 /** Test framework support functions.
9 #include <tinibios.h> /* main() must see the ISR declarations */
13 /* until changed, isr's must have a prototype in the module containing main */
14 void T2_isr (void) interrupt 5;
17 /** Define this if the port's div or mod functions are broken.
18 A slow loop based method will be substituded.
20 //#define BROKEN_DIV_MOD 1
22 extern void _putchar(char c);
23 extern void _initEmu(void);
24 extern void _exitEmu(void);
27 static int __numFailures = 0;
31 __div(int num, int denom)
34 while (num >= denom) {
42 __mod(int num, int denom)
44 while (num >= denom) {
50 #define __div(num, denom) ((num) / (denom))
51 #define __mod(num, denom) ((num) % (denom))
55 __prints(const char *s)
59 while ('\0' != (c = *s)) {
73 char *p = &buf[sizeof(buf) - 1];
76 buf[sizeof(buf) - 1] = '\0';
84 *--p = '0' + __mod(n, 10);
97 __printf(const char *szFormat, ...)
100 va_start(ap, szFormat);
103 if (*szFormat == '%') {
104 switch (*++szFormat) {
106 char *sz = va_arg(ap, char *);
111 int i = va_arg(ap, int);
131 __fail(const char *szMsg, const char *szCond, const char *szFile, int line)
133 __printf("--- FAIL: \"%s\" on %s at %s:%u\n", szMsg, szCond, szFile, line);
142 __printf("--- Running: %s\n", __getSuiteName());
146 __printf("--- Summary: %u/%u/%u: %u failed of %u tests in %u cases.\n",
147 __numFailures, __numTests, __numCases,
148 __numFailures, __numTests, __numCases
157 __fail(const char *szMsg, const char *szCond, const char *szFile, int line)
159 __prints("--- FAIL: \"");
177 __prints("--- Running: ");
178 __prints(__getSuiteName());
183 __prints("--- Summary: ");
184 __printn(__numFailures);
186 __printn(__numTests);
188 __printn(__numCases);
190 __printn(__numFailures);
191 __prints(" failed of ");
192 __printn(__numTests);
193 __prints(" tests in ");
194 __printn(__numCases);
195 __prints(" cases.\n");