testfwk.c

来自「Small Device C Compiler 面向Inter8051」· C语言 代码 · 共 141 行

C
141
字号
/** Test framework support functions. */#include <testfwk.h>#include <stdarg.h>#ifdef __ds390#include <tinibios.h> /* main() must see the ISR declarations */#endif#if defined(PORT_HOST) || defined(SDCC_z80) || defined(SDCC_gbz80)#define _REENTRANT#else#define _REENTRANT reentrant#endif/** Define this if the port's div or mod functions are broken.    A slow loop based method will be substituded.*///#define BROKEN_DIV_MOD		1void _putchar(char c);void _exitEmu(void);#if BROKEN_DIV_MODint __div(int num, int denom){    int q = 0;    while (num >= denom) {        q++;        num -= denom;    }    return q;}int __mod(int num, int denom){    while (num >= denom) {        num -= denom;    }    return num;}#elseint __div(int num, int denom){    return num/denom;}int __mod(int num, int denom){    return num%denom;}#endifstatic void _printn(int n) _REENTRANT{    int rem;    if (n < 0) {        _putchar('-');        n = -n;    }    rem = __mod(n, 10);    if (rem != n) {        _printn(__div(n, 10));    }    _putchar('0' + rem);}void __printf(const char *szFormat, ...) REENTRANT{    va_list ap;    va_start(ap, szFormat);    while (*szFormat) {        if (*szFormat == '%') {            switch (*++szFormat) {            case 's': {                char *sz = va_arg(ap, char *);                while (*sz) {                    _putchar(*sz++);                }                break;            }            case 'u': {                int i = va_arg(ap, int);                _printn(i);                break;            }            case '%':                _putchar('%');                break;            default:                break;            }        }        else {            _putchar(*szFormat);        }        szFormat++;    }    va_end(ap);}int __numTests;int __numFailures;void __fail(const char *szMsg, const char *szCond, const char *szFile, int line){    __printf("--- FAIL: \"%s\" on %s at %s:%u\n", szMsg, szCond, szFile, line);    __numFailures++;}int main(void){    TESTFUNP *cases;    int numCases = 0;    __printf("--- Running: %s\n", getSuiteName());    cases = suite();    while (*cases) {        __printf("Running %u\n", numCases);        (*cases)();        cases++;        numCases++;    }        __printf("--- Summary: %u/%u/%u: %u failed of %u tests in %u cases.\n",            __numFailures, __numTests, numCases,           __numFailures, __numTests, numCases           );    _exitEmu();    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?