Add diagonal win checks

Adds diagonal win checking, and tests to go along with them
This commit is contained in:
Julia Lange 2024-07-16 01:46:42 -07:00
parent b3b369a076
commit 6ab989174b
Signed by: Julia
SSH key fingerprint: SHA256:5DJcfxa5/fKCYn57dcabJa2vN2e6eT0pBerYi5SUbto
2 changed files with 161 additions and 0 deletions

View file

@ -49,12 +49,109 @@ void test_middle_horizontal_win(void)
free_board(board);
}
void test_ul_diagonal_win(void)
{
struct Board *board = make_board(4,4);
/* X 9
* OX 87
* OOX 465
* OXOX 0123
*/
int positions[] = {0, 1, 2, 3, 0, 2, 1, 1, 0};
drop_series(board, positions, 9);
int output = drop_tile(board, 0);
assert(output == 1 && "Upper Left Diagonal Win");
free_board(board);
}
void test_ur_diagonal_win(void)
{
struct Board *board = make_board(4,4);
/* X 9
* XO 78
* XOO 564
* XOXO 3210
*/
int positions[] = {3, 2, 1, 0, 3, 1, 2, 2, 3};
drop_series(board, positions, 9);
int output = drop_tile(board, 3);
assert(output == 1 && "Upper Right Diagonal Win");
free_board(board);
}
void test_lr_diagonal_win(void)
{
struct Board *board = make_board(4,4);
/* X 7
* OX 69
* OOX 485
* OXOX 0123
*/
int positions[] = {0, 1, 2, 3, 0, 2, 0, 0, 1};
drop_series(board, positions, 9);
int output = drop_tile(board, 1);
assert(output == 1 && "Left-Right Middle Diagonal Win");
free_board(board);
}
void test_rl_diagonal_win(void)
{
struct Board *board = make_board(4,4);
/* X 7
* XO 96
* XOO 584
* XOXO 3210
*/
int positions[] = {3, 2, 1, 0, 3, 1, 3, 3, 2};
drop_series(board, positions, 9);
int output = drop_tile(board, 2);
assert(output == 1 && "Right-Left Middle Diagonal Win");
free_board(board);
}
void test_br_diagonal_win(void)
{
struct Board *board = make_board(4,4);
/* XO 38
* OXO 27A
* XXX 159
* OOOX 046B
*/
int positions[] = {0, 0, 0, 0, 1, 1, 2, 1, 1, 2, 2};
drop_series(board, positions, 11);
int output = drop_tile(board, 3);
assert(output == 1 && "Bottom-Right Diagonal Win");
free_board(board);
}
void test_bl_diagonal_win(void)
{
struct Board *board = make_board(4,4);
/* OX 83
* OXO A72
* XOO 951
* XOXO B640
*/
int positions[] = {3, 3, 3, 3, 2, 2, 3, 2, 2, 1, 1};
drop_series(board, positions, 11);
int output = drop_tile(board, 0);
assert(output == 1 && "Bottom-left Diagonal Win");
free_board(board);
}
int main(int argc, char *argv[])
{
test_vertical_win();
test_left_horizontal_win();
test_right_horizontal_win();
test_middle_horizontal_win();
test_ul_diagonal_win();
test_bl_diagonal_win();
test_rl_diagonal_win();
test_ur_diagonal_win();
test_br_diagonal_win();
test_lr_diagonal_win();
return EXIT_SUCCESS;
}