]> pd.if.org Git - isea/blob - t/seqnum.c
Initial checkin.
[isea] / t / seqnum.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 seq_a3r4, seq_a3r3;
15         char *data;
16 } dgg[] = {
17 {1, 1, "vertex 1"},
18 {2, 2, "vertex 2 r4 1 0 0"},
19 {3, 5, "step 1 r4 1 0 1"},
20 {4, 3, "step 2 r4 1 0 2"},
21 {5, 3, "step 3 r4 1 0 3"},
22 {35, 13,  "triangle center 1 r4 1 3 6"},
23 {83, 29, "vertex 3"},
24 {84, 32, "step 3.1"},
25 {164, 56, "vertex 4"},
26 {245, 83, "vertex 5"},
27 {326, 110, "vertex 6"},
28 {407, 137, "vertex 7"},
29 {488, 164, "vertex 8"},
30 {569, 191, "vertex 9"},
31 {650, 218, "vertex 10"},
32 {731, 245, "vertex 11"},
33 {812, 272, "vertex 12"},
34 {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_SEQNUM;
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 * 2 - 1);
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(g.serial == dgg[j].seq_a3r4,
61                                 "seqnum a3r4 %d == %d (%f, %f %s)",
62                                 g.serial, dgg[j].seq_a3r4,
63                                 input[j].lon, input[j].lat, input[j].data
64                   );
65         }
66
67         g.resolution = 3;
68         for (j=0; j<i; j++) {
69                 if (j==7) continue; /* falls on hex edge, so
70                                        translated hex depends on rounding
71                                        or precision */
72                 ll.lon = input[j].lon * M_PI / 180.0;
73                 ll.lat = input[j].lat * M_PI / 180.0;
74                 xy = isea_forward(&g, &ll);
75                 ok(g.serial == dgg[j].seq_a3r3,
76                                 "seqnum a3r3 %d == %d (%f, %f %s)",
77                                 g.serial, dgg[j].seq_a3r3,
78                                 input[j].lon, input[j].lat, input[j].data
79                   );
80         }
81
82         return exit_status();
83
84 }