From 1809d7b212128fcdcb481002a17db5dc97a15e03 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Fri, 17 May 2024 17:42:43 +0200 Subject: Added inverse eo and copy_{edges,corners} --- test/075_set_eo/00_solved_0.in | 2 ++ test/075_set_eo/00_solved_0.out | 1 + test/075_set_eo/01_solved_1.in | 2 ++ test/075_set_eo/01_solved_1.out | 1 + test/075_set_eo/02_solved_other.in | 2 ++ test/075_set_eo/02_solved_other.out | 1 + test/075_set_eo/03_solved_firstlast.in | 2 ++ test/075_set_eo/03_solved_firstlast.out | 1 + test/075_set_eo/10_scrambled_0.in | 4 +++ test/075_set_eo/10_scrambled_0.out | 1 + test/075_set_eo/11_scrambled_1.in | 4 +++ test/075_set_eo/11_scrambled_1.out | 1 + test/075_set_eo/set_eo_tests.c | 38 +++++++++++++++++++++++++ test/076_copy_corners/00_solved_scrambled.in | 2 ++ test/076_copy_corners/00_solved_scrambled.out | 1 + test/076_copy_corners/copy_corners_tests.c | 33 +++++++++++++++++++++ test/077_copy_edges/00_solved_scrambled.in | 2 ++ test/077_copy_edges/00_solved_scrambled.out | 1 + test/077_copy_edges/copy_edges_tests.c | 33 +++++++++++++++++++++ test/test | 41 +++++++++++++++++++++++++++ test/test.h | 1 + 21 files changed, 174 insertions(+) create mode 100644 test/075_set_eo/00_solved_0.in create mode 100644 test/075_set_eo/00_solved_0.out create mode 100644 test/075_set_eo/01_solved_1.in create mode 100644 test/075_set_eo/01_solved_1.out create mode 100644 test/075_set_eo/02_solved_other.in create mode 100644 test/075_set_eo/02_solved_other.out create mode 100644 test/075_set_eo/03_solved_firstlast.in create mode 100644 test/075_set_eo/03_solved_firstlast.out create mode 100644 test/075_set_eo/10_scrambled_0.in create mode 100644 test/075_set_eo/10_scrambled_0.out create mode 100644 test/075_set_eo/11_scrambled_1.in create mode 100644 test/075_set_eo/11_scrambled_1.out create mode 100644 test/075_set_eo/set_eo_tests.c create mode 100644 test/076_copy_corners/00_solved_scrambled.in create mode 100644 test/076_copy_corners/00_solved_scrambled.out create mode 100644 test/076_copy_corners/copy_corners_tests.c create mode 100644 test/077_copy_edges/00_solved_scrambled.in create mode 100644 test/077_copy_edges/00_solved_scrambled.out create mode 100644 test/077_copy_edges/copy_edges_tests.c create mode 100755 test/test (limited to 'test') diff --git a/test/075_set_eo/00_solved_0.in b/test/075_set_eo/00_solved_0.in new file mode 100644 index 0000000..55bb6bf --- /dev/null +++ b/test/075_set_eo/00_solved_0.in @@ -0,0 +1,2 @@ +UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 +0 diff --git a/test/075_set_eo/00_solved_0.out b/test/075_set_eo/00_solved_0.out new file mode 100644 index 0000000..dff224d --- /dev/null +++ b/test/075_set_eo/00_solved_0.out @@ -0,0 +1 @@ +UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 diff --git a/test/075_set_eo/01_solved_1.in b/test/075_set_eo/01_solved_1.in new file mode 100644 index 0000000..edd864e --- /dev/null +++ b/test/075_set_eo/01_solved_1.in @@ -0,0 +1,2 @@ +UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 +2047 diff --git a/test/075_set_eo/01_solved_1.out b/test/075_set_eo/01_solved_1.out new file mode 100644 index 0000000..ec7594a --- /dev/null +++ b/test/075_set_eo/01_solved_1.out @@ -0,0 +1 @@ +UF1 UB1 DB1 DF1 UR1 UL1 DL1 DR1 FR1 FL1 BL1 BR1 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 diff --git a/test/075_set_eo/02_solved_other.in b/test/075_set_eo/02_solved_other.in new file mode 100644 index 0000000..17e9b02 --- /dev/null +++ b/test/075_set_eo/02_solved_other.in @@ -0,0 +1,2 @@ +UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 +20 diff --git a/test/075_set_eo/02_solved_other.out b/test/075_set_eo/02_solved_other.out new file mode 100644 index 0000000..df73ef8 --- /dev/null +++ b/test/075_set_eo/02_solved_other.out @@ -0,0 +1 @@ +UF0 UB0 DB0 DF1 UR0 UL1 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 diff --git a/test/075_set_eo/03_solved_firstlast.in b/test/075_set_eo/03_solved_firstlast.in new file mode 100644 index 0000000..a16a192 --- /dev/null +++ b/test/075_set_eo/03_solved_firstlast.in @@ -0,0 +1,2 @@ +UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 +1024 diff --git a/test/075_set_eo/03_solved_firstlast.out b/test/075_set_eo/03_solved_firstlast.out new file mode 100644 index 0000000..8679be3 --- /dev/null +++ b/test/075_set_eo/03_solved_firstlast.out @@ -0,0 +1 @@ +UF1 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR1 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 diff --git a/test/075_set_eo/10_scrambled_0.in b/test/075_set_eo/10_scrambled_0.in new file mode 100644 index 0000000..55dccca --- /dev/null +++ b/test/075_set_eo/10_scrambled_0.in @@ -0,0 +1,4 @@ +UL0 BL0 BR1 DL0 FR0 DF0 DB1 DR1 UB0 FL0 UF0 UR1 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2 +0 + +// Scramble: U R D' L D' F L2 D L F B D2 B' L2 F U2 L2 D2 R2 L2 B' diff --git a/test/075_set_eo/10_scrambled_0.out b/test/075_set_eo/10_scrambled_0.out new file mode 100644 index 0000000..0eabd6e --- /dev/null +++ b/test/075_set_eo/10_scrambled_0.out @@ -0,0 +1 @@ +UL0 BL0 BR0 DL0 FR0 DF0 DB0 DR0 UB0 FL0 UF0 UR0 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2 diff --git a/test/075_set_eo/11_scrambled_1.in b/test/075_set_eo/11_scrambled_1.in new file mode 100644 index 0000000..0037a04 --- /dev/null +++ b/test/075_set_eo/11_scrambled_1.in @@ -0,0 +1,4 @@ +UL0 BL0 BR1 DL0 FR0 DF0 DB1 DR1 UB0 FL0 UF0 UR1 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2 +2047 + +// Scramble: U R D' L D' F L2 D L F B D2 B' L2 F U2 L2 D2 R2 L2 B' diff --git a/test/075_set_eo/11_scrambled_1.out b/test/075_set_eo/11_scrambled_1.out new file mode 100644 index 0000000..843df0d --- /dev/null +++ b/test/075_set_eo/11_scrambled_1.out @@ -0,0 +1 @@ +UL1 BL1 BR1 DL1 FR1 DF1 DB1 DR1 UB1 FL1 UF1 UR1 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2 diff --git a/test/075_set_eo/set_eo_tests.c b/test/075_set_eo/set_eo_tests.c new file mode 100644 index 0000000..ef7215a --- /dev/null +++ b/test/075_set_eo/set_eo_tests.c @@ -0,0 +1,38 @@ +#include "../test.h" + +int64_t coord_fast_eo(cube_fast_t); +void set_eo_fast(cube_fast_t *, int64_t); +cube_fast_t cubetofast(cube_t); +cube_t fasttocube(cube_fast_t); + +int main(void) { + char str[STRLENMAX]; + cube_t cube; + cube_fast_t fast; + int64_t eo; + + fgets(str, STRLENMAX, stdin); + cube = readcube("H48", str); + fast = cubetofast(cube); + fgets(str, STRLENMAX, stdin); + eo = atoi(str); + + set_eo_fast(&fast, eo); + + cube = fasttocube(fast); + if (iserror(cube)) { + printf("Error setting EO\n"); + } else if (!isconsistent(cube)) { + fprintf(stderr, "edges: "); + for (int i = 0; i < 12; i++) fprintf(stderr, "%d ", cube.edge[i]); + fprintf(stderr, "\n"); + for (int i = 0; i < 8; i++) fprintf(stderr, "%d ", cube.corner[i]); + fprintf(stderr, "\n"); + printf("Setting EO resulted in inconsistent cube\n"); + } else { + writecube("H48", cube, str); + printf("%s\n", str); + } + + return 0; +} diff --git a/test/076_copy_corners/00_solved_scrambled.in b/test/076_copy_corners/00_solved_scrambled.in new file mode 100644 index 0000000..2ff0e6a --- /dev/null +++ b/test/076_copy_corners/00_solved_scrambled.in @@ -0,0 +1,2 @@ +UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 +UL0 BL0 BR1 DL0 FR0 DF0 DB1 DR1 UB0 FL0 UF0 UR1 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2 diff --git a/test/076_copy_corners/00_solved_scrambled.out b/test/076_copy_corners/00_solved_scrambled.out new file mode 100644 index 0000000..9c53bcc --- /dev/null +++ b/test/076_copy_corners/00_solved_scrambled.out @@ -0,0 +1 @@ +UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2 diff --git a/test/076_copy_corners/copy_corners_tests.c b/test/076_copy_corners/copy_corners_tests.c new file mode 100644 index 0000000..fecf14a --- /dev/null +++ b/test/076_copy_corners/copy_corners_tests.c @@ -0,0 +1,33 @@ +#include "../test.h" + +void copy_corners_fast(cube_fast_t *, cube_fast_t); +cube_fast_t cubetofast(cube_t); +cube_t fasttocube(cube_fast_t); + +int main(void) { + char str[STRLENMAX]; + cube_t c1, c2; + cube_fast_t f1, f2; + + fgets(str, STRLENMAX, stdin); + c1 = readcube("H48", str); + f1 = cubetofast(c1); + + fgets(str, STRLENMAX, stdin); + c2 = readcube("H48", str); + f2 = cubetofast(c2); + + copy_corners_fast(&f1, f2); + + c1 = fasttocube(f1); + if (iserror(c1)) { + printf("Error setting EO\n"); + } else if (!isconsistent(c1)) { + printf("Setting EO resulted in inconsistent cube\n"); + } else { + writecube("H48", c1, str); + printf("%s\n", str); + } + + return 0; +} diff --git a/test/077_copy_edges/00_solved_scrambled.in b/test/077_copy_edges/00_solved_scrambled.in new file mode 100644 index 0000000..2ff0e6a --- /dev/null +++ b/test/077_copy_edges/00_solved_scrambled.in @@ -0,0 +1,2 @@ +UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 +UL0 BL0 BR1 DL0 FR0 DF0 DB1 DR1 UB0 FL0 UF0 UR1 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2 diff --git a/test/077_copy_edges/00_solved_scrambled.out b/test/077_copy_edges/00_solved_scrambled.out new file mode 100644 index 0000000..3af84f4 --- /dev/null +++ b/test/077_copy_edges/00_solved_scrambled.out @@ -0,0 +1 @@ +UL0 BL0 BR1 DL0 FR0 DF0 DB1 DR1 UB0 FL0 UF0 UR1 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 diff --git a/test/077_copy_edges/copy_edges_tests.c b/test/077_copy_edges/copy_edges_tests.c new file mode 100644 index 0000000..c3e70a3 --- /dev/null +++ b/test/077_copy_edges/copy_edges_tests.c @@ -0,0 +1,33 @@ +#include "../test.h" + +void copy_edges_fast(cube_fast_t *, cube_fast_t); +cube_fast_t cubetofast(cube_t); +cube_t fasttocube(cube_fast_t); + +int main(void) { + char str[STRLENMAX]; + cube_t c1, c2; + cube_fast_t f1, f2; + + fgets(str, STRLENMAX, stdin); + c1 = readcube("H48", str); + f1 = cubetofast(c1); + + fgets(str, STRLENMAX, stdin); + c2 = readcube("H48", str); + f2 = cubetofast(c2); + + copy_edges_fast(&f1, f2); + + c1 = fasttocube(f1); + if (iserror(c1)) { + printf("Error setting EO\n"); + } else if (!isconsistent(c1)) { + printf("Setting EO resulted in inconsistent cube\n"); + } else { + writecube("H48", c1, str); + printf("%s\n", str); + } + + return 0; +} diff --git a/test/test b/test/test new file mode 100755 index 0000000..3adee3a --- /dev/null +++ b/test/test @@ -0,0 +1,41 @@ +#!/bin/sh + +detectsan() { cc -fsanitize=$1 -dM -E -x c - $TESTOUT 2> $TESTERR + if diff $cout $TESTOUT; then + printf "OK\n" + else + printf "Test failed! stderr:\n" + cat $TESTERR + exit 1 + fi + done +done + +echo "All tests passed!" +rm -rf $TESTBIN $TESTOUT $TESTERR $CUBEOBJ diff --git a/test/test.h b/test/test.h index 3cbfd10..2086283 100644 --- a/test/test.h +++ b/test/test.h @@ -21,6 +21,7 @@ typedef cube_t cube_fast_t; /* Basic functions used in most tests */ cube_t solvedcube(void); bool iserror(cube_t); +bool isconsistent(cube_t); bool issolvable(cube_t); bool issolved(cube_t); cube_t readcube(char *, char *); -- cgit v1.3