diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2023-09-20 21:48:04 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2023-09-20 21:48:04 +0200 |
| commit | 99fabe8592a4022313b1cb0581881ee1bc6b1c99 (patch) | |
| tree | 9f44681a5b54e39de85cf394dbbdd91c25fd97c4 | |
| parent | 7e702c3387d702374158c61ac6da4b3cb2452186 (diff) | |
| download | nissy-core-99fabe8592a4022313b1cb0581881ee1bc6b1c99.tar.gz nissy-core-99fabe8592a4022313b1cb0581881ee1bc6b1c99.zip | |
Added tests for compose
Diffstat (limited to '')
34 files changed, 100 insertions, 4 deletions
| @@ -4,7 +4,7 @@ Work in progress. | |||
| 4 | 4 | ||
| 5 | TODO: | 5 | TODO: |
| 6 | 6 | ||
| 7 | * transformations (internal only, not in cube.h) | 7 | * transformations |
| 8 | * coordinates: co, eo, epsep, cpsep_sym, cocpsep_sym, cphtr_sym, cocphtr_sym | 8 | * coordinates: co, eo, epsep, cpsep_sym, cocpsep_sym, cphtr_sym, cocphtr_sym |
| 9 | * pruning tables (1 bit per entry + fallback) | 9 | * pruning tables (1 bit per entry + fallback) |
| 10 | * solve.c | 10 | * solve.c |
| @@ -1,9 +1,18 @@ | |||
| 1 | typedef enum { | 1 | typedef enum { |
| 2 | U, U2, U3, D, D2, D3, | 2 | U = 0, U2, U3, D, D2, D3, |
| 3 | R, R2, R3, L, L2, L3, | 3 | R, R2, R3, L, L2, L3, |
| 4 | F, F2, F3, B, B2, B3 | 4 | F, F2, F3, B, B2, B3 |
| 5 | } move_t; | 5 | } move_t; |
| 6 | 6 | ||
| 7 | typedef enum { | ||
| 8 | UF_i = 0, UL_i, UB_i, UR_i, DF_i, DL_i, DB_i, DR_i, | ||
| 9 | UF_m, UL_m, UB_m, UR_m, DF_m, DL_m, DB_m, DR_m, | ||
| 10 | RU_i, RF_i, RD_i, RB_i, LU_i, LF_i, LD_i, LB_i, | ||
| 11 | RU_m, RF_m, RD_m, RB_m, LU_m, LF_m, LD_m, LB_m, | ||
| 12 | FU_i, FR_i, FD_i, FL_i, BU_i, BR_i, BD_i, BL_i, | ||
| 13 | FU_m, FR_m, FD_m, FL_m, BU_m, BR_m, BD_m, BL_m | ||
| 14 | } trans_t; | ||
| 15 | |||
| 7 | typedef struct { | 16 | typedef struct { |
| 8 | uint8_t c[8]; | 17 | uint8_t c[8]; |
| 9 | uint8_t e[12]; | 18 | uint8_t e[12]; |
| @@ -51,3 +60,5 @@ void writemoves(move_t *, int, char *); | |||
| 51 | 60 | ||
| 52 | cube_t move(cube_t, move_t); | 61 | cube_t move(cube_t, move_t); |
| 53 | cube_t inverse(cube_t); | 62 | cube_t inverse(cube_t); |
| 63 | cube_t compose(cube_t, cube_t); | ||
| 64 | cube_t transform(cube_t, trans_t); | ||
diff --git a/src/cube_array.c b/src/cube_array.c index 3445658..a051610 100644 --- a/src/cube_array.c +++ b/src/cube_array.c | |||
| @@ -155,7 +155,6 @@ static uint8_t readep(char *); | |||
| 155 | static uint8_t readmove(char); | 155 | static uint8_t readmove(char); |
| 156 | static uint8_t readmodifier(char); | 156 | static uint8_t readmodifier(char); |
| 157 | static int permsign(uint8_t *, int); | 157 | static int permsign(uint8_t *, int); |
| 158 | static cube_t compose(cube_t, cube_t); | ||
| 159 | 158 | ||
| 160 | static uint8_t | 159 | static uint8_t |
| 161 | readco(char *str) | 160 | readco(char *str) |
| @@ -710,3 +709,15 @@ inverse_inconsistent: | |||
| 710 | fprintf(stderr, "inverse error, inconsistent cube\n"); | 709 | fprintf(stderr, "inverse error, inconsistent cube\n"); |
| 711 | return errorcube; | 710 | return errorcube; |
| 712 | } | 711 | } |
| 712 | |||
| 713 | cube_t | ||
| 714 | compose(cube_t c1, cube_t c2) | ||
| 715 | { | ||
| 716 | return errorcube; | ||
| 717 | } | ||
| 718 | |||
| 719 | cube_t | ||
| 720 | transform(cube_t c, trans_t t) | ||
| 721 | { | ||
| 722 | return errorcube; | ||
| 723 | } | ||
diff --git a/test/04_compose/00_solved_solved.in b/test/04_compose/00_solved_solved.in new file mode 100644 index 0000000..4ccdb6e --- /dev/null +++ b/test/04_compose/00_solved_solved.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 | ||
| 2 | UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 | ||
diff --git a/test/04_compose/00_solved_solved.out b/test/04_compose/00_solved_solved.out new file mode 100644 index 0000000..dff224d --- /dev/null +++ b/test/04_compose/00_solved_solved.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/04_compose/01_solved_U.in b/test/04_compose/01_solved_U.in new file mode 100644 index 0000000..e0559dd --- /dev/null +++ b/test/04_compose/01_solved_U.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 | ||
| 2 | UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 | ||
diff --git a/test/04_compose/01_solved_U.out b/test/04_compose/01_solved_U.out new file mode 100644 index 0000000..b5b36ad --- /dev/null +++ b/test/04_compose/01_solved_U.out | |||
| @@ -0,0 +1 @@ | |||
| UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 | |||
diff --git a/test/04_compose/02_solved_scrambled.in b/test/04_compose/02_solved_scrambled.in new file mode 100644 index 0000000..ad36258 --- /dev/null +++ b/test/04_compose/02_solved_scrambled.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 | ||
| 2 | DR0 DB0 BL0 DF1 UB0 UR1 FR1 UF0 FL1 DL0 BR1 UL1 DBL2 DFL0 UBR1 DFR2 UFR0 DBR1 UBL0 UFL0 | ||
diff --git a/test/04_compose/02_solved_scrambled.out b/test/04_compose/02_solved_scrambled.out new file mode 100644 index 0000000..263213b --- /dev/null +++ b/test/04_compose/02_solved_scrambled.out | |||
| @@ -0,0 +1 @@ | |||
| DR0 DB0 BL0 DF1 UB0 UR1 FR1 UF0 FL1 DL0 BR1 UL1 DBL2 DFL0 UBR1 DFR2 UFR0 DBR1 UBL0 UFL0 | |||
diff --git a/test/04_compose/11_U_solved.in b/test/04_compose/11_U_solved.in new file mode 100644 index 0000000..5993795 --- /dev/null +++ b/test/04_compose/11_U_solved.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 | ||
| 2 | UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 | ||
diff --git a/test/04_compose/11_U_solved.out b/test/04_compose/11_U_solved.out new file mode 100644 index 0000000..b5b36ad --- /dev/null +++ b/test/04_compose/11_U_solved.out | |||
| @@ -0,0 +1 @@ | |||
| UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 | |||
diff --git a/test/04_compose/12_scrambled_solved.in b/test/04_compose/12_scrambled_solved.in new file mode 100644 index 0000000..3efd52c --- /dev/null +++ b/test/04_compose/12_scrambled_solved.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | DR0 DB0 BL0 DF1 UB0 UR1 FR1 UF0 FL1 DL0 BR1 UL1 DBL2 DFL0 UBR1 DFR2 UFR0 DBR1 UBL0 UFL0 | ||
| 2 | UF0 UB0 DB0 DF0 UR0 UL0 DL0 DR0 FR0 FL0 BL0 BR0 UFR0 UBL0 DFL0 DBR0 UFL0 UBR0 DFR0 DBL0 | ||
diff --git a/test/04_compose/12_scrambled_solved.out b/test/04_compose/12_scrambled_solved.out new file mode 100644 index 0000000..263213b --- /dev/null +++ b/test/04_compose/12_scrambled_solved.out | |||
| @@ -0,0 +1 @@ | |||
| DR0 DB0 BL0 DF1 UB0 UR1 FR1 UF0 FL1 DL0 BR1 UL1 DBL2 DFL0 UBR1 DFR2 UFR0 DBR1 UBL0 UFL0 | |||
diff --git a/test/04_compose/20_U_U.in b/test/04_compose/20_U_U.in new file mode 100644 index 0000000..2778e82 --- /dev/null +++ b/test/04_compose/20_U_U.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 | ||
| 2 | UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 | ||
diff --git a/test/04_compose/20_U_U.out b/test/04_compose/20_U_U.out new file mode 100644 index 0000000..316ad57 --- /dev/null +++ b/test/04_compose/20_U_U.out | |||
| @@ -0,0 +1 @@ | |||
| UB0 UF0 DB0 DF0 UL0 UR0 DL0 DR0 FR0 FL0 BL0 BR0 UBL0 UFR0 DFL0 DBR0 UBR0 UFL0 DFR0 DBL0 | |||
diff --git a/test/04_compose/21_U_Uinverse.in b/test/04_compose/21_U_Uinverse.in new file mode 100644 index 0000000..495220e --- /dev/null +++ b/test/04_compose/21_U_Uinverse.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 | ||
| 2 | UL0 UR0 DB0 DF0 UF0 UB0 DL0 DR0 FR0 FL0 BL0 BR0 UFL0 UBR0 DFL0 DBR0 UBL0 UFR0 DFR0 DBL0 | ||
diff --git a/test/04_compose/21_U_Uinverse.out b/test/04_compose/21_U_Uinverse.out new file mode 100644 index 0000000..dff224d --- /dev/null +++ b/test/04_compose/21_U_Uinverse.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/04_compose/22_F_Finverse.in b/test/04_compose/22_F_Finverse.in new file mode 100644 index 0000000..4a2f1e6 --- /dev/null +++ b/test/04_compose/22_F_Finverse.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 | ||
| 2 | FR1 UB0 DB0 FL1 UR0 UL0 DL0 DR0 DF1 UF1 BL0 BR0 DFR1 UBL0 UFL1 DBR0 UFR2 UBR0 DFL2 DBL0 | ||
diff --git a/test/04_compose/22_F_Finverse.out b/test/04_compose/22_F_Finverse.out new file mode 100644 index 0000000..dff224d --- /dev/null +++ b/test/04_compose/22_F_Finverse.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/04_compose/23_F2_F2.in b/test/04_compose/23_F2_F2.in new file mode 100644 index 0000000..5fd1081 --- /dev/null +++ b/test/04_compose/23_F2_F2.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | DF0 UB0 DB0 UF0 UR0 UL0 DL0 DR0 FL0 FR0 BL0 BR0 DFL0 UBL0 UFR0 DBR0 DFR0 UBR0 UFL0 DBL0 | ||
| 2 | DF0 UB0 DB0 UF0 UR0 UL0 DL0 DR0 FL0 FR0 BL0 BR0 DFL0 UBL0 UFR0 DBR0 DFR0 UBR0 UFL0 DBL0 | ||
diff --git a/test/04_compose/23_F2_F2.out b/test/04_compose/23_F2_F2.out new file mode 100644 index 0000000..dff224d --- /dev/null +++ b/test/04_compose/23_F2_F2.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/04_compose/24_U_F.in b/test/04_compose/24_U_F.in new file mode 100644 index 0000000..d353f95 --- /dev/null +++ b/test/04_compose/24_U_F.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | UR0 UL0 DB0 DF0 UB0 UF0 DL0 DR0 FR0 FL0 BL0 BR0 UBR0 UFL0 DFL0 DBR0 UFR0 UBL0 DFR0 DBL0 | ||
| 2 | FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 | ||
diff --git a/test/04_compose/24_U_F.out b/test/04_compose/24_U_F.out new file mode 100644 index 0000000..4fda397 --- /dev/null +++ b/test/04_compose/24_U_F.out | |||
| @@ -0,0 +1 @@ | |||
| FL1 UL0 DB0 FR1 UB0 UF0 DL0 DR0 UR1 DF1 BL0 BR0 UFR1 UFL0 DFR1 DBR0 DFL2 UBL0 UBR2 DBL0 | |||
diff --git a/test/04_compose/25_F_R.in b/test/04_compose/25_F_R.in new file mode 100644 index 0000000..2cb5455 --- /dev/null +++ b/test/04_compose/25_F_R.in | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | FL1 UB0 DB0 FR1 UR0 UL0 DL0 DR0 UF1 DF1 BL0 BR0 UFL1 UBL0 DFR1 DBR0 DFL2 UBR0 UFR2 DBL0 | ||
| 2 | UF0 UB0 DB0 DF0 FR0 UL0 DL0 BR0 DR0 FL0 BL0 UR0 DFR2 UBL0 DFL0 UBR2 UFL0 UFR1 DBR1 DBL0 | ||
diff --git a/test/04_compose/25_F_R.out b/test/04_compose/25_F_R.out new file mode 100644 index 0000000..2119f37 --- /dev/null +++ b/test/04_compose/25_F_R.out | |||
| @@ -0,0 +1 @@ | |||
| FL1 UB0 DB0 FR1 UF1 UL0 DL0 BR0 DR0 DF1 BL0 UR0 UFR1 UBL0 DFR1 UBR2 DFL2 UFL2 DBR1 DBL0 | |||
diff --git a/test/04_compose/30_scrambled_inverse.in b/test/04_compose/30_scrambled_inverse.in new file mode 100644 index 0000000..abf72e2 --- /dev/null +++ b/test/04_compose/30_scrambled_inverse.in | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | UL0 BL0 BR1 DL0 FR0 DF0 DB1 DR1 UB0 FL0 UF0 UR1 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2 | ||
| 2 | BL0 FR0 DL1 UL0 BR1 UF0 DF0 DR1 UR0 FL0 UB0 DB1 UBL2 DBL1 UFR0 DFL2 DFR2 DBR1 UBR0 UFL1 | ||
| 3 | |||
| 4 | // 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/04_compose/30_scrambled_inverse.out b/test/04_compose/30_scrambled_inverse.out new file mode 100644 index 0000000..dff224d --- /dev/null +++ b/test/04_compose/30_scrambled_inverse.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/04_compose/31_scrambled_scrambled.in b/test/04_compose/31_scrambled_scrambled.in new file mode 100644 index 0000000..7fe874c --- /dev/null +++ b/test/04_compose/31_scrambled_scrambled.in | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | UL0 BL0 BR1 DL0 FR0 DF0 DB1 DR1 UB0 FL0 UF0 UR1 DFL0 UFR1 DBR1 UBR2 DBL2 DFR0 UFL1 UBL2 | ||
| 2 | FL1 BR0 DB0 UR1 UF0 UB0 DL0 FR0 UL1 DF1 BL0 DR0 UBL1 DBR1 UFR2 DFR2 DFL2 UBR2 UFL2 DBL0 | ||
| 3 | // Scramble: U R D' L D' F L2 D L F B D2 B' L2 F U2 L2 D2 R2 L2 B' | ||
| 4 | // Followed by R' U' F | ||
diff --git a/test/04_compose/31_scrambled_scrambled.out b/test/04_compose/31_scrambled_scrambled.out new file mode 100644 index 0000000..8fb1c13 --- /dev/null +++ b/test/04_compose/31_scrambled_scrambled.out | |||
| @@ -0,0 +1 @@ | |||
| FL1 UR2 BR1 FR1 UL0 BL0 DB1 UB0 DF1 DL1 UF0 DR1 UFR2 UBR0 DFL2 UFL0 DBR0 DFR2 DBL1 UBL2 | |||
diff --git a/test/04_compose/compose_tests.c b/test/04_compose/compose_tests.c new file mode 100644 index 0000000..ae34f6d --- /dev/null +++ b/test/04_compose/compose_tests.c | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | #include <stdbool.h> | ||
| 2 | #include <stdint.h> | ||
| 3 | #include <stdio.h> | ||
| 4 | |||
| 5 | #include "../../src/cube.h" | ||
| 6 | |||
| 7 | #define STRLENMAX 10000 | ||
| 8 | |||
| 9 | int main() { | ||
| 10 | char str[STRLENMAX]; | ||
| 11 | cube_t c1, c2, c3; | ||
| 12 | |||
| 13 | fgets(str, STRLENMAX, stdin); | ||
| 14 | c1 = readcube(str); | ||
| 15 | fgets(str, STRLENMAX, stdin); | ||
| 16 | c2 = readcube(str); | ||
| 17 | |||
| 18 | c3 = compose(c1, c2); | ||
| 19 | |||
| 20 | if (iserror(c3)) { | ||
| 21 | printf("Error composing cubes\n"); | ||
| 22 | } else if (!isconsistent(c3)) { | ||
| 23 | printf("Composed cube is inconsistent\n"); | ||
| 24 | } else { | ||
| 25 | writecube(c3, str); | ||
| 26 | printf("%s\n", str); | ||
| 27 | } | ||
| 28 | |||
| 29 | return 0; | ||
| 30 | } | ||
diff --git a/test/last.err b/test/last.err new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/last.err | |||
diff --git a/test/last.out b/test/last.out new file mode 100644 index 0000000..16375f4 --- /dev/null +++ b/test/last.out | |||
| @@ -0,0 +1 @@ | |||
| Error composing cubes | |||
diff --git a/test/run b/test/run new file mode 100755 index 0000000..04c5bca --- /dev/null +++ b/test/run | |||
| Binary files differ | |||
diff --git a/test/test.sh b/test/test.sh index 75be809..fb932af 100755 --- a/test/test.sh +++ b/test/test.sh | |||
| @@ -5,7 +5,7 @@ CC="cc -DDEBUG -std=c99 -pthread -pedantic -Wall -Wextra \ | |||
| 5 | if [ $(uname) != "OpenBSD" ]; then | 5 | if [ $(uname) != "OpenBSD" ]; then |
| 6 | CC="$CC -fsanitize=address -fsanitize=undefined" | 6 | CC="$CC -fsanitize=address -fsanitize=undefined" |
| 7 | fi | 7 | fi |
| 8 | SRC="src/array_cube.c" | 8 | SRC="src/cube_array.c" |
| 9 | TESTBIN="test/run" | 9 | TESTBIN="test/run" |
| 10 | TESTOUT="test/last.out" | 10 | TESTOUT="test/last.out" |
| 11 | TESTERR="test/last.err" | 11 | TESTERR="test/last.err" |
