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
158 lines
4.7 KiB
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);
|
|
}
|
|
}
|
|
}
|