using MiniGames.Client.ViewModel; using MiniGames.Shared.Models; using Xunit; namespace MiniGamesTests { public class TicTacToeTest { TicTacToeBrett StandardBrett() { return new TicTacToeBrett(); } SpielerModel[] StandardSpieler() { return new SpielerModel[] { new SpielerModel { SpielerName = "Spieler 1", Punkte = 0 }, new SpielerModel { SpielerName = "Spieler 2", Punkte = 1 } }; } TicTacToeModel StandardModel() { return new TicTacToeModel { Spieler = StandardSpieler(), Brett = StandardBrett(), }; } TicTacToe StandardSpiel() { return new(StandardModel()); } [Theory] [InlineData(0, 1)] [InlineData(1, 0)] public void SpielerWechselTest(int vorher, int nachher) { // arrange TicTacToe spiel = StandardSpiel(); spiel.AktiverSpielerIndex = vorher; int erwarteterIndex = nachher; // act spiel.SpielerWechsel(); // assert Assert.Equal(erwarteterIndex, spiel.AktiverSpielerIndex); } [Fact] public void SpielerInput_ValidesInputTest() { // arrange TicTacToe spiel = StandardSpiel(); spiel.AktiverSpielerIndex = 0; int erwarteterSpielerIndex = 1; int pos = 2; TicTacToeBrett erwartetesBrett = new(new int[,] { { TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, }, { TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER, }, { spiel.AktiverSpielerIndex, TicTacToeBrett.LEER, TicTacToeBrett.LEER, }, }); // act spiel.SpielerInput(pos); // assert Assert.True(spiel.Brett.Gleich(erwartetesBrett)); Assert.Equal(erwarteterSpielerIndex, spiel.AktiverSpielerIndex); } [Fact] public void SpielerInput_InvalidesInputTest() { // arrange TicTacToe spiel = StandardSpiel(); spiel.AktiverSpielerIndex = 0; int erwarteterSpielerIndex = 0; int pos = -1; TicTacToeBrett erwartetesBrett = StandardBrett(); // act spiel.SpielerInput(pos); // assert Assert.True(spiel.Brett.Gleich(erwartetesBrett)); Assert.Equal(erwarteterSpielerIndex, spiel.AktiverSpielerIndex); } [Theory] [InlineData(0, 0, 3, 1, 4, 2)] [InlineData(0, 3, 0, 4, 1, 5, 2)] [InlineData(1, 0, 6, 3, 4, 6, 1, 2)] public void SpielerInput_GewinnerTest(int gewinnerIndex, params int[] inputs) { // arrange TicTacToe spiel = StandardSpiel(); spiel.AktiverSpielerIndex = 0; spiel.Spieler[0].Punkte = 0; spiel.Spieler[1].Punkte = 1; int erwartetePunkteSpieler1 = (gewinnerIndex == 0) ? 1 : 0; int erwartetePunkteSpieler2 = (gewinnerIndex == 1) ? 2 : 1; int erwarteterGewinnerIndex = gewinnerIndex; // act foreach (int input in inputs) { spiel.SpielerInput(input); } // assert Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex); Assert.Equal(spiel.Spieler[0].Punkte, erwartetePunkteSpieler1); Assert.Equal(spiel.Spieler[1].Punkte, erwartetePunkteSpieler2); } [Fact] public void SpielerInput_KeinGewinnerTest() { // arrange TicTacToe spiel = StandardSpiel(); spiel.AktiverSpielerIndex = 0; spiel.Spieler[0].Punkte = 0; spiel.Spieler[1].Punkte = 0; int erwartetePunkteSpieler1 = 0; int erwartetePunkteSpieler2 = 0; int erwarteterGewinnerIndex = -1; // act spiel.SpielerInput(0); spiel.SpielerInput(3); spiel.SpielerInput(1); spiel.SpielerInput(4); spiel.SpielerInput(5); spiel.SpielerInput(2); // assert Assert.Equal(spiel.GewinnerIndex, erwarteterGewinnerIndex); Assert.Equal(spiel.Spieler[0].Punkte, erwartetePunkteSpieler1); Assert.Equal(spiel.Spieler[1].Punkte, erwartetePunkteSpieler2); } } }