-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_tableros.c
59 lines (55 loc) · 1.85 KB
/
test_tableros.c
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
48
49
50
51
52
53
54
55
56
57
58
59
#include "conecta4_2022.h"
#include "celda.h"
int test(CELDA cuadricula[TAM_FILS][TAM_COLS], uint8_t f, uint8_t c, const int res)
{
int fail;
return res == C4_verificar_4_en_linea(cuadricula, f, c, celda_color(cuadricula[f][c]), &fail) && !fail;
}
// Comprueba que da falsos para cada posicion del tablero
void testAllPostions(CELDA cuadricula[TAM_FILS][TAM_COLS], const int res, uint8_t *fila_fail, uint8_t *col_fail, uint8_t *fail, uint8_t test_fail)
{
for (int i = 1; i <= NUM_FILAS; i++)
{
for (int j = 1; j <= NUM_COLUMNAS; j++)
{
if (!test(cuadricula, i, j, res))
{
*fila_fail = i;
*col_fail = j;
*fail = test_fail;
}
}
}
}
void testSomePositions(CELDA cuadricula[TAM_FILS][TAM_COLS], uint8_t *filas, uint8_t *columnas, const int res, uint8_t *fila_fail, uint8_t *col_fail, uint8_t *fail, uint8_t test_fail)
{
for (uint8_t *f = filas, *c = columnas; *f != 0; f++, c++)
{
if (!test(cuadricula, *f, *c, res))
{
*fila_fail = *f;
*col_fail = *c;
*fail = test_fail;
break;
}
}
}
void test_tableros()
{
#define TEST_TABLEROS
#include "tableros.h"
#undef TEST_TABLEROS
#undef TABLEROS_H
// Consultar en memoria:
// (si 0 todo OK)
static uint8_t fila_fail = 0, col_fail = 0, fail = 0;
testAllPostions(cuadricula_2, FALSE, &fila_fail, &col_fail, &fail, 1);
if (!fail)
testSomePositions(cuadricula_3, cuadricula_3_filas_5_true, cuadricula_3_columnas_5_true, TRUE, &fila_fail, &col_fail, &fail, 2);
if (!fail)
testSomePositions(cuadricula_3, cuadricula_3_filas_6_true, cuadricula_3_columnas_6_true, TRUE, &fila_fail, &col_fail, &fail, 3);
if (!fail)
testSomePositions(cuadricula_3, cuadricula_3_filas_false, cuadricula_3_columnas_false, FALSE, &fila_fail, &col_fail, &fail, 4);
if (!fail)
testAllPostions(cuadricula_4, TRUE, &fila_fail, &col_fail, &fail, 5);
}