diff options
Diffstat (limited to 'tests/test_gpsdclient.c')
-rw-r--r-- | tests/test_gpsdclient.c | 120 |
1 files changed, 92 insertions, 28 deletions
diff --git a/tests/test_gpsdclient.c b/tests/test_gpsdclient.c index f4c93379..deda6d2c 100644 --- a/tests/test_gpsdclient.c +++ b/tests/test_gpsdclient.c @@ -20,8 +20,11 @@ struct test { double deg; char dd[20]; + char dd2[20]; char ddmm[20]; + char ddmm2[20]; char ddmmss[20]; + char ddmmss2[20]; }; #define NANFLAG 9999 @@ -29,78 +32,118 @@ struct test { struct test tests[] = { /* 1.999999995 sec */ {(1.999999995), - " 2.00000000", /* rounded up */ - " 2 00.000000'", /* rounded up */ - " 1 59' 59.99998\""}, + " 2.00000000", /* rounded up */ + " 2.00000000 E", /* rounded up */ + " 2 00.000000'", /* rounded up */ + " 2 00.000000' E", /* rounded up */ + " 1 59' 59.99998\"", + " 1 59' 59.99998\" N"}, /* 3.999999999 sec */ {(3.999999994), - " 3.99999999", /* not rounded up */ - " 4 00.000000'", /* rounded up */ - " 3 59' 59.99998\""}, + " 3.99999999", /* not rounded up */ + " 3.99999999 E", /* not rounded up */ + " 4 00.000000'", /* rounded up */ + " 4 00.000000' E", /* rounded up */ + " 3 59' 59.99998\"", + " 3 59' 59.99998\" N"}, /* 5 degree, 1.99999960 arcmin */ {(5.0 + 1.999999600/60.0), " 5.03333333", - " 5 02.000000'", /* rounded up */ - " 5 01' 59.99998\""}, + " 5.03333333 E", + " 5 02.000000'", /* rounded up */ + " 5 02.000000' E", /* rounded up */ + " 5 01' 59.99998\"", + " 5 01' 59.99998\" N"}, /* 6 degree, 1.99999940 arcmin */ {(6.0 + 1.999999400/60.0), " 6.03333332", - " 6 01.999999'", /* not rounded up */ - " 6 01' 59.99996\""}, + " 6.03333332 E", + " 6 01.999999'", /* not rounded up */ + " 6 01.999999' E", /* not rounded up */ + " 6 01' 59.99996\"", + " 6 01' 59.99996\" N"}, /* 7 degree, 59.99999960 arcmin */ {(7.0 + 59.999999600/60.0), " 7.99999999", - " 8 00.000000'", /* rounded up */ - " 7 59' 59.99998\""}, + " 7.99999999 E", + " 8 00.000000'", /* rounded up */ + " 8 00.000000' E", /* rounded up */ + " 7 59' 59.99998\"", + " 7 59' 59.99998\" N"}, /* 9 degree, 59.99999940 arcmin */ {(9.0 + 59.999999400/60.0), " 9.99999999", - " 9 59.999999'", /* not rounded up */ - " 9 59' 59.99996\""}, + " 9.99999999 E", + " 9 59.999999'", /* not rounded up */ + " 9 59.999999' E", /* not rounded up */ + " 9 59' 59.99996\"", + " 9 59' 59.99996\" N"}, /* 11 degree, 1 arcminute, 1.99999600 arcsec */ {(11.0 + 1.0/60.0 + 1.99999600/3600.0), " 11.01722222", + " 11.01722222 E", " 11 01.033333'", - " 11 01' 02.00000\""}, /* rounded up */ + " 11 01.033333' E", + " 11 01' 02.00000\"", /* rounded up */ + " 11 01' 02.00000\" N"}, /* rounded up */ /* 12 deg, 2 min, 2.99999400 sec */ {(12.0 + 2.0/60.0 + 2.99999400/3600.0), " 12.03416667", + " 12.03416667 E", " 12 02.050000'", - " 12 02' 02.99999\""}, /* not rounded up */ + " 12 02.050000' E", + " 12 02' 02.99999\"", /* not rounded up */ + " 12 02' 02.99999\" N"}, /* not rounded up */ /* -44.99999999999 */ /* fabs() */ {-44.0, " 44.00000000", + " 44.00000000 W", " 44 00.000000'", - " 44 00' 00.00000\""}, + " 44 00.000000' W", + " 44 00' 00.00000\"", + " 44 00' 00.00000\" S"}, /* 359.99999999999 */ {359.99999999999, - " 0.00000000", /* rounded up, and rolled over */ + " 0.00000000", /* rounded up, and rolled over */ + " 0.00000000 E", /* rounded up, and rolled over */ " 0 00.000000'", - " 0 00' 00.00000\""}, + " 0 00.000000' E", + " 0 00' 00.00000\"", + " 0 00' 00.00000\" N"}, /* 361 */ /* nan because out of range */ {361, "nan", "nan", + "nan", + "nan", + "nan", "nan"}, /* -361 */ /* nan, just because */ {NANFLAG, "nan", "nan", + "nan", + "nan", + "nan", "nan"}, /* FP_INFINITE */ /* gcc too 'smart' to let us put a Nan here */ {9999, "nan", "nan", + "nan", + "nan", + "nan", "nan"}, }; int main(int argc, char **argv) { + char buf[20]; char *s; unsigned int i; int verbose = 0; @@ -133,30 +176,51 @@ int main(int argc, char **argv) /* make it a NaN */ tests[i].deg = nan("a"); } - s = deg_to_str (deg_dd, tests[i].deg); + s = deg_to_str(deg_dd, tests[i].deg); if (0 != strcmp(s, tests[i].dd)) { printf("ERROR: %s s/b %s\n", s, tests[i].dd); fail_count++; - } - if (0 < verbose) { + } else if (0 < verbose) { printf("%s s/b %s\n", s, tests[i].dd); } - s = deg_to_str (deg_ddmm, tests[i].deg); + s = deg_to_str2(deg_dd, tests[i].deg, buf, + sizeof(buf), " E", " W"); + if (0 != strcmp(s, tests[i].dd2)) { + printf("ERROR: %s s/b %s\n", s, tests[i].dd2); + fail_count++; + } else if (0 < verbose) { + printf("%s s/b %s\n", s, tests[i].dd2); + } + s = deg_to_str(deg_ddmm, tests[i].deg); if (0 != strcmp(s, tests[i].ddmm)) { printf("ERROR: %s s/b %s\n", s, tests[i].ddmm); fail_count++; - } - if (0 < verbose) { + } else if (0 < verbose) { printf("%s s/b %s\n", s, tests[i].ddmm); } - s = deg_to_str (deg_ddmmss, tests[i].deg); + s = deg_to_str2(deg_ddmm, tests[i].deg, buf, + sizeof(buf), " E", " W"); + if (0 != strcmp(s, tests[i].ddmm2)) { + printf("ERROR: %s s/b %s\n", s, tests[i].ddmm2); + fail_count++; + } else if (0 < verbose) { + printf("%s s/b %s\n", s, tests[i].ddmm2); + } + s = deg_to_str(deg_ddmmss, tests[i].deg); if (0 != strcmp(s, tests[i].ddmmss)) { printf("ERROR: %s s/b %s\n", s, tests[i].ddmmss); fail_count++; - } - if (0 < verbose) { + } else if (0 < verbose) { printf("%s s/b %s\n", s, tests[i].ddmmss); } + s = deg_to_str2(deg_ddmmss, tests[i].deg, buf, + sizeof(buf), " N", " S"); + if (0 != strcmp(s, tests[i].ddmmss2)) { + printf("ERROR: %s s/b %s\n", s, tests[i].ddmmss2); + fail_count++; + } else if (0 < verbose) { + printf("%s s/b %s\n", s, tests[i].ddmmss2); + } } exit(fail_count); |