diff --git a/Sources/ConsoleApp/Evenements.cs b/Sources/ConsoleApp/Evenements.cs index 3757c28..2d96edc 100644 --- a/Sources/ConsoleApp/Evenements.cs +++ b/Sources/ConsoleApp/Evenements.cs @@ -1,12 +1,14 @@ using CoreLibrary.Events; using CoreLibrary.Joueurs; using CoreLibrary.Core; +using System.Diagnostics.CodeAnalysis; namespace ConsoleApp { /// /// Fournit un ensemble de méthodes écoutant les événements liés au déroulement de la partie. /// + [ExcludeFromCodeCoverage] public static class Evenements { /// diff --git a/Sources/ConsoleApp/Program.cs b/Sources/ConsoleApp/Program.cs index 9149af7..f278018 100644 --- a/Sources/ConsoleApp/Program.cs +++ b/Sources/ConsoleApp/Program.cs @@ -1,24 +1,34 @@ -/// -/// Permet de jouer une partie de mastermind, avec les règles classiques -/// (2 joueurs, 12 tours, un code à 4 couleurs parmi 6) -/// - using ConsoleApp; using CoreLibrary; using CoreLibrary.Regles; +using System.Diagnostics.CodeAnalysis; +namespace AppConsole +{ + /// + /// Permet de jouer une partie de mastermind, avec les règles classiques + /// (2 joueurs, 12 tours, un code à 4 couleurs parmi 6) + /// + [ExcludeFromCodeCoverage] + public static class Program + { + public static void Main() + { + Utils.DessinerTitre(); -Utils.DessinerTitre(); + Partie maPartie = new Partie(new ReglesClassiques()); -Partie maPartie = new Partie(new ReglesClassiques()); + maPartie.DemanderJoueur += Evenements.DemanderJoueur; + maPartie.DebutPartie += Evenements.CommencerLaPartie; + maPartie.NouveauTour += Evenements.NouveauTour; + maPartie.DemanderJeton += Evenements.DemanderJeton; + maPartie.AjouterJeton += Evenements.AjouterJeton; + maPartie.SupprimerDernierJeton += Evenements.SupprimerDernierJeton; + maPartie.AjouterCode += Evenements.AjouterCode; + maPartie.PartieTerminee += Evenements.PartieTerminee; -maPartie.DemanderJoueur += Evenements.DemanderJoueur; -maPartie.DebutPartie += Evenements.CommencerLaPartie; -maPartie.NouveauTour += Evenements.NouveauTour; -maPartie.DemanderJeton += Evenements.DemanderJeton; -maPartie.AjouterJeton += Evenements.AjouterJeton; -maPartie.SupprimerDernierJeton += Evenements.SupprimerDernierJeton; -maPartie.AjouterCode += Evenements.AjouterCode; -maPartie.PartieTerminee += Evenements.PartieTerminee; + maPartie.Jouer(); + } + } +} -maPartie.Jouer(); diff --git a/Sources/ConsoleApp/Utils.cs b/Sources/ConsoleApp/Utils.cs index eb46762..be5c0ea 100644 --- a/Sources/ConsoleApp/Utils.cs +++ b/Sources/ConsoleApp/Utils.cs @@ -1,10 +1,12 @@ using CoreLibrary.Core; +using System.Diagnostics.CodeAnalysis; namespace ConsoleApp { /// /// Classe utilitaire contenant des méthodes pour dessiner des éléments dans la console. /// + [ExcludeFromCodeCoverage] public static class Utils { // Dictionnaires associant les valeurs des énumérations avec les couleurs de la console diff --git a/Sources/UnitTesting/EvenementUT.cs b/Sources/UnitTesting/EvenementUT.cs new file mode 100644 index 0000000..e90bba4 --- /dev/null +++ b/Sources/UnitTesting/EvenementUT.cs @@ -0,0 +1,87 @@ +using ConsoleApp; +using CoreLibrary.Core; +using CoreLibrary.Events; +using CoreLibrary.Joueurs; +using Xunit; + +namespace UnitTesting +{ + public class EvenementUT + { + [Fact] + public void DemanderJoueurTest() + { + string nom = "Céleste"; + TextReader entreeDefaut = Console.In; + using StringReader entreeModifiee = new StringReader(nom + Environment.NewLine); + + TextWriter sortieDefaut = Console.Out; + using StringWriter sortieModifiee = new StringWriter(); + + Console.SetIn(entreeModifiee); + Console.SetOut(sortieModifiee); + + Assert.Equal(nom, Evenements.DemanderJoueur(null, new DemanderJoueurEventArgs(1))); + + Console.SetIn(entreeDefaut); + Console.SetOut(sortieDefaut); + + Assert.Contains("Joueur 1", sortieModifiee.ToString()); + Assert.Contains(">>>", sortieModifiee.ToString()); + } + + [Fact] + public void CommencerLaPartieTest() + { + TextWriter sortieDefaut = Console.Out; + using StringWriter sortieModifiee = new StringWriter(); + + Console.SetOut(sortieModifiee); + + Evenements.CommencerLaPartie(null, new DebutPartieEventArgs()); + + Console.SetOut(sortieDefaut); + + Assert.Contains("La partie commence, bonne chance à tous !", sortieModifiee.ToString()); + } + + [Fact] + public void NouveauTourTest() + { + TextWriter sortieDefaut = Console.Out; + using StringWriter sortieModifiee = new StringWriter(); + + Console.SetOut(sortieModifiee); + + Plateau plateau = new Plateau(4, 12); + Joueur joueur = new Joueur("céleste", plateau); + + Evenements.NouveauTour(null, new NouveauTourEventArgs(joueur, 4, plateau.Grille(), plateau.Indicateurs())); + + Console.SetOut(sortieDefaut); + + Assert.Contains("Tour 4 - céleste", sortieModifiee.ToString()); + } + + [Fact] + public void DemanderJetonTest() + { + string saisie = $"{(char)ConsoleKey.RightArrow}{(char)ConsoleKey.RightArrow}{(char)ConsoleKey.Enter}"; + TextReader entreeDefaut = Console.In; + using StringReader entreeModifiee = new StringReader(saisie); + + TextWriter sortieDefaut = Console.Out; + using StringWriter sortieModifiee = new StringWriter(); + + Console.SetIn(entreeModifiee); + Console.SetOut(sortieModifiee); + + Assert.Equal(new Jeton(Couleur.BLEU), Evenements.DemanderJeton(null, new DemanderJetonEventArgs(0))); + + Console.SetIn(entreeDefaut); + Console.SetOut(sortieDefaut); + + Assert.Contains("O", sortieModifiee.ToString()); + } + } +}