]> pd.if.org Git - isea/blob - t/q2dd.c
Initial checkin.
[isea] / t / q2dd.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <math.h>
5
6 #include "tap.h"
7 #include "isea.h"
8
9 #include "testing.h"
10
11 #include "cities.pt"
12
13 struct dgg {
14         int quad;
15         double x, y;
16         char *data;
17 }  dgg[] = {
18 {1, 0.3700177, 0.3076079, "49900 Corvallis"},
19 {1, 0.3578962, 0.3131305, "42300 Aloha"},
20 {1, 0.3589320, 0.3140789, "41700 Tigard"},
21 {1, 0.3696974, 0.3096601, "41400 Albany"},
22 {1, 0.3593468, 0.3147732, "35700 LakeOswego"},
23 {1, 0.3644930, 0.3109138, "32600 Keizer"},
24 {1, 0.3612037, 0.3094476, "26800 MacMinnville"},
25 {1, 0.3605206, 0.3157122, "26100 OregonCity"},
26 {1, 0.3998953, 0.3041388, "23300 GrantsPass"},
27 {1, 0.3596352, 0.3140123, "23100 Tualatin"},
28 {1, 0.3600231, 0.3153389, "22500 WestLinn"},
29 {1, 0.3590763, 0.3156365, "20700 Milwaukie"},
30 {1, 0.3593678, 0.3307608, "20600 CitrusPark"},
31 {1, 0.3626963, 0.3127749, "20400 Woodburn"},
32 {1, 0.3888368, 0.3048309, "20300 Roseburg"},
33 {1, 0.0, 0.0, NULL}
34 };
35
36 int main(void) {
37         int i, j;
38
39         char isea[64], sahr[64];
40         struct isea_dgg g;
41         struct isea_pt xy;
42         struct isea_geo ll;
43
44         isea_grid_init(&g);
45         g.output = ISEA_Q2DD;
46         g.radius = ISEA_SCALE;
47
48         i=0;
49         while (cities[i].data) i++;
50
51         plan_tests(i * 3);
52
53         for (j=0; j<i; j++) {
54                 ll.lon = cities[j].lon * M_PI / 180.0;
55                 ll.lat = cities[j].lat * M_PI / 180.0;
56                 xy = isea_forward(&g, &ll);
57                 sprintf(isea, "%.7f", xy.x);
58                 sprintf(sahr, "%.7f", dgg[j].x);
59                 ok(!strcmp(isea,sahr), "q2dd X (%f, %f %s) %s == %s",
60                                 cities[j].lon, cities[j].lat, cities[j].data,
61                                 isea, sahr,
62                                 xy.x, dgg[j].x);
63                 ok(!strcmp(isea,sahr), "q2dd Y (%f, %f %s) %f == %f",
64                                 cities[j].lon, cities[j].lat, cities[j].data,
65                                 xy.y, dgg[j].y);
66                 ok(g.quad == dgg[j].quad,
67                                 "q2dd Q (%f, %f %s) %d == %d",
68                                 cities[j].lon, cities[j].lat, cities[j].data,
69                                 g.quad+1, dgg[j].quad);
70         }
71
72         return exit_status();
73
74 }