#ifndef SVN_TEST_H
#define SVN_TEST_H
#ifndef SVN_ENABLE_DEPRECATION_WARNINGS_IN_TESTS
#undef SVN_DEPRECATED
#define SVN_DEPRECATED
#endif
#include <apr_pools.h>
#include "svn_delta.h"
#include "svn_path.h"
#include "svn_types.h"
#include "svn_error.h"
#include "svn_string.h"
#ifdef __cplusplus
extern "C" {
#endif
#define SVN_TEST_ASSERT(expr) \
do { \
if (!(expr)) \
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL, \
"assertion '%s' failed at %s:%d", \
#expr, __FILE__, __LINE__); \
} while (0)
#define SVN_TEST_STRING_ASSERT(expr, expected_expr) \
do { \
const char *tst_str1 = (expr); \
const char *tst_str2 = (expected_expr); \
\
if (tst_str2 == NULL && tst_str1 == NULL) \
break; \
if ( (tst_str2 != NULL && tst_str1 == NULL) \
|| (strcmp(tst_str2, tst_str1) != 0) ) \
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL, \
"Strings not equal\n Expected: '%s'\n Found: '%s'" \
"\n at %s:%d", \
tst_str2, tst_str1, __FILE__, __LINE__); \
} while(0)
typedef struct svn_test_opts_t
{
const char *fs_type;
const char *config_file;
int server_minor_version;
} svn_test_opts_t;
typedef svn_error_t* (*svn_test_driver2_t)(apr_pool_t *pool);
typedef svn_error_t* (*svn_test_driver_opts_t)(const svn_test_opts_t *opts,
apr_pool_t *pool);
enum svn_test_mode_t
{
svn_test_pass,
svn_test_xfail,
svn_test_skip,
svn_test_all
};
struct svn_test_descriptor_t
{
enum svn_test_mode_t mode;
svn_test_driver2_t func2;
svn_test_driver_opts_t func_opts;
const char *msg;
const char *wip;
};
extern struct svn_test_descriptor_t test_funcs[];
#define SVN_TEST_NULL {0}
#define SVN_TEST_PASS2(func, msg) {svn_test_pass, func, NULL, msg}
#define SVN_TEST_XFAIL2(func, msg) {svn_test_xfail, func, NULL, msg}
#define SVN_TEST_XFAIL_COND2(func, p, msg) \
{(p) ? svn_test_xfail : svn_test_pass, func, NULL, msg}
#define SVN_TEST_SKIP2(func, p, msg) \
{(p) ? svn_test_skip : svn_test_pass, func, NULL, msg}
#define SVN_TEST_OPTS_PASS(func, msg) {svn_test_pass, NULL, func, msg}
#define SVN_TEST_OPTS_XFAIL(func, msg) {svn_test_xfail, NULL, func, msg}
#define SVN_TEST_OPTS_XFAIL_COND(func, p, msg) \
{(p) ? svn_test_xfail : svn_test_pass, NULL, func, msg}
#define SVN_TEST_OPTS_SKIP(func, p, msg) \
{(p) ? svn_test_skip : svn_test_pass, NULL, func, msg}
#define SVN_TEST_WIMP(func, msg, wip) \
{svn_test_xfail, func, NULL, msg, wip}
#define SVN_TEST_WIMP_COND(func, p, msg, wip) \
{(p) ? svn_test_xfail : svn_test_pass, func, NULL, msg, wip}
#define SVN_TEST_OPTS_WIMP(func, msg, wip) \
{svn_test_xfail, NULL, func, msg, wip}
#define SVN_TEST_OPTS_WIMP_COND(func, p, msg, wip) \
{(p) ? svn_test_xfail : svn_test_pass, NULL, func, msg, wip}
apr_uint32_t svn_test_rand(apr_uint32_t *seed);
void svn_test_add_dir_cleanup(const char *path);
#ifdef __cplusplus
}
#endif
#endif