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