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.
mastermind/Sources/UnitTesting/EvenementsUT.cs

144 lines
4.5 KiB

using ConsoleApp;
using CoreLibrary.Core;
using CoreLibrary.Events;
using CoreLibrary.Joueurs;
using Xunit;
namespace UnitTesting
{
public class EvenementsUT
{
[Fact]
public void TestCommencerLaPartie()
{
TextWriter sortieDefaut = Console.Out;
using (StringWriter sw = new StringWriter())
{
Console.SetOut(sw);
Evenements.CommencerLaPartie(null, new DebutPartieEventArgs());
string consoleOutput = sw.ToString().Trim();
string separateurAttendu = "───────────────────────────────────────────────────────";
string separateurDessine = consoleOutput.Split('\n')[0];
Assert.Equal(separateurAttendu.Trim(), separateurDessine.Trim(), ignoreCase: true);
string phraseAttendue = "La partie commence, bonne chance à tous !";
string resteSortieAttendue = consoleOutput.Substring(separateurAttendu.Length).Trim();
Assert.Equal(phraseAttendue, resteSortieAttendue);
}
Console.SetOut(sortieDefaut);
}
[Fact]
public void TestAjouterJeton()
{
TextWriter sortieDefaut = Console.Out;
using (StringWriter sw = new StringWriter())
{
Console.SetOut(sw);
Couleur couleurJeton = Couleur.BLEU;
Jeton jeton = new Jeton(couleurJeton);
Evenements.AjouterJeton(null, new AjouterJetonEventArgs(jeton));
string consoleOutput = sw.ToString().Trim();
string expectedOutput = $"O";
Assert.Contains(expectedOutput, consoleOutput);
}
Console.SetOut(sortieDefaut);
}
[Fact]
public void TestSupprimerDernierJeton()
{
TextWriter sortieDefaut = Console.Out;
using (StringWriter sw = new StringWriter())
{
Console.SetOut(sw);
Evenements.SupprimerDernierJeton(null, new SupprimerDernierJetonEventArgs());
string consoleOutput = sw.ToString().Trim();
Assert.Equal("\b\b\b \b\b\b\b\b\b", consoleOutput);
}
Console.SetOut(sortieDefaut);
}
[Fact]
public void TestAjouterCode()
{
TextWriter sortieDefaut = Console.Out;
using (StringWriter sw = new StringWriter())
{
Console.SetOut(sw);
Code code = new Code(4);
Evenements.AjouterCode(null, new AjouterCodeEventArgs(code));
string consoleOutput = sw.ToString().Trim();
Assert.Equal("───────────────────────────────────────────────────────", consoleOutput);
}
Console.SetOut(sortieDefaut);
}
public static class Constants
{
public static readonly Joueur[] EmptyJoueurArray = Array.Empty<Joueur>();
}
[Fact]
public void TestPartieTerminee()
{
TextWriter sortieDefaut = Console.Out;
using (StringWriter sw = new StringWriter())
{
Console.SetOut(sw);
Evenements.PartieTerminee(null, new PartieTermineeEventArgs(Constants.EmptyJoueurArray, Constants.EmptyJoueurArray));
Evenements.PartieTerminee(null, new PartieTermineeEventArgs(new Joueur[] { new Joueur("Camille", new Plateau(4, 12)) }, Constants.EmptyJoueurArray));
Evenements.PartieTerminee(null, new PartieTermineeEventArgs(new Joueur[] { new Joueur("Pauline", new Plateau(4, 12)), new Joueur("Celeste", new Plateau(4, 12)) }, Constants.EmptyJoueurArray));
string consoleOutput = sw.ToString().Trim();
Assert.Contains("C'est une défaite des deux joueurs...", consoleOutput);
Assert.Contains("C'est une victoire de Camille.", consoleOutput);
Assert.Contains("C'est une égalité !", consoleOutput);
}
Console.SetOut(sortieDefaut);
}
}
}