15 #include "CUnit/Basic.h"
24 int num_old_failures, num_new_failures;
30 printf(
"\nAssert failed:\n\tFormat [%s] generated an error: %s\n", format,
cu_error_msg);
33 num_old_failures = CU_get_number_of_failures();
34 CU_ASSERT_STRING_EQUAL(actual, expected);
35 num_new_failures = CU_get_number_of_failures();
36 if (num_new_failures > num_old_failures)
38 printf(
"\nAssert failed:\n\t%s\t(actual)\n\t%s\t(expected)\n", actual, expected);
52 printf(
"\nAssert failed:\n\tFormat [%s] did not generate an error.\n", format);
71 "0'0.000\"N 0\xC2\xB0"
76 "20'44.412\"N 45\xC2\xB0"
81 "0'0.000\"N 180\xC2\xB0"
86 "0'0.000\"N 1\xC2\xB0"
91 "59'59.640\"N 0\xC2\xB0"
96 "20'44.412\"S 45\xC2\xB0"
101 "0'0.000\"S 180\xC2\xB0"
106 "0'0.000\"S 1\xC2\xB0"
111 "59'59.640\"S 0\xC2\xB0"
116 "20'44.412\"N 45\xC2\xB0"
121 "0'0.000\"N 180\xC2\xB0"
126 "0'0.000\"N 1\xC2\xB0"
131 "59'59.640\"N 0\xC2\xB0"
136 "20'44.412\"S 45\xC2\xB0"
141 "0'0.000\"S 180\xC2\xB0"
146 "0'0.000\"S 1\xC2\xB0"
151 "59'59.640\"S 0\xC2\xB0"
156 "39'4.356\"N 31\xC2\xB0"
162 "36'0.000\"S 76\xC2\xB0"
210 "POINT(-45.4545 -12.34567)",
"DD.DDD MM.MMM",
"-12.000 20.740 -45.000 27.270");
212 "POINT(-45.4545 -12.34567)",
"DD.DDD MM.MMM C",
"12.000 20.740 S 45.000 27.270 W");
214 "POINT(-45.4545 -12.34567)",
"DD.DDD MM.MMM SS.SSS",
"-12.000 20.000 44.412 -45.000 27.000 16.200");
216 "POINT(-45.4545 -12.34567)",
"DD.DDD MM.MMM SS.SSS C",
"12.000 20.000 44.412 S 45.000 27.000 16.200 W");
223 "POINT(-45.4545 -12.34567)",
"DD.DDDMM.MMMSS.SSSC",
"12.00020.00044.412S 45.00027.00016.200W");
255 "POINT(1.23456 7.89012)",
256 "DD.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
258 "POINT(1.23456 7.89012)",
259 "DD.DDD jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
264 #define assert_lwprint_equal(d, precision, expected) \
265 lwprint_double((d), (precision), result); \
266 ASSERT_STRING_EQUAL(result, (expected));
271 static const int precision_start = -1;
275 for (
int i = precision_start; i < precision_end; i++)
282 for (
int i = precision_start; i < precision_end; i++)
292 for (
int i = 1; i < precision_end; i++)
300 for (
int i = 1; i < precision_end; i++)
365 for (
int i = 0; i < 15; i++)
367 for (
int i = 15; i < 20; i++)
370 for (
int i = 0; i < 16; i++)
372 for (
int i = 16; i < 20; i++)
377 for (
int i = 1; i < 15; i++)
387 for (
int i = 2; i < 15; i++)
437 assert_lwprint_equal(7000109.9999999990686774253845214843750000000000, 12,
"7000109.999999999");
440 const double d = 526355.92112222222;
441 const double gridsize = 0.00001;
442 const double gridded = rint(d / gridsize) * gridsize;
492 for (
int i = precision_start; i < precision_end; i++)
506 #define assert_lwprint_roundtrip(d) \
508 char s[OUT_DOUBLE_BUFFER_SIZE] = {0}; \
509 lwprint_double(d, OUT_MAX_DIGITS, s); \
510 ASSERT_DOUBLE_EQUAL(atof(s), d); \
570 CU_pSuite suite = CU_add_suite(
"printing", NULL, NULL);
static void test_lwpoint_to_latlon_default_format(void)
#define assert_lwprint_roundtrip(d)
static void test_lwpoint_to_latlon_oddball_formats(void)
static void test_lwpoint_to_latlon_bad_formats(void)
static void test_lwpoint_to_latlon_format_orders(void)
char result[OUT_DOUBLE_BUFFER_SIZE]
#define assert_lwprint_equal(d, precision, expected)
void print_suite_setup(void)
static void test_lwprint_roundtrip(void)
static void test_lwprint(void)
static void test_lwpoint_to_latlon_optional_format(void)
static void test_lwpoint_to_latlon_assert_error(char *point_wkt, const char *format)
static void test_lwpoint_to_latlon_assert_format(char *point_wkt, const char *format, const char *expected)
void cu_error_msg_reset()
char cu_error_msg[MAX_CUNIT_ERROR_LENGTH+1]
#define PG_ADD_TEST(suite, testfunc)
void lwpoint_free(LWPOINT *pt)
#define LW_PARSER_CHECK_NONE
char * lwpoint_to_latlon(const LWPOINT *p, const char *format)
LWGEOM * lwgeom_from_wkt(const char *wkt, const char check)
#define OUT_DEFAULT_DECIMAL_DIGITS
#define OUT_DOUBLE_BUFFER_SIZE
#define FP_TOLERANCE
Floating point comparators.