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.

145 lines
5.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 "Koenig.h"
  8. char** ErstelleTestBrett() {
  9. char** Brett = malloc(8 * sizeof(char*));
  10. for (int i = 0; i < 8; i++) {
  11. Brett[i] = malloc(8 * sizeof(char));
  12. for (int j = 0; j < 8; j++) {
  13. Brett[i][j] = ' '; //Erstelle komplett leeres Brett
  14. }
  15. }
  16. return Brett;
  17. }
  18. void freeTestBrett(char** Brett) {
  19. for (int i = 0; i < 8; i++) {
  20. free(Brett[i]);
  21. }
  22. free(Brett);
  23. }
  24. void test_GreiftBauerAn(void) {
  25. char** Brett = ErstelleTestBrett();
  26. // Plaziert weißen Bauer auf d5 (3,4) und testet 'angriff' auf c6 (2,5) und e6 (4,5)
  27. Brett[4][3] = 'P';
  28. Player player = PLAYER_BLACK;
  29. TEST_ASSERT_TRUE(GreiftBauerAn(Brett, 2, 5, player));
  30. TEST_ASSERT_TRUE(GreiftBauerAn(Brett, 4, 5, player));
  31. // Plaziert schwarzen Bauer auf e4 (4,3) und testet 'angriff' auf d3 (3,2) und f3 (5,2)
  32. Brett[3][4] = 'p';
  33. player = PLAYER_WHITE;
  34. TEST_ASSERT_TRUE(GreiftBauerAn(Brett, 3, 2, player));
  35. TEST_ASSERT_TRUE(GreiftBauerAn(Brett, 5, 2, player));
  36. // Test ein Feld ohne Bedrohung
  37. TEST_ASSERT_FALSE(GreiftBauerAn(Brett, 0, 0, player));
  38. freeTestBrett(Brett);
  39. }
  40. void test_GreiftTurmAn(void) {
  41. char** Brett = ErstelleTestBrett();
  42. // Plaziert weißen Turm auf d4 (3,3) und testet für Angriffe
  43. Brett[3][3] = 'R';
  44. Player player = PLAYER_BLACK;
  45. TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 3, 0, player)); // Checkt vertikalen Angriff auf d1
  46. TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 3, 7, player)); // Checkt vertikalen Angriff auf d8
  47. TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 0, 3, player)); // Checkt horizontalen Angriff auf a4
  48. TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 7, 3, player)); // Checkt horizontalen Angriff auf h4
  49. // Plaziert schwarzen Turm auf e5 (4,4) und Tauscht Spieler zu weiß
  50. Brett[3][3] = ' '; // Alten turm wegmachen
  51. Brett[4][4] = 'r';
  52. player = PLAYER_WHITE;
  53. TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 4, 0, player)); // Checkt vertikalen Angriff auf e1
  54. TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 4, 7, player)); // Checkt vertikalen Angriff auf e8
  55. TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 0, 4, player)); // Checkt horizontalen Angriff auf a5
  56. TEST_ASSERT_TRUE(GreiftTurmAn(Brett, 7, 4, player)); // Checkt horizontalen Angriff auf h5
  57. // Checkt sicheres Feld
  58. TEST_ASSERT_FALSE(GreiftTurmAn(Brett, 0, 0, player));
  59. freeTestBrett(Brett);
  60. }
  61. void test_GreiftSpringerAn(void) {
  62. char** Brett = ErstelleTestBrett();
  63. // Plaziert ein schwarzen Springer (3,4) und testet 'Angriff' auf e3 (4,2)
  64. Brett[4][3] = 'n';
  65. Player player = PLAYER_WHITE;
  66. TEST_ASSERT_TRUE(GreiftSpringerAn(Brett, 4, 2, player));
  67. // Plaziert ein weißen Springer (5,2) und testet 'Angriff' auf e5 (4,4)
  68. Brett[2][5] = 'N';
  69. player = PLAYER_BLACK;
  70. TEST_ASSERT_TRUE(GreiftSpringerAn(Brett, 4, 4, player));
  71. // Testet Feld ohne Bedrohung
  72. TEST_ASSERT_FALSE(GreiftSpringerAn(Brett, 0, 0, player));
  73. freeTestBrett(Brett);
  74. }
  75. void test_GreiftLaeuferAn(void) {
  76. char** Brett = ErstelleTestBrett();
  77. // Plaziert einen weißen Läufer auf c4 (2,3) und testet Angriffe
  78. Brett[3][2] = 'B';
  79. Player player = PLAYER_BLACK;
  80. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 0, 1, player)); // Check unten Links
  81. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 5, 0, player)); // Check oben Links
  82. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 4, 5, player)); // Check unten Rechts
  83. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 3, 2, player)); // Check oben Rechts
  84. // Plaziert einen schwarzen Läufer auf e5 (4,4) und testet Angriffe vom anderen spieler
  85. Brett[2][3] = ' ';
  86. Brett[4][4] = 'b';
  87. player = PLAYER_WHITE;
  88. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 2, 2, player)); // Check unten Rechts
  89. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 2, 6, player)); // Check oben Links
  90. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 6, 6, player)); // Check unten Rechts
  91. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 6, 2, player)); // Check oben Rechts
  92. // Check sicheres Feld
  93. TEST_ASSERT_FALSE(GreiftLaeuferAn(Brett, 0, 1, player));
  94. freeTestBrett(Brett);
  95. }
  96. void test_GreiftLaeuferAn(void) {
  97. char** Brett = ErstelleTestBrett();
  98. // Plaziert einen weißen Läufer auf c4 (2,3) und testet Angriffe
  99. Brett[3][2] = 'B';
  100. Player player = PLAYER_BLACK;
  101. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 0, 1, player)); // Check unten Links
  102. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 5, 0, player)); // Check oben Links
  103. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 4, 5, player)); // Check unten Rechts
  104. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 3, 2, player)); // Check oben Rechts
  105. // Plaziert einen schwarzen Läufer auf e5 (4,4) und testet Angriffe vom anderen spieler
  106. Brett[2][3] = ' ';
  107. Brett[4][4] = 'b';
  108. player = PLAYER_WHITE;
  109. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 2, 2, player)); // Check unten Rechts
  110. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 2, 6, player)); // Check oben Links
  111. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 6, 6, player)); // Check unten Rechts
  112. TEST_ASSERT_TRUE(GreiftLaeuferAn(Brett, 6, 2, player)); // Check oben Rechts
  113. // Check sicheres Feld
  114. TEST_ASSERT_FALSE(GreiftLaeuferAn(Brett, 0, 1, player));
  115. freeTestBrett(Brett);
  116. }
  117. #endif // TEST