This repository has been archived on 2021-10-31. You can view files and clone it, but cannot push or open issues or pull requests.
sys_prog/chess_paths/tests/test4.c

106 lines
2.3 KiB
C

#include <assert.h>
#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) {
return column + row * c->C;
}
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), 0);
assert_uint_eq(p.column, 5);
assert_uint_eq(p.row, 2);
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), 5);
assert_uint_eq(p.column, 0);
assert_uint_eq(p.row, 0);
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, 0);
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), 1);
assert_uint_eq(p.column, 4);
assert_uint_eq(p.row, 0);
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), 1);
assert_uint_eq(p.column, 3);
assert_uint_eq(p.row, 0);
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, 0);
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);
}