--- /dev/null
+/**
+ @file atf.c
+ @brief See header for details
+ $Revision$
+ $HeadURL$
+ */
+#include "atf.h"
+
+char* Curr_Test = NULL;
+static unsigned int Total = 0;
+static unsigned int Failed = 0;
+
+void atf_run_suite(suite_t suite) {
+ suite();
+}
+
+void atf_test_start(char* p_test_name) {
+ Curr_Test = p_test_name;
+ Total++;
+}
+
+void atf_test_fail(char* expr, char* file, int line) {
+ Failed++;
+ printf("%s:%d:0:%s:FAIL\n\t%s\n", file, line, Curr_Test, expr); \
+}
+
+int atf_print_results(void) {
+ static const char* results_string =
+ "\nUnit Test Summary"
+ "\n-----------------"
+ "\nTotal: %d"
+ "\nPassed: %d"
+ "\nFailed: %d"
+ "\n\n";
+ printf(results_string, Total, Total - Failed, Failed);
+ return Failed;
+}
+
--- /dev/null
+/**
+ @file test.h
+ @brief TODO: Describe this file
+ $Revision$
+ $HeadURL$
+ */
+#ifndef TEST_H
+#define TEST_H
+
+#include <stdio.h>
+
+#define CHECK(expr) \
+ if (!(expr)) { atf_test_fail(#expr,__FILE__,__LINE__-1); break; }
+
+#define TEST_SUITE(name) void name(void)
+
+#define TEST(desc) \
+ for(atf_test_start(#desc); Curr_Test != NULL; Curr_Test = NULL)
+
+#define RUN_EXTERN_TEST_SUITE(name) \
+ do { extern TEST_SUITE(name); atf_run_suite(&name); } while(0)
+
+#define RUN_TEST_SUITE(name) \
+ do { atf_run_suite(&name) } while(0)
+
+#define PRINT_TEST_RESULTS atf_print_results
+
+typedef void (*suite_t)(void);
+
+extern char* Curr_Test;
+
+void atf_run_suite(suite_t suite);
+
+void atf_test_start(char* p_test_name);
+
+void atf_test_fail(char* expr, char* file, int line);
+
+int atf_print_results(void);
+
+#endif /* TEST_H */