#ifdef TEST #include "unity.h" #include #include #include #include "Springer.h" #include "Schachbrett.h" #include "Spieler.h" void test_istzugerlaubt_Springer_LegalMove(void) { char **Brett = Schachbrett_erstellen(); // Viele Test um legale Züge zu prüfen TEST_ASSERT_TRUE(istzugerlaubt_Springer(Brett, 1, 0, 0, 2, PLAYER_WHITE)); TEST_ASSERT_TRUE(istzugerlaubt_Springer(Brett, 1, 0, 2, 2, PLAYER_WHITE)); TEST_ASSERT_TRUE(istzugerlaubt_Springer(Brett, 4, 3, 3, 5, PLAYER_WHITE)); TEST_ASSERT_TRUE(istzugerlaubt_Springer(Brett, 4, 3, 2, 2, PLAYER_WHITE)); TEST_ASSERT_TRUE(istzugerlaubt_Springer(Brett, 4, 3, 6, 2, PLAYER_BLACK)); TEST_ASSERT_TRUE(istzugerlaubt_Springer(Brett, 6, 7, 5, 5, PLAYER_BLACK)); TEST_ASSERT_TRUE(istzugerlaubt_Springer(Brett, 6, 7, 7, 5, PLAYER_BLACK)); TEST_ASSERT_TRUE(istzugerlaubt_Springer(Brett, 4, 3, 5, 5, PLAYER_BLACK)); Schachbrettspeicher_freigeben(Brett); } void test_istzugerlaubt_Springer_IllegalMove(void) { char **Brett = Schachbrett_erstellen(); // Landet auf eigener Figur TEST_ASSERT_FALSE(istzugerlaubt_Springer(Brett, 6, 7, 4, 6, PLAYER_BLACK)); TEST_ASSERT_FALSE(istzugerlaubt_Springer(Brett, 1, 7, 3, 6, PLAYER_BLACK)); TEST_ASSERT_FALSE(istzugerlaubt_Springer(Brett, 6, 0, 4, 1, PLAYER_WHITE)); TEST_ASSERT_FALSE(istzugerlaubt_Springer(Brett, 1, 0, 3, 1, PLAYER_WHITE)); // versucht sich geradeaus zu bewegen TEST_ASSERT_FALSE(istzugerlaubt_Springer(Brett, 1, 0, 1, 3, PLAYER_WHITE)); // Versucht Diagonal zu bewegen TEST_ASSERT_FALSE(istzugerlaubt_Springer(Brett, 7, 0, 6, 1, PLAYER_WHITE)); // Vom Brett springen TEST_ASSERT_FALSE(istzugerlaubt_Springer(Brett, 7, 0, 8, 2, PLAYER_WHITE)); Schachbrettspeicher_freigeben(Brett); } void test_bewegeSpringer(void) { char **Brett = Schachbrett_erstellen(); bool Ergebnis; // Scenario 1: Legaler Zug, weißer Springer von b1 zu c3 Ergebnis = bewegeSpringer(Brett, 1, 0, 2, 2, PLAYER_WHITE); TEST_ASSERT_TRUE(Ergebnis); TEST_ASSERT_EQUAL_CHAR('N', Brett[2][2]); TEST_ASSERT_EQUAL_CHAR(' ', Brett[0][1]); Schachbrettspeicher_freigeben(Brett); Brett = Schachbrett_erstellen(); // Scenario 2: Illegaler Zug , vom Brett Ergebnis = bewegeSpringer(Brett, 7, 6, 8, 8, PLAYER_WHITE); TEST_ASSERT_FALSE(Ergebnis); // Scenario 3: Legaler Zug, schwarzer Springer von g8 zu f6 Ergebnis = bewegeSpringer(Brett, 6, 7, 5, 5, PLAYER_BLACK); TEST_ASSERT_TRUE(Ergebnis); TEST_ASSERT_EQUAL_CHAR('n', Brett[5][5]); TEST_ASSERT_EQUAL_CHAR(' ', Brett[7][6]); Schachbrettspeicher_freigeben(Brett); Brett = Schachbrett_erstellen(); // Scenario 4: Illegaler Zug, schwarzer Springer bewegt sich auf andere schwarze Figur Brett[5][5] = 'n'; // ein anderer Springer als Hindernis Ergebnis = bewegeSpringer(Brett, 6, 7, 5, 5, PLAYER_BLACK); TEST_ASSERT_FALSE(Ergebnis); // Scenario 5: Legaler Zug zum einnehmen feindlicher Figur Brett[5][5] = 'P'; // Weißer Bauer auf F6 Ergebnis = bewegeSpringer(Brett, 6, 7, 5, 5, PLAYER_BLACK); TEST_ASSERT_TRUE(Ergebnis); TEST_ASSERT_EQUAL_CHAR('n', Brett[5][5]); Schachbrettspeicher_freigeben(Brett); } #endif // TEST