#include #include "basic_testing.h" #include "../chess_paths.h" struct chessboard { unsigned int C; unsigned int R; }; int value_at(const struct chessboard * c, unsigned int column, unsigned int row) { row = c->R - row - 1; column += row; column *= column + 1; return column/2 + row; } unsigned int columns(const struct chessboard * c) { return c->C; } unsigned int rows(const struct chessboard * c) { return c->R; }; TEST(dec_pawn) { struct chessboard c = {.C = 10, .R = 10 }; struct piece_position p; p.piece = PAWN; p.column = 5; p.row = 2; assert_uint_eq(decreasing_path_len(&c, &p), 7); assert_uint_eq(p.column, 5); assert_uint_eq(p.row, 9); TEST_PASSED; } TEST(dec_king) { struct chessboard c = {.C = 10, .R = 10 }; struct piece_position p; p.piece = KING; p.column = 5; p.row = 2; assert_uint_eq(decreasing_path_len(&c, &p), 7); assert_uint_eq(p.column, 0); assert_uint_eq(p.row, 9); TEST_PASSED; } TEST(dec_queen) { struct chessboard c = {.C = 10, .R = 10 }; struct piece_position p; p.piece = QUEEN; p.column = 5; p.row = 2; assert_uint_eq(decreasing_path_len(&c, &p), 2); assert_uint_eq(p.column, 0); assert_uint_eq(p.row, 9); TEST_PASSED; } TEST(dec_knight) { struct chessboard c = {.C = 10, .R = 10 }; struct piece_position p; p.piece = KNIGHT; p.column = 5; p.row = 2; assert_uint_eq(decreasing_path_len(&c, &p), 4); assert_uint_eq(p.column, 0); assert_uint_eq(p.row, 9); TEST_PASSED; } TEST(dec_bishop) { struct chessboard c = {.C = 10, .R = 10 }; struct piece_position p; p.piece = BISHOP; p.column = 5; p.row = 2; assert_uint_eq(decreasing_path_len(&c, &p), 2); assert_uint_eq(p.column, 2); assert_uint_eq(p.row, 9); TEST_PASSED; } TEST(dec_rook) { struct chessboard c = {.C = 10, .R = 10 }; struct piece_position p; p.piece = ROOK; p.column = 5; p.row = 2; assert_uint_eq(decreasing_path_len(&c, &p), 2); assert_uint_eq(p.column, 0); assert_uint_eq(p.row, 9); TEST_PASSED; } int main() { RUN_TEST(dec_pawn); RUN_TEST(dec_king); RUN_TEST(dec_queen); RUN_TEST(dec_knight); RUN_TEST(dec_bishop); RUN_TEST(dec_rook); PRINT_TEST_RESULTS; assert(ALL_TESTS_PASSED); }