]> pd.if.org Git - isea/blob - t/q2di.c
Initial checkin.
[isea] / t / q2di.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 "hexes.pt"
12
13 struct dgg {
14         int quad, x, y;
15         char *data;
16 } dgg[] = {
17 {0, 0, 0, "vertex 1"},
18 {1, 0, 0, "vertex 2 r4 1 0 0"},
19 {1, 0, 1, "step 1 r4 1 0 1"},
20 {1, 0, 2, "step 2 r4 1 0 2"},
21 {1, 0, 3, "step 3 r4 1 0 3"},
22 {1, 3, 6, "triangle center 1 r4 1 3 6"},
23 {2, 0, 0, "vertex 3"},
24 {2, 0, 1, "step 3.1"},
25 {3, 0, 0, "vertex 4"},
26 {4, 0, 0, "vertex 5"},
27 {5, 0, 0, "vertex 6"},
28 {6, 0, 0, "vertex 7"},
29 {7, 0, 0, "vertex 8"},
30 {8, 0, 0, "vertex 9"},
31 {9, 0, 0, "vertex 10"},
32 {10, 0, 0, "vertex 11"},
33 {11, 0, 0, "vertex 12"},
34 {0, 0, 0, NULL}
35 };
36
37 int main(void) {
38         int i, j;
39
40         struct isea_dgg g;
41         struct isea_pt xy;
42         struct isea_geo ll;
43
44         isea_grid_init(&g);
45         isea_orient_pole(&g);
46         g.output = ISEA_Q2DI;
47         g.radius = ISEA_SCALE;
48         g.aperture = 3;
49         g.resolution = 4;
50
51         i=0;
52         while (input[i].data) i++;
53
54         plan_tests(i * 3);
55
56         for (j=0; j<i; j++) {
57                 ll.lon = input[j].lon * M_PI / 180.0;
58                 ll.lat = input[j].lat * M_PI / 180.0;
59                 xy = isea_forward(&g, &ll);
60                 ok(xy.x == dgg[j].x, "q2di X %d == %d (%f, %f %s)",
61                                 (int)xy.x, dgg[j].x,
62                                 input[j].lon, input[j].lat, input[j].data
63                   );
64                 ok(xy.y == dgg[j].y, "q2di Y %d == %d", (int)xy.y, dgg[j].y);
65                 ok(g.quad == dgg[j].quad,
66                                 "q2di Q %d == %d",
67                                 g.quad, dgg[j].quad);
68         }
69
70         return exit_status();
71
72 }