]> pd.if.org Git - hexagon/blob - t/hextest.c
renamed library to hexagon
[hexagon] / t / hextest.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <assert.h>
4 #include <limits.h>
5 #include <math.h>
6
7 #include "hexagon.h"
8
9 #include "tap.h"
10
11 int main(void) {
12         int xy[2];
13         int ijk[3];
14         int hex, start, dist;
15         int x, y, i, count;
16         int range[32];
17
18         printf("checking within function\n");
19         start = HL_cantor_xy(3,3);
20         count = HL_hexes_within_range(start, 2, range, 0);
21         printf("count = %d\n", count);
22         assert(count == 18);
23         count = HL_hexes_within_range(start, 2, range, count);
24         for (i = 0; i < count; i++) {
25                 dumphex(range[i]);
26         }
27
28         printf("checking hex center\n");
29         start = HL_cantor_xy(0,0);
30         dumphex(start);
31         printf("center = %f, %f\n", HL_center_x(start), HL_center_y(start));
32         start = HL_cantor_xy(1,1);
33         dumphex(start);
34         printf("center = %f, %f\n", HL_center_x(start), HL_center_y(start));
35         start = HL_cantor_xy(-1,1);
36         dumphex(start);
37         printf("center = %f, %f\n", HL_center_x(start), HL_center_y(start));
38         start = HL_cantor_xy(2,1);
39         dumphex(start);
40         printf("center = %f, %f\n", HL_center_x(start), HL_center_y(start));
41         start = HL_cantor_xy(2,5);
42         dumphex(start);
43         printf("center = %f, %f\n", HL_center_x(start), HL_center_y(start));
44         start = HL_cantor_xy(-2,5);
45         dumphex(start);
46         printf("center = %f, %f\n", HL_center_x(start), HL_center_y(start));
47
48         printf("checking hexbin -0.444194, 4.639363\n");
49         start = HL_hexbin(0, -0.444194, 4.639363);
50         dumphex(start);
51
52         printf("checking maximum grid size\n");
53         x = 1;
54         do {
55                 x = x * 2;
56                 printf("checking %d...\n", x);
57         } while (HL_map_bounds_ok(x,x));
58         x = searchbound(x/2, x);
59         printf("maximum size = %d\n", x);
60         assert(x = HL_map_max_dimension());
61
62         start = HL_cantor_xy(x,x);
63         assert(start>0);
64         dumphex(start);
65
66         printf("trying max+1 = HL_cantor_xy(%d,%d)\n", x+1, x+1);
67         printf("the dump should be bogus\n");
68         start = HL_cantor_xy(x+1,x+1);
69         assert(start<0);
70         dumphex(start);
71
72         return 0;
73 }
74
75 int searchbound(int low, int high) {
76         int try;
77
78         while (low != high - 1) {
79                 try = (low + high) / 2;
80                 printf("searching, low = %d, high = %d, trying %d\n", low, high, try);
81                 if (HL_map_bounds_ok(try,try)) {
82                         low = try;
83                 } else {
84                         high = try;
85                 }
86         }
87         return low;
88 }