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(); } [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); } } }