You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.3 KiB

  1. #ifdef TEST
  2. #include "unity.h"
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <stdbool.h>
  6. #include "Spieler.h"
  7. #include "Schachbrett.h"
  8. #include "Koenig.h"
  9. void test_istzugerlaubt_Koenig_LegalMoves(void) {
  10. char **Brett = Schachbrett_erstellen();
  11. Player player = PLAYER_WHITE;
  12. //Vorbereitung für Test
  13. Brett[1][4] = ' ';
  14. Brett[2][4] = 'p';
  15. // Test bewegung
  16. TEST_ASSERT_TRUE(istzugerlaubt_Koenig(Brett, 4, 0, 4, 1, player)); // e1 zu e2
  17. TEST_ASSERT_TRUE(istzugerlaubt_Koenig(Brett, 4, 1, 4, 2, player)); // e2 zu e3 (Einnehmen von Figur)
  18. Schachbrettspeicher_freigeben(Brett);
  19. Brett = Schachbrett_erstellen();
  20. player = PLAYER_BLACK;
  21. //Vorbereitung für Test
  22. Brett[6][4] = ' ';
  23. Brett[5][4] = 'P';
  24. // Test bewegung
  25. TEST_ASSERT_TRUE(istzugerlaubt_Koenig(Brett, 4, 7, 4, 6, player)); // e8 zu e7
  26. TEST_ASSERT_TRUE(istzugerlaubt_Koenig(Brett, 4, 6, 4, 5, player)); // e7 zu e6 (Einnehmen von Figur)
  27. Schachbrettspeicher_freigeben(Brett);
  28. }
  29. void test_istzugerlaubt_Koenig_IllegalMoves(void) {
  30. char **Brett = Schachbrett_erstellen();
  31. Player player = PLAYER_WHITE;
  32. // Illegaler zug: König versucht sich 2 Felder zu bewegen
  33. TEST_ASSERT_FALSE(istzugerlaubt_Koenig(Brett, 4, 0, 4, 2, player));
  34. // Illegaler zug: König versucht sich auf besetztes Feld zu bewegen
  35. TEST_ASSERT_FALSE(istzugerlaubt_Koenig(Brett, 4, 0, 3, 1, player));
  36. Schachbrettspeicher_freigeben(Brett);
  37. }
  38. void test_Koenigbewegung_ValidMove(void) {
  39. char** Brett = Schachbrett_erstellen();
  40. Brett[4][4] = 'K';
  41. Player player = PLAYER_WHITE;
  42. bewegeKoenig(Brett, 4, 4, 5, 4, player); // Bewege König von e5 zu e6
  43. TEST_ASSERT_EQUAL('K', Brett[4][5]); // Schauen ob der König an der neuen stelle ist
  44. TEST_ASSERT_EQUAL(' ', Brett[4][4]); // Schauen ob die alte stelle leer ist
  45. Schachbrettspeicher_freigeben(Brett);
  46. }
  47. void test_Koenigbewegung_InvalidMove(void) {
  48. char** Brett = Schachbrett_erstellen();
  49. Brett[4][4] = 'K';
  50. Player player = PLAYER_WHITE;
  51. bewegeKoenig(Brett, 4, 4, 6, 6, player); // Versucht illegalen Zug zu machen
  52. TEST_ASSERT_EQUAL('K', Brett[4][4]); // Schauen ob der König an der alten stelle ist
  53. TEST_ASSERT_EQUAL(' ', Brett[4][6]); // Schauen ob die Zielstelle leer ist
  54. Schachbrettspeicher_freigeben(Brett);
  55. }
  56. #endif // TEST