Continous Integration in der Praxis Gruppenarbeit
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.

158 lines
4.7 KiB

  1. using MiniGames.Client.ViewModel;
  2. using MiniGames.Shared.Models;
  3. using Xunit;
  4. namespace MiniGamesTests
  5. {
  6. public class TicTacToeTest
  7. {
  8. TicTacToeBrett StandardBrett()
  9. {
  10. return new TicTacToeBrett();
  11. }
  12. SpielerModel[] StandardSpieler()
  13. {
  14. return new SpielerModel[]
  15. {
  16. new SpielerModel
  17. {
  18. SpielerName = "Spieler 1",
  19. Punkte = 0
  20. },
  21. new SpielerModel
  22. {
  23. SpielerName = "Spieler 2",
  24. Punkte = 1
  25. }
  26. };
  27. }
  28. TicTacToeModel StandardModel()
  29. {
  30. return new TicTacToeModel
  31. {
  32. Spieler = StandardSpieler(),
  33. Brett = StandardBrett(),
  34. };
  35. }
  36. TicTacToe StandardSpiel()
  37. {
  38. return new(StandardModel());
  39. }
  40. [Theory]
  41. [InlineData(0, 1)]
  42. [InlineData(1, 0)]
  43. public void SpielerWechselTest(int vorher, int nachher)
  44. {
  45. // arrange
  46. TicTacToe spiel = StandardSpiel();
  47. spiel.AktiverSpielerIndex = vorher;
  48. int erwarteterIndex = nachher;
  49. // act
  50. spiel.SpielerWechsel();
  51. // assert
  52. Assert.Equal(erwarteterIndex, spiel.AktiverSpielerIndex);
  53. }
  54. [Fact]
  55. public void SpielerInput_ValidesInputTest()
  56. {
  57. // arrange
  58. TicTacToe spiel = StandardSpiel();
  59. spiel.AktiverSpielerIndex = 0;
  60. int erwarteterSpielerIndex = 1;
  61. int pos = 2;
  62. TicTacToeBrett erwartetesBrett = new(new int[,]
  63. {
  64. { TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, },
  65. { TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, },
  66. { spiel.AktiverSpielerIndex, TicTacToeBrett.LEER, TicTacToeBrett.LEER, },
  67. });
  68. // act
  69. spiel.SpielerInput(pos);
  70. // assert
  71. Assert.True(spiel.Brett.Gleich(erwartetesBrett));
  72. Assert.Equal(erwarteterSpielerIndex, spiel.AktiverSpielerIndex);
  73. }
  74. [Fact]
  75. public void SpielerInput_InvalidesInputTest()
  76. {
  77. // arrange
  78. TicTacToe spiel = StandardSpiel();
  79. spiel.AktiverSpielerIndex = 0;
  80. int erwarteterSpielerIndex = 0;
  81. int pos = -1;
  82. TicTacToeBrett erwartetesBrett = StandardBrett();
  83. // act
  84. spiel.SpielerInput(pos);
  85. // assert
  86. Assert.True(spiel.Brett.Gleich(erwartetesBrett));
  87. Assert.Equal(erwarteterSpielerIndex, spiel.AktiverSpielerIndex);
  88. }
  89. [Theory]
  90. [InlineData(0, 0, 3, 1, 4, 2)]
  91. [InlineData(0, 3, 0, 4, 1, 5, 2)]
  92. [InlineData(1, 0, 6, 3, 4, 6, 1, 2)]
  93. public void SpielerInput_GewinnerTest(int gewinnerIndex, params int[] inputs)
  94. {
  95. // arrange
  96. TicTacToe spiel = StandardSpiel();
  97. spiel.AktiverSpielerIndex = 0;
  98. spiel.Spieler[0].Punkte = 0;
  99. spiel.Spieler[1].Punkte = 1;
  100. int erwartetePunkteSpieler1 = (gewinnerIndex == 0) ? 1 : 0;
  101. int erwartetePunkteSpieler2 = (gewinnerIndex == 1) ? 2 : 1;
  102. int erwarteterGewinnerIndex = gewinnerIndex;
  103. // act
  104. foreach (int input in inputs)
  105. {
  106. spiel.SpielerInput(input);
  107. }
  108. // assert
  109. Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex);
  110. Assert.Equal(spiel.Spieler[0].Punkte, erwartetePunkteSpieler1);
  111. Assert.Equal(spiel.Spieler[1].Punkte, erwartetePunkteSpieler2);
  112. }
  113. [Fact]
  114. public void SpielerInput_KeinGewinnerTest()
  115. {
  116. // arrange
  117. TicTacToe spiel = StandardSpiel();
  118. spiel.AktiverSpielerIndex = 0;
  119. spiel.Spieler[0].Punkte = 0;
  120. spiel.Spieler[1].Punkte = 0;
  121. int erwartetePunkteSpieler1 = 0;
  122. int erwartetePunkteSpieler2 = 0;
  123. int erwarteterGewinnerIndex = -1;
  124. // act
  125. spiel.SpielerInput(0);
  126. spiel.SpielerInput(3);
  127. spiel.SpielerInput(1);
  128. spiel.SpielerInput(4);
  129. spiel.SpielerInput(5);
  130. spiel.SpielerInput(2);
  131. // assert
  132. Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex);
  133. Assert.Equal(spiel.Spieler[0].Punkte, erwartetePunkteSpieler1);
  134. Assert.Equal(spiel.Spieler[1].Punkte, erwartetePunkteSpieler2);
  135. }
  136. }
  137. }