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.

107 lines
3.3 KiB

  1. package de.fd.fh;
  2. import org.junit.jupiter.api.BeforeAll;
  3. import org.junit.jupiter.api.BeforeEach;
  4. import org.junit.jupiter.api.Test;
  5. import org.junit.jupiter.params.ParameterizedTest;
  6. import org.junit.jupiter.params.provider.CsvSource;
  7. import static org.hamcrest.MatcherAssert.assertThat;
  8. import static org.junit.jupiter.api.Assertions.*;
  9. class GameTest
  10. {
  11. private Game g = new Game();
  12. @BeforeEach
  13. void setupTest()
  14. {
  15. g.initNewGame();
  16. }
  17. @Test
  18. void newGameInitializationCorrectField()
  19. {
  20. assertEquals(Figure.fieldLength * Figure.fieldLength, g.mField.length);
  21. }
  22. // prüft, ob Figuren nach Initialisierung nur an vorgesehenden Positionen stehen
  23. @Test
  24. void newGameInitializationFigurePositions()
  25. {
  26. for (int i = 0; i < Figure.fieldLength; i++) // row
  27. {
  28. for (int j = 0; j < Figure.fieldLength; j++) // col
  29. {
  30. if (i == Game.whiteRowOther
  31. || i == Game.whiteRowFarmer
  32. || i == Game.blackRowOther
  33. || i == Game.blackRowFarmer)
  34. {
  35. assertNotEquals(null, g.mField[i * Figure.fieldLength + j]);
  36. }
  37. else
  38. {
  39. assertEquals(null, g.mField[i * Figure.fieldLength + j]);
  40. }
  41. }
  42. }
  43. }
  44. @Test
  45. void newGameInitializationFigurePositionsFarmer()
  46. {
  47. // weiße Bauern
  48. for (int j = 0; j < Figure.fieldLength; j++) // col
  49. {
  50. assertEquals(new FigureFarmer(FigureFarmer.Color.White).getClass(),
  51. g.mField[Game.whiteRowFarmer * Figure.fieldLength + j].getClass());
  52. assertEquals(new FigureFarmer(FigureFarmer.Color.White),
  53. g.mField[Game.whiteRowFarmer * Figure.fieldLength + j]);
  54. }
  55. // schwarze Bauern
  56. for (int j = 0; j < Figure.fieldLength; j++) // col
  57. {
  58. assertEquals(new FigureFarmer(FigureFarmer.Color.Black).getClass(),
  59. g.mField[Game.blackRowFarmer * Figure.fieldLength + j].getClass());
  60. assertEquals(new FigureFarmer(FigureFarmer.Color.Black),
  61. g.mField[Game.blackRowFarmer * Figure.fieldLength + j]);
  62. }
  63. }
  64. @ParameterizedTest
  65. // row, col
  66. @CsvSource({
  67. "0, 0", // schwarzer Turm a8
  68. "0, 7", // schwarzer Turm h8
  69. "7, 0", // weißer Turm a1
  70. "7, 7" // weißer Turm h1
  71. })
  72. void newGameInitializationFigurePositionsRooks(int row, int col)
  73. {
  74. // schwarzer Turm a8
  75. assertEquals(new FigureRook().getClass(),
  76. g.mField[Figure.fieldLength * row + col].getClass());
  77. }
  78. @Test
  79. void moveFarmerWhite() // weißer Bauer ganz links um ein Feld noch vorne bewegen
  80. {
  81. int src = Game.whiteRowFarmer * Figure.fieldLength + 0;
  82. int dst = (Game.whiteRowFarmer - 1) * Figure.fieldLength + 0;
  83. // zu bewegende Figur
  84. Figure f = g.mField[src];
  85. // Ziel sollte leer sein
  86. assertNull(g.mField[dst]);
  87. // Figur bewegen
  88. assertTrue(g.moveFigure(src, dst));
  89. // Figur sollte nun verschoben sein
  90. assertNull(g.mField[src]);
  91. assertSame(f, g.mField[dst]);
  92. }
  93. }