aboutsummaryrefslogtreecommitdiff
path: root/test/121_coorddata_dr
diff options
context:
space:
mode:
Diffstat (limited to 'test/121_coorddata_dr')
-rw-r--r--test/121_coorddata_dr/00_all.in0
-rw-r--r--test/121_coorddata_dr/00_all.out1
-rw-r--r--test/121_coorddata_dr/coorddata_dr.c59
3 files changed, 60 insertions, 0 deletions
diff --git a/test/121_coorddata_dr/00_all.in b/test/121_coorddata_dr/00_all.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/121_coorddata_dr/00_all.in
diff --git a/test/121_coorddata_dr/00_all.out b/test/121_coorddata_dr/00_all.out
new file mode 100644
index 0000000..d6109db
--- /dev/null
+++ b/test/121_coorddata_dr/00_all.out
@@ -0,0 +1 @@
All good
diff --git a/test/121_coorddata_dr/coorddata_dr.c b/test/121_coorddata_dr/coorddata_dr.c
new file mode 100644
index 0000000..92e7c2a
--- /dev/null
+++ b/test/121_coorddata_dr/coorddata_dr.c
@@ -0,0 +1,59 @@
1#include "../test.h"
2
3#define POW_3_7 2187
4#define BOUND (64430 * POW_3_7 / 100)
5#define TGROUP UINT64_C(4278190335)
6
7cube_t transform(cube_t, uint8_t);
8uint64_t coordinate_dr_coord(cube_t, const void *);
9cube_t coordinate_dr_cube(uint64_t, const void *);
10uint64_t coordinate_dr_gendata(void *);
11
12void run(void) {
13 bool found;
14 uint64_t t;
15 char str[STRLENMAX];
16 void *data;
17 size_t size;
18 cube_t cube;
19 uint64_t coord, coord2;
20
21 size = coordinate_dr_gendata(NULL);
22 data = malloc(size);
23 coordinate_dr_gendata(data);
24
25 /* Test all possible values for CO coordinate */
26 for (coord = 0; coord < BOUND; coord++) {
27 cube = coordinate_dr_cube(coord, data);
28
29 if (!isconsistent(cube)) {
30 printf("Error: invcoord of %" PRId64
31 " is not consistent\n", coord);
32 goto cleanup;
33 }
34
35 for (t = 0, found = false; t < 48; t++) {
36 if (!((UINT64_C(1) << t) & TGROUP))
37 continue;
38
39 coord2 = coordinate_dr_coord(transform(cube, t), data);
40 if (coord == coord2) {
41 found = true;
42 break;
43 }
44 }
45
46 if (!found) {
47 printf("Error: invcoord of %" PRId64 " returns %"
48 PRId64 " with cube:\n", coord, coord2);
49 writecube("H48", cube, STRLENMAX, str);
50 printf("%s\n", str);
51 goto cleanup;
52 }
53 }
54
55 printf("All good\n");
56
57cleanup:
58 free(data);
59}

Generated with cgit - Back to sebastiano.tronto.net