using CoreLibrary; using CoreLibrary.Regles; using CoreLibrary.Core; using Xunit; using System.Reflection; using CoreLibrary.Events; namespace UnitTesting { public class PartieUT { [Fact] public void TestPartieInitialiseCorrectement() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); Assert.NotNull(partie); } [Fact] public void TestJouerAppelleDemanderJoueurEvent() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool eventAppelle = false; partie.DemanderJoueur += (sender, e) => { eventAppelle = true; return $"Joueur {e.Numero}"; }; partie.Jouer(); Assert.True(eventAppelle); } [Fact] public void TestJouerAppelleDemanderJetonEvent() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool eventAppelle = false; partie.DemanderJeton += (sender, e) => { eventAppelle = true; return new Jeton(); }; partie.Jouer(); Assert.True(eventAppelle); } [Fact] public void TestJouerAppelleAjouterJoueurEvent() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool eventAppelle = false; partie.AjouterJoueur += (sender, e) => { eventAppelle = true; }; partie.Jouer(); Assert.True(eventAppelle); } [Fact] public void TestJouerAppelleDebutPartieEvent() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool eventAppelle = false; partie.DebutPartie += (sender, e) => { eventAppelle = true; }; partie.Jouer(); Assert.True(eventAppelle); } [Fact] public void TestJouerAppelleNouveauTourEvent() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool eventAppelle = false; partie.NouveauTour += (sender, e) => { eventAppelle = true; }; partie.Jouer(); Assert.True(eventAppelle); } [Fact] public void TestJouerAppelleNouveauJetonEvent() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool eventAppelle = false; partie.AjouterJeton += (sender, e) => { eventAppelle = true; }; partie.Jouer(); Assert.True(eventAppelle); } [Fact] public void TestJouerAppelleNouveauCodeEvent() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool eventAppelle = false; partie.AjouterCode += (sender, e) => { eventAppelle = true; }; partie.Jouer(); Assert.True(eventAppelle); } [Fact] public void TestJouerAppellePasserMainEvent() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool eventAppelle = false; partie.PasserMain += (sender, e) => { eventAppelle = true; }; partie.Jouer(); Assert.True(eventAppelle); } [Fact] public void TestJouerAppellePartieTermineeEvent() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool eventAppelle = false; partie.PartieTerminee += (sender, e) => { eventAppelle = true; }; partie.Jouer(); Assert.True(eventAppelle); } [Fact] public void TestSupprimerDernierJeton() { IRegles regles = new ReglesClassiques(); Partie partie = new Partie(regles); bool appele = false; partie.DemanderJeton += (sender, e) => { if (e.Indice == 0 || appele) return new Jeton(); return null; }; partie.SupprimerDernierJeton += (sender, e) => { appele = true; }; partie.Jouer(); Assert.True(appele); } [Fact] public void TestSupprimerDernierJetonNull() { Partie partie = new Partie(new ReglesClassiques()); MethodInfo? methode = typeof(Partie).GetMethod("QuandSupprimerDernierJeton", BindingFlags.NonPublic | BindingFlags.Instance); Assert.NotNull(methode); methode.Invoke(partie, null); } } }