blob: fa3c5d8433af28e6b841016f0197166dd5ac3f36 [file] [log] [blame]
/* cutest, for embedded targets. */
#ifndef CUTEST_H
#define CUTEST_H
/* Main interface. */
#define TEST_LIST const struct test__ test_list__[]
#define TEST_CHECK(cond) test_check__((cond), __FILE__, __LINE__, #cond)
/* no TEST_CHECK_ -- we don't have a good enough printf */
/* Implementation */
#include "../semihost.h"
struct test__
{
const char *name;
void (*func)(void);
};
extern const struct test__ test_list__[];
static void test_check__(int cond, const char *file, int line, const char *expr)
{
if (cond)
return; /* pass */
emit("Failed!\n");
emit("File: "); emit(file); emit("\n");
emit("Line: "); emit_uint32(line); emit("\n");
emit("Expr: "); emit(expr); emit("\n");
quit_failure();
}
static void run_test__(const struct test__ *t)
{
emit(" "); emit(t->name); emit(": ");
t->func();
emit("OK\n");
}
int main(void)
{
emit("Running tests:\n");
for (const struct test__ *t = test_list__;
t->name;
t++)
{
run_test__(t);
}
emit("Success\n");
quit_success();
}
#endif