aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2024-05-26 22:13:47 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2024-05-26 22:13:47 +0200
commitfde8dfa9df8df1e3d42a9a8840836e33817cd498 (patch)
treeefa8bdef14f423e3547ae747eb29b3ab9672e755 /test
parent6ec2e7d5413eda0671a20a0069aa8d89d8117c0a (diff)
downloadnissy-core-fde8dfa9df8df1e3d42a9a8840836e33817cd498.tar.gz
nissy-core-fde8dfa9df8df1e3d42a9a8840836e33817cd498.zip
Added tests for selfsim
Diffstat (limited to 'test')
-rw-r--r--test/101_cocsep_selfsim/00_all.in2
-rw-r--r--test/101_cocsep_selfsim/00_all.out2
-rw-r--r--test/101_cocsep_selfsim/cocsep_selfsim_tests.c40
3 files changed, 44 insertions, 0 deletions
diff --git a/test/101_cocsep_selfsim/00_all.in b/test/101_cocsep_selfsim/00_all.in
new file mode 100644
index 0000000..07bda04
--- /dev/null
+++ b/test/101_cocsep_selfsim/00_all.in
@@ -0,0 +1,2 @@
1UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0
2UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0
diff --git a/test/101_cocsep_selfsim/00_all.out b/test/101_cocsep_selfsim/00_all.out
new file mode 100644
index 0000000..cc96363
--- /dev/null
+++ b/test/101_cocsep_selfsim/00_all.out
@@ -0,0 +1,2 @@
10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
20 1 2 3 24 25 26 27
diff --git a/test/101_cocsep_selfsim/cocsep_selfsim_tests.c b/test/101_cocsep_selfsim/cocsep_selfsim_tests.c
new file mode 100644
index 0000000..3fc7a60
--- /dev/null
+++ b/test/101_cocsep_selfsim/cocsep_selfsim_tests.c
@@ -0,0 +1,40 @@
1/*
2 * This test is tricky, we only have two cases for now: the solved cube
3 * and the cube that is one quarter-turn-move off (all such cases are
4 * equivalent due to symmetry). Adding more tests requires figuring out
5 * by hand which one is the first position in its class to be reached.
6 * Note that the .out file need a space before each newline.
7 */
8#include "../test.h"
9
10#define COCSEP_CLASSES 3393U
11
12size_t gendata_cocsep(void *, uint64_t *, cube_fast_t *);
13int64_t coord_fast_cocsep(cube_fast_t);
14
15int main(void) {
16 char str[STRLENMAX];
17 uint32_t buf[300000], data;
18 int64_t coord, coclass;
19 uint64_t selfsim[COCSEP_CLASSES], sim, t;
20 cube_fast_t fast, rep[COCSEP_CLASSES];
21
22 gendata_cocsep(buf, selfsim, rep);
23
24 /* All cases in the same test so we do not generate data many times */
25
26 while (fgets(str, STRLENMAX, stdin) != NULL) {
27 fast = cubetofast(readcube("H48", str));
28 coord = coord_fast_cocsep(fast);
29 data = buf[coord];
30 coclass = (data & (0xFFFU << 16U)) >> 16U;
31 sim = selfsim[coclass];
32 for (t = 0; t < 48 && sim; t++, sim >>= 1ULL) {
33 if (sim & 1ULL)
34 printf("%" PRId64 " ", t);
35 }
36 printf("\n");
37 }
38
39 return 0;
40}

Generated with cgit - Back to sebastiano.tronto.net