Change SETUP_TEST_FIXTURE so that the fixture structure is passed by
[openssl.git] / test / testutil.h
index 9786579f58aa89b127ad6bd099ef83ee5f9f8b08..f779fd53053e505311d4cbfe556ed7d2478d894b 100644 (file)
  * SETUP_TEST_FIXTURE will call set_up() to create a new TEST_FIXTURE_TYPE
  * object called "fixture". It will also allocate the "result" variable used
  * by EXECUTE_TEST. set_up() should take a const char* specifying the test
- * case name and return a TEST_FIXTURE_TYPE by value.
+ * case name and return a TEST_FIXTURE_TYPE by reference.
  *
- * EXECUTE_TEST will pass fixture to execute_func() by value, call
+ * EXECUTE_TEST will pass fixture to execute_func() by reference, call
  * tear_down(), and return the result of execute_func(). execute_func() should
- * take a TEST_FIXTURE_TYPE by value and return 1 on success and 0 on
- * failure.
+ * take a TEST_FIXTURE_TYPE by reference and return 1 on success and 0 on
+ * failure.  The tear_down function is responsible for deallocation of the
+ * result variable, if required.
  *
  * Unit tests can define their own SETUP_TEST_FIXTURE and EXECUTE_TEST
  * variations like so:
  *      }
  */
 # define SETUP_TEST_FIXTURE(TEST_FIXTURE_TYPE, set_up)\
-    TEST_FIXTURE_TYPE fixture = set_up(TEST_CASE_NAME); \
+    TEST_FIXTURE_TYPE *fixture = set_up(TEST_CASE_NAME); \
     int result = 0
 
 # define EXECUTE_TEST(execute_func, tear_down)\
+    if (fixture != NULL) {\
         result = execute_func(fixture);\
         tear_down(fixture);\
-        return result
-
-/* Shorthand if tear_down does nothing. */
-# define EXECUTE_TEST_NO_TEARDOWN(execute_func)\
-        result = execute_func(fixture);\
-        return result
+    }
 
 /*
  * TEST_CASE_NAME is defined as the name of the test case function where
@@ -142,7 +139,7 @@ const char *test_get_option_argument(const char *option);
  * rather link to one of the helper main() methods.
  */
 
-void add_test(const char *test_case_name, int (*test_fn) ());
+void add_test(const char *test_case_name, int (*test_fn) (void));
 void add_all_tests(const char *test_case_name, int (*test_fn)(int idx), int num,
                    int subtest);
 
@@ -170,7 +167,7 @@ void cleanup_tests(void);
 # endif
 #endif
 
-#  define DECLARE_COMPARISON(type, name, opname)                        \
+# define DECLARE_COMPARISON(type, name, opname)                         \
     int test_ ## name ## _ ## opname(const char *, int,                 \
                                      const char *, const char *,        \
                                      const type, const type);