+
+/**
+ Structure which houses the actual callers for the test cases contained in
+ the collections.
+*/
+typedef struct {
+ test_callback_runner_fn pre;
+ test_callback_runner_fn run;
+ test_callback_runner_fn post;
+} world_runner_st;
+
+
+/**
+ world_st is the structure which is passed to the test implementation to be filled.
+ This must be implemented in order for the test framework to load the tests. We call
+ get_world() in order to fill this structure.
+*/
+
+struct world_st {
+ collection_st *collections;
+
+ /* These methods are called outside of any collection call. */
+ test_callback_create_fn create;
+ test_callback_fn destroy;
+
+ struct {
+ /* This is called a the beginning of any test run. */
+ test_callback_fn startup;
+
+ /* This called on a test if the test requires a flush call (the bool is from test_st) */
+ test_callback_fn flush;
+
+ /**
+ These are run before/after the test. If implemented. Their execution is not controlled
+ by the test.
+ */
+ test_callback_fn pre_run;
+ test_callback_fn post_run;
+
+ /**
+ If an error occurs during the test, this is called.
+ */
+ test_callback_error_fn on_error;
+ } test;
+
+ struct {
+ /* This is called a the beginning of any collection run. */
+ test_callback_fn startup;
+
+ /* This is called at the end of any collection run. */
+ test_callback_fn shutdown;
+ } collection;
+
+
+ /**
+ Runner represents the callers for the tests. If not implemented we will use
+ a set of default implementations.
+ */
+ world_runner_st *runner;
+};
+
+
+
+/**
+ @note world_stats_st is a simple structure for tracking test successes.
+*/
+typedef struct {
+ uint32_t collection_success;
+ uint32_t collection_skipped;
+ uint32_t collection_failed;
+ uint32_t collection_total;
+ uint32_t success;
+ uint32_t skipped;
+ uint32_t failed;
+ uint32_t total;
+} world_stats_st;
+