|
|
@ -151,4 +151,92 @@ void test_SchachDurchSpringer(void) { |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
} |
|
|
|
void test_SchachDurchLaeufer(void) { |
|
|
|
char** Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Weißer König wird von schwarzen Läufer bedroht |
|
|
|
Brett[4][4] = 'K'; |
|
|
|
Brett[2][2] = 'b'; |
|
|
|
TEST_ASSERT_TRUE(istKoenigImSchach(Brett, PLAYER_WHITE)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Schwarzer König wird von weißen Läufer bedroht |
|
|
|
Brett[3][3] = 'k'; |
|
|
|
Brett[6][0] = 'B'; |
|
|
|
TEST_ASSERT_TRUE(istKoenigImSchach(Brett, PLAYER_BLACK)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Weißer König wird nicht bedroht |
|
|
|
Brett[4][4] = 'K'; |
|
|
|
Brett[6][7] = 'b'; |
|
|
|
TEST_ASSERT_FALSE(istKoenigImSchach(Brett, PLAYER_WHITE)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Schwarzer König wird von mehreren Läufer bedroht |
|
|
|
Brett[4][4] = 'k'; |
|
|
|
Brett[6][6] = 'B'; |
|
|
|
Brett[0][0] = 'B'; |
|
|
|
TEST_ASSERT_TRUE(istKoenigImSchach(Brett, PLAYER_BLACK)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Schwarzer könig nicht in gefahr weil Läufer blockiert wird |
|
|
|
Brett[0][0] = 'k'; |
|
|
|
Brett[2][2] = 'P'; |
|
|
|
Brett[4][4] = 'B'; |
|
|
|
TEST_ASSERT_FALSE(istKoenigImSchach(Brett, PLAYER_BLACK)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
} |
|
|
|
void test_SchachDurchDame(void) { |
|
|
|
char** Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Weißer könig wird von schwarzer Dame bedroht (Horizontal) |
|
|
|
Brett[4][4] = 'K'; |
|
|
|
Brett[4][7] = 'q'; |
|
|
|
TEST_ASSERT_TRUE(istKoenigImSchach(Brett, PLAYER_WHITE)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Schwarzer könig wird von weißer Dame bedroht (Vertikal) |
|
|
|
Brett[3][3] = 'k'; |
|
|
|
Brett[0][3] = 'Q'; |
|
|
|
TEST_ASSERT_TRUE(istKoenigImSchach(Brett, PLAYER_BLACK)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Weißer könig wird nicht von schwarzer Dame bedroht aufgrund blockierender Figur |
|
|
|
Brett[4][4] = 'K'; |
|
|
|
Brett[4][2] = 'p'; |
|
|
|
Brett[4][0] = 'q'; |
|
|
|
TEST_ASSERT_FALSE(istKoenigImSchach(Brett, PLAYER_WHITE)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Schwarzer könig wird von weißer Dame bedroht (Diagonal) |
|
|
|
Brett[0][0] = 'k'; |
|
|
|
Brett[7][7] = 'Q'; |
|
|
|
TEST_ASSERT_TRUE(istKoenigImSchach(Brett, PLAYER_BLACK)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
Brett = ErstelleTestBrett(); |
|
|
|
|
|
|
|
// Schwarzer könig wird nicht von weißer Dame bedroht aufgrund blockierender Figur |
|
|
|
Brett[7][7] = 'k'; |
|
|
|
Brett[5][5] = 'P'; |
|
|
|
Brett[3][3] = 'Q'; |
|
|
|
TEST_ASSERT_FALSE(istKoenigImSchach(Brett, PLAYER_BLACK)); |
|
|
|
|
|
|
|
freeTestBrett(Brett); |
|
|
|
} |
|
|
|
#endif // TEST |