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;
15 #define MEMSPACE_BUF idata
20 /** Define this if the port's div or mod functions are broken.
21 A slow loop based method will be substituded.
23 //#define BROKEN_DIV_MOD 1
25 extern void _putchar(char c);
26 extern void _initEmu(void);
27 extern void _exitEmu(void);
30 static int __numFailures = 0;
34 __div(int num, int denom)
37 while (num >= denom) {
45 __mod(int num, int denom)
47 while (num >= denom) {
53 #define __div(num, denom) ((num) / (denom))
54 #define __mod(num, denom) ((num) % (denom))
58 __prints(const char *s)
62 while ('\0' != (c = *s)) {
75 static char MEMSPACE_BUF buf[6];
76 char MEMSPACE_BUF *p = &buf[sizeof(buf) - 1];
79 buf[sizeof(buf) - 1] = '\0';
87 *--p = '0' + __mod(n, 10);
100 __printf(const char *szFormat, ...)
103 va_start(ap, szFormat);
106 if (*szFormat == '%') {
107 switch (*++szFormat) {
109 char *sz = va_arg(ap, char *);
114 int i = va_arg(ap, int);
134 __fail(code const char *szMsg, code const char *szCond, code const char *szFile, int line)
136 __printf("--- FAIL: \"%s\" on %s at %s:%u\n", szMsg, szCond, szFile, line);
145 __printf("--- Running: %s\n", __getSuiteName());
149 __printf("--- Summary: %u/%u/%u: %u failed of %u tests in %u cases.\n",
150 __numFailures, __numTests, __numCases,
151 __numFailures, __numTests, __numCases
160 __fail(code const char *szMsg, code const char *szCond, code const char *szFile, int line)
162 __prints("--- FAIL: \"");
180 __prints("--- Running: ");
181 __prints(__getSuiteName());
186 __prints("--- Summary: ");
187 __printn(__numFailures);
189 __printn(__numTests);
191 __printn(__numCases);
193 __printn(__numFailures);
194 __prints(" failed of ");
195 __printn(__numTests);
196 __prints(" tests in ");
197 __printn(__numCases);
198 __prints(" cases.\n");