connect4/test_connect4.c
Julia Lange b3b369a076
Add Horizontal and Vertical win checking
Adds horizontal and vertical win checking, as well as tests for such
features.

Adds valgrind to the flake.nix

Adds test_connect4 option to Makefile
2024-07-16 01:43:16 -07:00

60 lines
1.4 KiB
C

#include "connect4.h"
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
void drop_series(struct Board *board, int *positions, size_t psize) {
for(int i = 0; i < psize; i++) {
drop_tile(board, positions[i]);
}
}
void test_vertical_win(void)
{
struct Board *board = make_board(4,4);
int positions[] = {0, 3, 0, 3, 0, 3};
drop_series(board, positions, 6);
int output = drop_tile(board, 0);
assert(output == 1 && "Vertical Win");
free_board(board);
}
void test_left_horizontal_win(void)
{
struct Board *board = make_board(4,4);
int positions[] = {0, 0, 1, 1, 2, 2};
drop_series(board, positions, 6);
int output = drop_tile(board, 3);
assert(output == 1 && "Left Horizontal Win");
free_board(board);
}
void test_right_horizontal_win(void)
{
struct Board *board = make_board(4,4);
int positions[] = {3, 3, 2, 2, 1, 1};
drop_series(board, positions, 6);
int output = drop_tile(board, 0);
assert(output == 1 && "Right Horizontal Win");
free_board(board);
}
void test_middle_horizontal_win(void)
{
struct Board *board = make_board(4,4);
int positions[] = {3, 3, 2, 2, 0, 0};
drop_series(board, positions, 6);
int output = drop_tile(board, 1);
assert(output == 1 && "Middle Horizontal 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();
return EXIT_SUCCESS;
}