0001 #ifndef REPORTER_HEADER
0002 #define REPORTER_HEADER
0003
0004 #include <stdarg.h>
0005 #include <cgreen/breadcrumb.h>
0006
0007 #ifdef __cplusplus
0008 namespace cgreen {
0009 extern "C" {
0010 #endif
0011
0012 typedef struct TestReporter_ TestReporter;
0013 struct TestReporter_ {
0014 void (*destroy)(TestReporter *reporter);
0015 void (*start_suite)(TestReporter *reporter, const char *name, const int count);
0016 void (*start_test)(TestReporter *reporter, const char *name);
0017 void (*show_pass)(TestReporter *reporter, const char *file, int line, const char *message, va_list arguments);
0018 void (*show_fail)(TestReporter *reporter, const char *file, int line, const char *message, va_list arguments);
0019 void (*show_incomplete)(TestReporter *reporter, const char *file, int line, const char *message, va_list arguments);
0020 void (*assert_true)(TestReporter *reporter, const char *file, int line, int result, const char * message, ...);
0021 void (*finish_test)(TestReporter *reporter, const char *file, int line, const char *message);
0022 void (*finish_suite)(TestReporter *reporter, const char *file, int line);
0023 int passes;
0024 int failures;
0025 int exceptions;
0026 CgreenBreadcrumb *breadcrumb;
0027 int ipc;
0028 void *memo;
0029 void *options;
0030 };
0031
0032 typedef void TestReportMemo;
0033
0034 struct TestContext_ {
0035 TestReporter *reporter;
0036 };
0037
0038 typedef struct TestContext_ TestContext;
0039
0040 TestReporter *create_reporter(void);
0041 TestReporter *get_test_reporter(void);
0042 void set_reporter_options(TestReporter *reporter, void *options);
0043 void setup_reporting(TestReporter *reporter);
0044 void destroy_reporter(TestReporter *reporter);
0045 void destroy_memo(TestReportMemo *memo);
0046 void reporter_start(TestReporter *reporter, const char *name);
0047 void reporter_start_suite(TestReporter *reporter, const char *name,
0048 const int count);
0049 void reporter_finish(TestReporter *reporter, const char *filename, int line, const char *message);
0050 void reporter_finish_suite(TestReporter *reporter, const char *filename, int line);
0051 void add_reporter_result(TestReporter *reporter, int result);
0052 void send_reporter_exception_notification(TestReporter *reporter);
0053 void send_reporter_completion_notification(TestReporter *reporter);
0054
0055 #ifdef __cplusplus
0056 }
0057 }
0058 #endif
0059
0060 #endif