summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2019-02-22 18:17:57 -0800
committerGary E. Miller <gem@rellim.com>2019-02-22 18:17:57 -0800
commit59935603ccb54f12758672f2c077109523aeeaa7 (patch)
tree1f32c0ccf61986344e4fffa007c2873fcb9c6d8d /tests
parentae2ebe25de183ddd576615fa80682d6d6a5b0ffe (diff)
downloadgpsd-59935603ccb54f12758672f2c077109523aeeaa7.tar.gz
deg_to_str2(): Add new function. Thread safe, handles suffix.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_gpsdclient.c120
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);