14 #define _CU_TESTER_H 1
19 #define MAX_CUNIT_ERROR_LENGTH 512
21 #define PG_ADD_TEST(suite, testfunc) CU_add_test(suite, #testfunc, testfunc)
32 #define ASSERT_DOUBLE_EQUAL(o,e) do { \
34 fprintf(stderr, "[%s:%d]\n Expected: %g\n Obtained: %g\n", __FILE__, __LINE__, (double)(e), (o)); \
35 CU_ASSERT_EQUAL(o,(double)e); \
38 #define ASSERT_INT_EQUAL(o,e) do { \
40 fprintf(stderr, "[%s:%d]\n Expected: %d\n Obtained: %d\n", __FILE__, __LINE__, (e), (o)); \
41 CU_ASSERT_EQUAL(o,e); \
47 CU_BOOL error = (!obtained && expected) || (obtained && !expected) || (strcmp(obtained, expected) != 0);
51 msg =
lwalloc(60 + (obtained ? strlen(obtained) : 4) + (expected ? strlen(expected) : 4));
53 "ASSERT_STRING_EQUAL\n\t* Expected: %s\n\t* Obtained: %s",
54 expected ? expected :
"NULL",
55 obtained ? obtained :
"NULL");
57 CU_assertImplementation(!error, line, msg, file, NULL, CU_FALSE);
62 #define ASSERT_STRING_EQUAL(o, e) assert_string_equal_impl(o, e, __FILE__, __LINE__)
64 #define ASSERT_VARLENA_EQUAL(v, s) \
67 if (strncmp(v->data, s, LWSIZE_GET(v->size) - LWVARHDRSZ) != 0) \
70 stderr, "[%s:%d]\n Expected: %s\n Obtained: %s\n", __FILE__, __LINE__, (s), (v->data)); \
77 #define ASSERT_LWGEOM_EQUAL(o, e) do { \
78 if ( !lwgeom_same(o, e) ) { \
79 char* wkt_o = lwgeom_to_ewkt(o); \
80 char* wkt_e = lwgeom_to_ewkt(e); \
81 fprintf(stderr, "[%s:%d]\n Expected: %s\n Obtained: %s\n", __FILE__, __LINE__, (wkt_o), (wkt_e)); \
85 CU_ASSERT_TRUE(lwgeom_same(o, e)); \
88 #define ASSERT_INTARRAY_EQUAL(o, e, n) do { \
90 for (i = 0; i < n; i++) { \
92 fprintf(stderr, "[%s:%d]", __FILE__, __LINE__); \
93 fprintf(stderr, "\nExpected: ["); \
94 for (i = 0; i < n; i++) \
95 fprintf(stderr, " %d", e[i]); \
96 fprintf(stderr, " ]\nObtained: ["); \
97 for (i = 0; i < n; i++) \
98 fprintf(stderr, " %d", o[i]); \
99 fprintf(stderr, " ]\n"); \
107 #define ASSERT_POINT2D_EQUAL(o, e, eps) do { \
108 CU_ASSERT_DOUBLE_EQUAL(o.x, e.x, eps); \
109 CU_ASSERT_DOUBLE_EQUAL(o.y, e.y, eps); \
112 #define ASSERT_POINT4D_EQUAL(o, e, eps) do { \
113 CU_ASSERT_DOUBLE_EQUAL(o.x, e.x, eps); \
114 CU_ASSERT_DOUBLE_EQUAL(o.y, e.y, eps); \
115 CU_ASSERT_DOUBLE_EQUAL(o.z, e.z, eps); \
116 CU_ASSERT_DOUBLE_EQUAL(o.m, e.m, eps); \
void(* PG_SuiteSetup)(void)
void do_fn_test(LWGEOM *(*transfn)(LWGEOM *), char *input_wkt, char *expected_wkt)
static void assert_string_equal_impl(const char *obtained, const char *expected, const char *file, int line)
void cu_error_msg_reset(void)
void * lwalloc(size_t size)
This library is the generic geometry handling section of PostGIS.