using CoreLibrary.Core; using CoreLibrary.Evenements; using CoreLibrary.Exceptions; using CoreLibrary.Joueurs; using CoreLibrary.Regles; using CoreLibrary.Statistiques; using System.Reflection; using Xunit; namespace UnitTesting { public class JoueurUT { [Fact] public void TestConstructeur1Valide() { string nom = ""; Joueur joueur = new Joueur(); Assert.Equal(nom, joueur.Nom); Assert.False(joueur.EstConnecte); } [Fact] public void TestConstructeur2Valide() { string nom = "toto"; Joueur joueur = new Joueur(nom); Assert.Equal(nom, joueur.Nom); Assert.False(joueur.EstConnecte); } [Fact] public void TestQuandJoueurSeConnecter() { Joueur joueur1 = new Joueur("Joueur1"); Joueur joueur2 = new Joueur("Joueur2"); bool eventTriggered = false; JoueurSeConnecterEventArgs? eventArgs = null; joueur1.JoueurSeConnecter += (sender, e) => { eventTriggered = true; eventArgs = e; }; MethodInfo? methodInfo = typeof(Joueur).GetMethod("QuandJoueurSeConnecter", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); methodInfo?.Invoke(joueur1, new object[] { joueur2 }); Assert.True(eventTriggered); Assert.NotNull(eventArgs); Assert.Equal(joueur2, eventArgs?.Joueur); } [Fact] public void TestSeConnecterDeclencheEvenement() { Joueur joueur1 = new Joueur("Joueur1"); Joueur joueur2 = new Joueur("Joueur2"); bool eventTriggered = false; JoueurSeConnecterEventArgs? eventArgs = null; joueur1.JoueurSeConnecter += (sender, e) => { eventTriggered = true; eventArgs = e; }; joueur1.SeConnecter(joueur2); Assert.True(eventTriggered); Assert.NotNull(eventArgs); Assert.Equal(joueur2, eventArgs?.Joueur); } [Fact] public void TestSeConnecterThrowException() { Joueur joueur = new Joueur("Joueur"); joueur.SeConnecter(joueur); Assert.Throws(() => joueur.SeConnecter(joueur)); } [Fact] public void SeConnecter_MetAJourEstConnecte() { Joueur joueur = new Joueur("Joueur"); joueur.SeConnecter(joueur); Assert.True(joueur.EstConnecte); } [Fact] public void TestToStringValide() { string nom = "Joueur"; Joueur joueur = new Joueur(nom); string result = joueur.ToString(); Assert.Equal(nom, result); } [Fact] public void TestToStringVide() { Joueur joueur = new Joueur(); string result = joueur.ToString(); Assert.Equal("", result); } [Fact] public void TestStatistiqueNonDefinie() { Joueur joueur = new Joueur("Joueur"); ReglesClassiques regles = new ReglesClassiques(); Statistique statistique = new Statistique(); int result = joueur.Statistique(regles, statistique); Assert.Equal(0, result); } [Fact] public void TestStatistiqueDefinie() { Joueur joueur = new Joueur("Joueur"); ReglesClassiques regles = new ReglesClassiques(); Statistique statistique = new Statistique(); joueur.IncrementerStatistique(regles, statistique); int result = joueur.Statistique(regles, statistique); Assert.Equal(1, result); } [Fact] public void TestIncrementerStatistiqueUn() { Joueur joueur = new Joueur("Joueur"); ReglesClassiques regles = new ReglesClassiques(); Statistique statistique = new Statistique(); joueur.IncrementerStatistique(regles, statistique); int result = joueur.Statistique(regles, statistique); Assert.Equal(1, result); } [Fact] public void TestIncrementerStatistiqueDeux() { Joueur joueur = new Joueur("Joueur"); ReglesClassiques regles = new ReglesClassiques(); Statistique statistique = new Statistique(); joueur.IncrementerStatistique(regles, statistique); joueur.IncrementerStatistique(regles, statistique); int result = joueur.Statistique(regles, statistique); Assert.Equal(2, result); } } }