diff --git a/Sources/UnitTesting/PartieUT.cs b/Sources/UnitTesting/PartieUT.cs index 1b57245..53dec98 100644 --- a/Sources/UnitTesting/PartieUT.cs +++ b/Sources/UnitTesting/PartieUT.cs @@ -1,1017 +1,1017 @@ -using System.Reflection; -using Xunit; -using CoreLibrary; -using CoreLibrary.Core; -using CoreLibrary.Joueurs; -using CoreLibrary.Regles; -using CoreLibrary.Evenements; -using CoreLibrary.Exceptions; - - -namespace UnitTesting -{ - /// - /// Classe test pour la classe Partie. - /// - public class PartieUT +using System.Reflection; +using Xunit; +using CoreLibrary; +using CoreLibrary.Core; +using CoreLibrary.Joueurs; +using CoreLibrary.Regles; +using CoreLibrary.Evenements; +using CoreLibrary.Exceptions; + + +namespace UnitTesting +{ + /// + /// Classe test pour la classe Partie. + /// + public class PartieUT { - /// - /// Test le premier constructeur de Partie valide. - /// - [Fact] - public void TestPremierConstructeurValide() - { - IRegles regle = new ReglesClassiques(); - - Partie partie = new Partie(regle); - Assert.Equal(regle, partie.Regles); + /// + /// Test le premier constructeur de Partie valide. + /// + [Fact] + public void TestPremierConstructeurValide() + { + IRegles regle = new ReglesClassiques(); + + Partie partie = new Partie(regle); + Assert.Equal(regle, partie.Regles); } - /// - /// Test le deuxième constructeur de Partie valide. - /// - [Fact] - public void TestSecondConstructeurValide() - { - - IRegles regles = new ReglesClassiques(); - Partie partieOriginale = new Partie(regles); - - - FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? courantField = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - PropertyInfo? tourField = typeof(Partie).GetProperty("Tour", BindingFlags.Public | BindingFlags.Instance); - PropertyInfo? termineField = typeof(Partie).GetProperty("Termine", BindingFlags.Public | BindingFlags.Instance); - - - if (joueursField != null && plateauxField != null) - { - Dictionary? joueurs = joueursField.GetValue(partieOriginale) as Dictionary; - if (joueurs != null) - { - joueurs.Add("Joueur1", false); - joueurs.Add("Joueur2", true); - } - - List? plateaux = plateauxField.GetValue(partieOriginale) as List; - if (plateaux != null) - { - plateaux.Add(new Plateau(4, 10)); - plateaux.Add(new Plateau(4, 10)); - } - - - - if (tourField != null) - tourField.SetValue(partieOriginale, 5); - - if (termineField != null) - termineField.SetValue(partieOriginale, false); - - - var partieCopiee = new Partie(partieOriginale); - - - Dictionary? joueursCopie = joueursField.GetValue(partieCopiee) as Dictionary; - List? plateauxCopie = plateauxField.GetValue(partieCopiee) as List; - - if (courantField != null && tourField != null && termineField != null) - { - int? courantCopie = courantField.GetValue(partieCopiee) as int?; - int? tourCopie = tourField.GetValue(partieCopiee) as int?; - bool? termineCopie = termineField.GetValue(partieCopiee) as bool?; - - - if (joueursCopie != null && plateauxCopie != null && courantCopie != null && tourCopie != null && termineCopie != null && joueurs != null && plateaux != null) - { - Assert.Equal(joueurs.Count, joueursCopie.Count); - Assert.Equal(plateaux.Count, plateauxCopie.Count); - Assert.Equal(5, tourCopie.Value); - Assert.False(termineCopie.Value); - Assert.Equal(regles, partieCopiee.Regles); - } - - - - if (joueurs != null && joueursCopie != null) - { - foreach (string joueur in joueurs.Keys) - { - Assert.True(joueursCopie.ContainsKey(joueur)); - Assert.Equal(joueurs[joueur], joueursCopie[joueur]); - } - } - - if (plateaux != null && plateauxCopie != null) - { - foreach (Plateau plateau in plateaux) - { - Assert.Contains(plateau, plateauxCopie); - } - } - - } - - } + /// + /// Test le deuxième constructeur de Partie valide. + /// + [Fact] + public void TestSecondConstructeurValide() + { + + IRegles regles = new ReglesClassiques(); + Partie partieOriginale = new Partie(regles); + + + FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? courantField = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + PropertyInfo? tourField = typeof(Partie).GetProperty("Tour", BindingFlags.Public | BindingFlags.Instance); + PropertyInfo? termineField = typeof(Partie).GetProperty("Termine", BindingFlags.Public | BindingFlags.Instance); + + + if (joueursField != null && plateauxField != null) + { + Dictionary? joueurs = joueursField.GetValue(partieOriginale) as Dictionary; + if (joueurs != null) + { + joueurs.Add("Joueur1", false); + joueurs.Add("Joueur2", true); + } + + List? plateaux = plateauxField.GetValue(partieOriginale) as List; + if (plateaux != null) + { + plateaux.Add(new Plateau(4, 10)); + plateaux.Add(new Plateau(4, 10)); + } + + + + if (tourField != null) + tourField.SetValue(partieOriginale, 5); + + if (termineField != null) + termineField.SetValue(partieOriginale, false); + + + var partieCopiee = new Partie(partieOriginale); + + + Dictionary? joueursCopie = joueursField.GetValue(partieCopiee) as Dictionary; + List? plateauxCopie = plateauxField.GetValue(partieCopiee) as List; + + if (courantField != null && tourField != null && termineField != null) + { + int? courantCopie = courantField.GetValue(partieCopiee) as int?; + int? tourCopie = tourField.GetValue(partieCopiee) as int?; + bool? termineCopie = termineField.GetValue(partieCopiee) as bool?; + + + if (joueursCopie != null && plateauxCopie != null && courantCopie != null && tourCopie != null && termineCopie != null && joueurs != null && plateaux != null) + { + Assert.Equal(joueurs.Count, joueursCopie.Count); + Assert.Equal(plateaux.Count, plateauxCopie.Count); + Assert.Equal(5, tourCopie.Value); + Assert.False(termineCopie.Value); + Assert.Equal(regles, partieCopiee.Regles); + } + + + + if (joueurs != null && joueursCopie != null) + { + foreach (string joueur in joueurs.Keys) + { + Assert.True(joueursCopie.ContainsKey(joueur)); + Assert.Equal(joueurs[joueur], joueursCopie[joueur]); + } + } + + if (plateaux != null && plateauxCopie != null) + { + foreach (Plateau plateau in plateaux) + { + Assert.Contains(plateau, plateauxCopie); + } + } + + } + + } } - /// - /// Test la méthode JouerDemanderJoueur de Partie. - /// - [Fact] - public void TestJouerDemanderJouer() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - - if (joueursField != null) - { - Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; - if (joueurs != null) - { - joueurs.Add("Joueur1", false); - } - - bool demanderJoueurCalled = false; - partie.PartieDemanderJoueur += (sender, e) => demanderJoueurCalled = true; - partie.Jouer(); - Assert.True(demanderJoueurCalled); - } + /// + /// Test la méthode JouerDemanderJoueur de Partie. + /// + [Fact] + public void TestJouerDemanderJouer() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + + if (joueursField != null) + { + Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; + if (joueurs != null) + { + joueurs.Add("Joueur1", false); + } + + bool demanderJoueurCalled = false; + partie.PartieDemanderJoueur += (sender, e) => demanderJoueurCalled = true; + partie.Jouer(); + Assert.True(demanderJoueurCalled); + } } - /// - /// Test la méthode JouerDebutPartie de Partie. - /// - [Fact] - public void TestJouerDebutPartie() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - - if (joueursField != null) - { - Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; - if (joueurs != null) - { - joueurs.Add("Joueur1", false); - joueurs.Add("Joueur2", false); - } - - bool debutPartieCalled = false; - partie.PartieDebutPartie += (sender, e) => debutPartieCalled = true; - partie.Jouer(); - Assert.True(debutPartieCalled); - } + /// + /// Test la méthode JouerDebutPartie de Partie. + /// + [Fact] + public void TestJouerDebutPartie() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + + if (joueursField != null) + { + Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; + if (joueurs != null) + { + joueurs.Add("Joueur1", false); + joueurs.Add("Joueur2", false); + } + + bool debutPartieCalled = false; + partie.PartieDebutPartie += (sender, e) => debutPartieCalled = true; + partie.Jouer(); + Assert.True(debutPartieCalled); + } } - /// - /// Test la méthode DemanderJoueur de Partie. - /// - [Fact] - public void TestDemanderJoueur() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - Joueur? joueurDemande = null; - - partie.PartieDemanderJoueur += (sender, e) => - { - joueurDemande = e.JoueurDemande; - }; - - MethodInfo? methodInfo = typeof(Partie).GetMethod("DemanderJoueur", BindingFlags.NonPublic | BindingFlags.Instance); - methodInfo?.Invoke(partie, null); - - Assert.NotNull(joueurDemande); - bool joueurConnecteCalled = false; - if (joueurDemande != null) - { - joueurDemande.JoueurSeConnecter += (sender, e) => joueurConnecteCalled = true; - joueurDemande.SeConnecter(joueurDemande); - Assert.True(joueurConnecteCalled); - } + /// + /// Test la méthode DemanderJoueur de Partie. + /// + [Fact] + public void TestDemanderJoueur() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + Joueur? joueurDemande = null; + + partie.PartieDemanderJoueur += (sender, e) => + { + joueurDemande = e.JoueurDemande; + }; + + MethodInfo? methodInfo = typeof(Partie).GetMethod("DemanderJoueur", BindingFlags.NonPublic | BindingFlags.Instance); + methodInfo?.Invoke(partie, null); + + Assert.NotNull(joueurDemande); + bool joueurConnecteCalled = false; + if (joueurDemande != null) + { + joueurDemande.JoueurSeConnecter += (sender, e) => joueurConnecteCalled = true; + joueurDemande.SeConnecter(joueurDemande); + Assert.True(joueurConnecteCalled); + } } - /// - /// Test l'événement JoueurSeConnecterEventArgs de Partie. - /// - [Fact] - public void TestJoueurConnecte() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - bool demanderJoueurAppelée = false; - partie.PartieDemanderJoueur += (sender, e) => demanderJoueurAppelée = true; - - Joueur? joueur1 = new Joueur("Joueur1"); - JoueurSeConnecterEventArgs joueur1EventArgs = new JoueurSeConnecterEventArgs(joueur1); - - - MethodInfo? methodInfo = typeof(Partie).GetMethod("JoueurConnecte", BindingFlags.NonPublic | BindingFlags.Instance); - methodInfo?.Invoke(partie, new object?[] { null, joueur1EventArgs }); - - - Assert.True(demanderJoueurAppelée); - - FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - - if (joueursField != null) - { - Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; - if (joueurs != null) - Assert.True(joueurs.ContainsKey(joueur1.Nom)); - } - - FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - if (plateauxField != null) - { - List? plateaux = plateauxField.GetValue(partie) as List; - if (plateaux != null) - Assert.Single(plateaux); - } - - Joueur joueur2 = new Joueur("Joueur2"); - JoueurSeConnecterEventArgs joueur2EventArgs = new JoueurSeConnecterEventArgs(joueur2); - - demanderJoueurAppelée = false; - methodInfo?.Invoke(partie, new object?[] { null, joueur2EventArgs }); - - if (joueursField != null) - { - Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; - if (joueurs != null) - { - Assert.Equal(2, joueurs.Count); - Assert.True(joueurs.ContainsKey(joueur2.Nom)); - } - - } - - if (plateauxField != null) - { - List? plateaux = plateauxField.GetValue(partie) as List; - if (plateaux != null) - Assert.Equal(2, plateaux.Count); - } - - PropertyInfo? tourProperty = typeof(Partie).GetProperty("Tour", BindingFlags.Public | BindingFlags.Instance); - if (tourProperty != null) - { - object? tourValue = tourProperty.GetValue(partie); - int? tour = tourValue as int?; - if (tour != null) - { - Assert.Equal(1, tour); - } - } + /// + /// Test l'événement JoueurSeConnecterEventArgs de Partie. + /// + [Fact] + public void TestJoueurConnecte() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + bool demanderJoueurAppelée = false; + partie.PartieDemanderJoueur += (sender, e) => demanderJoueurAppelée = true; + + Joueur? joueur1 = new Joueur("Joueur1"); + JoueurSeConnecterEventArgs joueur1EventArgs = new JoueurSeConnecterEventArgs(joueur1); + + + MethodInfo? methodInfo = typeof(Partie).GetMethod("JoueurConnecte", BindingFlags.NonPublic | BindingFlags.Instance); + methodInfo?.Invoke(partie, new object?[] { null, joueur1EventArgs }); + + + Assert.True(demanderJoueurAppelée); + + FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + + if (joueursField != null) + { + Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; + if (joueurs != null) + Assert.True(joueurs.ContainsKey(joueur1.Nom)); + } + + FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + if (plateauxField != null) + { + List? plateaux = plateauxField.GetValue(partie) as List; + if (plateaux != null) + Assert.Single(plateaux); + } + + Joueur joueur2 = new Joueur("Joueur2"); + JoueurSeConnecterEventArgs joueur2EventArgs = new JoueurSeConnecterEventArgs(joueur2); + + demanderJoueurAppelée = false; + methodInfo?.Invoke(partie, new object?[] { null, joueur2EventArgs }); + + if (joueursField != null) + { + Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; + if (joueurs != null) + { + Assert.Equal(2, joueurs.Count); + Assert.True(joueurs.ContainsKey(joueur2.Nom)); + } + + } + + if (plateauxField != null) + { + List? plateaux = plateauxField.GetValue(partie) as List; + if (plateaux != null) + Assert.Equal(2, plateaux.Count); + } + + PropertyInfo? tourProperty = typeof(Partie).GetProperty("Tour", BindingFlags.Public | BindingFlags.Instance); + if (tourProperty != null) + { + object? tourValue = tourProperty.GetValue(partie); + int? tour = tourValue as int?; + if (tour != null) + { + Assert.Equal(1, tour); + } + } } - /// - /// Test l'exception JoueurDejaPresentException de Partie. - /// - [Fact] - public void TestJoueurConnecteDejaPresent() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - bool appelee = false; - - partie.PartieDemanderJoueur += (sender, e) => - { - appelee = true; - - if (e.Indice == 1) - e.JoueurDemande.SeConnecter(new Joueur("Céleste")); - else - Assert.Throws(() => e.JoueurDemande.SeConnecter(new Joueur("Céleste"))); - }; - - partie.Jouer(); - - Assert.True(appelee); + /// + /// Test l'exception JoueurDejaPresentException de Partie. + /// + [Fact] + public void TestJoueurConnecteDejaPresent() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + bool appelee = false; + + partie.PartieDemanderJoueur += (sender, e) => + { + appelee = true; + + if (e.Indice == 1) + e.JoueurDemande.SeConnecter(new Joueur("Céleste")); + else + Assert.Throws(() => e.JoueurDemande.SeConnecter(new Joueur("Céleste"))); + }; + + partie.Jouer(); + + Assert.True(appelee); } - /// - /// Test l'exception NomJoueurInterditException de Partie. - /// - [Fact] - public void TestJoueurConnecteNomInterdit() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - bool appelee = false; - - partie.PartieDemanderJoueur += (sender, e) => - { - appelee = true; - - Assert.Throws(() => e.JoueurDemande.SeConnecter(new Joueur("Robot"))); - }; - - partie.Jouer(); - - Assert.True(appelee); + /// + /// Test l'exception NomJoueurInterditException de Partie. + /// + [Fact] + public void TestJoueurConnecteNomInterdit() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + bool appelee = false; + + partie.PartieDemanderJoueur += (sender, e) => + { + appelee = true; + + Assert.Throws(() => e.JoueurDemande.SeConnecter(new Joueur("Robot"))); + }; + + partie.Jouer(); + + Assert.True(appelee); } - /// - /// Test la création d'un robot. - /// - [Fact] - public void TestRobot() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - Assert.NotNull(partie.Robots); - Assert.Empty(partie.Robots); - - partie.PartieDemanderJoueur += (sender, e) => - { - e.JoueurDemande.SeConnecter(new Robot()); - }; - - partie.Jouer(); - - Assert.NotEmpty(partie.Robots); + /// + /// Test la création d'un robot. + /// + [Fact] + public void TestRobot() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + Assert.NotNull(partie.Robots); + Assert.Empty(partie.Robots); + + partie.PartieDemanderJoueur += (sender, e) => + { + e.JoueurDemande.SeConnecter(new Robot()); + }; + + partie.Jouer(); + + Assert.NotEmpty(partie.Robots); } - /// - /// Test la méthode DebutPartie de Partie. - /// - [Fact] - public void TestDebutPartie() - { - - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - PropertyInfo? plateauxField = typeof(Partie).GetProperty("plateaux", BindingFlags.Public | BindingFlags.Instance); - if (plateauxField != null) - { - List? plateaux = plateauxField.GetValue(partie) as List; - if (plateaux != null) - { - plateaux.Add(new Plateau(4, 10)); - plateaux.Add(new Plateau(4, 10)); - } - } - - MethodInfo? methodInfo = typeof(Partie).GetMethod("DebutPartie", BindingFlags.NonPublic | BindingFlags.Instance); - methodInfo?.Invoke(partie, null); - - PropertyInfo? tourProperty = typeof(Partie).GetProperty("Tour", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(tourProperty); - if (tourProperty != null) - { - object? tourValue = tourProperty.GetValue(partie); - int? tour = tourValue as int?; - if (tour != null) - { - Assert.Equal(1, tour); - } - } - - bool plateauAjouterCodeCalled = false; - - if (plateauxField != null) - { - List? plateaux = plateauxField.GetValue(partie) as List; - if (plateaux != null) - { - foreach (Plateau plateau in plateaux) - { - plateau.PlateauAjouterCode += (sender, e) => plateauAjouterCodeCalled = true; - plateau.AjouterCode(new Code(regle.TailleCode)); - Assert.True(plateauAjouterCodeCalled); - } - } - } + /// + /// Test la méthode DebutPartie de Partie. + /// + [Fact] + public void TestDebutPartie() + { + + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + PropertyInfo? plateauxField = typeof(Partie).GetProperty("plateaux", BindingFlags.Public | BindingFlags.Instance); + if (plateauxField != null) + { + List? plateaux = plateauxField.GetValue(partie) as List; + if (plateaux != null) + { + plateaux.Add(new Plateau(4, 10)); + plateaux.Add(new Plateau(4, 10)); + } + } + + MethodInfo? methodInfo = typeof(Partie).GetMethod("DebutPartie", BindingFlags.NonPublic | BindingFlags.Instance); + methodInfo?.Invoke(partie, null); + + PropertyInfo? tourProperty = typeof(Partie).GetProperty("Tour", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(tourProperty); + if (tourProperty != null) + { + object? tourValue = tourProperty.GetValue(partie); + int? tour = tourValue as int?; + if (tour != null) + { + Assert.Equal(1, tour); + } + } + + bool plateauAjouterCodeCalled = false; + + if (plateauxField != null) + { + List? plateaux = plateauxField.GetValue(partie) as List; + if (plateaux != null) + { + foreach (Plateau plateau in plateaux) + { + plateau.PlateauAjouterCode += (sender, e) => plateauAjouterCodeCalled = true; + plateau.AjouterCode(new Code(regle.TailleCode)); + Assert.True(plateauAjouterCodeCalled); + } + } + } } - /// - /// Test la méthode NouveauTour de Partie. - /// - [Fact] - public void TestNouveauTour() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - - FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - if (joueursField != null && plateauxField != null) - { - List? plateaux = plateauxField.GetValue(partie) as List; - Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; - if (joueurs != null && plateaux != null) - { - joueurs.Add("Joueur10", false); - joueurs.Add("Joueur50", false); - plateaux.Add(new Plateau(regle.TailleCode, regle.NbTour)); - plateaux.Add(new Plateau(regle.TailleCode, regle.NbTour)); - } - } - - bool demanderJoueurJouerEventTriggered = false; - bool nouveauTourEventTriggered = false; - - - partie.PartieDemanderJoueurJouer += (sender, e) => demanderJoueurJouerEventTriggered = true; - partie.PartieNouveauTour += (sender, e) => nouveauTourEventTriggered = true; - - MethodInfo? methodInfo = typeof(Partie).GetMethod("NouveauTour", BindingFlags.NonPublic | BindingFlags.Instance); - methodInfo?.Invoke(partie, null); - - - - Assert.True(demanderJoueurJouerEventTriggered); - Assert.True(nouveauTourEventTriggered); + /// + /// Test la méthode NouveauTour de Partie. + /// + [Fact] + public void TestNouveauTour() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + + FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + if (joueursField != null && plateauxField != null) + { + List? plateaux = plateauxField.GetValue(partie) as List; + Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; + if (joueurs != null && plateaux != null) + { + joueurs.Add("Joueur10", false); + joueurs.Add("Joueur50", false); + plateaux.Add(new Plateau(regle.TailleCode, regle.NbTour)); + plateaux.Add(new Plateau(regle.TailleCode, regle.NbTour)); + } + } + + bool demanderJoueurJouerEventTriggered = false; + bool nouveauTourEventTriggered = false; + + + partie.PartieDemanderJoueurJouer += (sender, e) => demanderJoueurJouerEventTriggered = true; + partie.PartieNouveauTour += (sender, e) => nouveauTourEventTriggered = true; + + MethodInfo? methodInfo = typeof(Partie).GetMethod("NouveauTour", BindingFlags.NonPublic | BindingFlags.Instance); + methodInfo?.Invoke(partie, null); + + + + Assert.True(demanderJoueurJouerEventTriggered); + Assert.True(nouveauTourEventTriggered); } - /// - /// Test la méthode AjouterCode de Partie et vérifie qu'il y a eu une incrémentation pour le nombre de tour. - /// - [Fact] - public void TestPlateauAjouterCodeIncrementation() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - - FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - if (joueursField != null && plateauxField != null) - { - List? plateaux = plateauxField.GetValue(partie) as List; - Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; - if (joueurs != null && plateaux != null) - { - joueurs.Add("Joueur1", false); - joueurs.Add("Joueur2", false); - plateaux.Add(new Plateau(regle.TailleCode, regle.NbTour)); - plateaux.Add(new Plateau(regle.TailleCode, regle.NbTour)); - } - } - - - Plateau plateau = new Plateau(regle.TailleCode, regle.NbTour); - PlateauAjouterCodeEventArgs eventArgs = new PlateauAjouterCodeEventArgs(plateau); - - - MethodInfo? methodInfo = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - methodInfo?.Invoke(partie, new object?[] { null, eventArgs }); - - FieldInfo? courantField = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - - if (courantField != null) - { - int? courant = ((int?)courantField.GetValue(partie)).GetValueOrDefault(); - - Assert.Equal(1, courant); - Assert.Equal(0, partie.Tour); - - } - - methodInfo?.Invoke(partie, new object?[] { null, eventArgs }); - - if (courantField != null) - { - int courant2 = ((int?)courantField.GetValue(partie)).GetValueOrDefault(); - Assert.Equal(0, courant2); - Assert.Equal(1, partie.Tour); - } - + /// + /// Test la méthode AjouterCode de Partie et vérifie qu'il y a eu une incrémentation pour le nombre de tour. + /// + [Fact] + public void TestPlateauAjouterCodeIncrementation() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + + FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + if (joueursField != null && plateauxField != null) + { + List? plateaux = plateauxField.GetValue(partie) as List; + Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; + if (joueurs != null && plateaux != null) + { + joueurs.Add("Joueur1", false); + joueurs.Add("Joueur2", false); + plateaux.Add(new Plateau(regle.TailleCode, regle.NbTour)); + plateaux.Add(new Plateau(regle.TailleCode, regle.NbTour)); + } + } + + + Plateau plateau = new Plateau(regle.TailleCode, regle.NbTour); + PlateauAjouterCodeEventArgs eventArgs = new PlateauAjouterCodeEventArgs(plateau); + + + MethodInfo? methodInfo = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + methodInfo?.Invoke(partie, new object?[] { null, eventArgs }); + + FieldInfo? courantField = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + + if (courantField != null) + { + int? courant = ((int?)courantField.GetValue(partie)).GetValueOrDefault(); + + Assert.Equal(1, courant); + Assert.Equal(0, partie.Tour); + + } + + methodInfo?.Invoke(partie, new object?[] { null, eventArgs }); + + if (courantField != null) + { + int courant2 = ((int?)courantField.GetValue(partie)).GetValueOrDefault(); + Assert.Equal(0, courant2); + Assert.Equal(1, partie.Tour); + } + } - /// - /// Test la méthode AjouterCode de Partie et vérifie que la partie est terminée. - /// - [Fact] - public void PlateauAjouterCodeTerminee() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - Plateau plateau = new Plateau(regle.TailleCode, regle.NbTour); - if (joueursField != null && plateauxField != null) - { - List? plateaux = plateauxField.GetValue(partie) as List; - Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; - if (joueurs != null && plateaux != null) - { - joueurs.Add("Joueur1", false); - joueurs.Add("Joueur2", false); - plateaux.Add(plateau); - plateaux.Add(plateau); - PropertyInfo? victoireProperty = typeof(Plateau).GetProperty("Victoire"); - if (victoireProperty != null) - { - victoireProperty.SetValue(plateau, true); - } - - FieldInfo? courantField = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - if (courantField != null) - { - courantField.SetValue(partie, 1); - } - - PlateauAjouterCodeEventArgs eventArgs = new PlateauAjouterCodeEventArgs(plateau); - MethodInfo? methodInfo = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - methodInfo?.Invoke(partie, new object?[] { null, eventArgs }); - - Assert.True(partie.Termine); - } - } + /// + /// Test la méthode AjouterCode de Partie et vérifie que la partie est terminée. + /// + [Fact] + public void PlateauAjouterCodeTerminee() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + Plateau plateau = new Plateau(regle.TailleCode, regle.NbTour); + if (joueursField != null && plateauxField != null) + { + List? plateaux = plateauxField.GetValue(partie) as List; + Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; + if (joueurs != null && plateaux != null) + { + joueurs.Add("Joueur1", false); + joueurs.Add("Joueur2", false); + plateaux.Add(plateau); + plateaux.Add(plateau); + PropertyInfo? victoireProperty = typeof(Plateau).GetProperty("Victoire"); + if (victoireProperty != null) + { + victoireProperty.SetValue(plateau, true); + } + + FieldInfo? courantField = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + if (courantField != null) + { + courantField.SetValue(partie, 1); + } + + PlateauAjouterCodeEventArgs eventArgs = new PlateauAjouterCodeEventArgs(plateau); + MethodInfo? methodInfo = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + methodInfo?.Invoke(partie, new object?[] { null, eventArgs }); + + Assert.True(partie.Termine); + } + } } - /// - /// Test la méthode PartieTerminee de Partie et vérifie les gagnants et perdants. - /// - [Fact] - public void TestPartieTerminee() - { - IRegles regle = new ReglesClassiques(); - Partie partie = new Partie(regle); - - FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - Plateau plateau1 = new Plateau(regle.TailleCode, regle.NbTour); - Plateau plateau2 = new Plateau(regle.TailleCode, regle.NbTour); - if (joueursField != null && plateauxField != null) - { - List? plateaux = plateauxField.GetValue(partie) as List; - Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; - if (joueurs != null && plateaux != null) - { - joueurs.Add("Joueur1", false); - joueurs.Add("Joueur2", false); - plateaux.Add(plateau1); - plateaux.Add(plateau2); - PropertyInfo? victoireProperty = typeof(Plateau).GetProperty("Victoire"); - if (victoireProperty != null) - { - victoireProperty.SetValue(plateau1, true); - } - - - MethodInfo? methodInfo = typeof(Partie).GetMethod("PartieTerminee", BindingFlags.NonPublic | BindingFlags.Instance); - methodInfo?.Invoke(partie, null); - - Assert.True(partie.Termine); - partie.PartiePartieTerminee += (sender, e) => - { - Assert.True(partie.Termine); - Assert.Contains("Joueur1", e.Gagnants); - Assert.Contains("Joueur2", e.Perdants); - }; - - - } - } + /// + /// Test la méthode PartieTerminee de Partie et vérifie les gagnants et perdants. + /// + [Fact] + public void TestPartieTerminee() + { + IRegles regle = new ReglesClassiques(); + Partie partie = new Partie(regle); + + FieldInfo? joueursField = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxField = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + Plateau plateau1 = new Plateau(regle.TailleCode, regle.NbTour); + Plateau plateau2 = new Plateau(regle.TailleCode, regle.NbTour); + if (joueursField != null && plateauxField != null) + { + List? plateaux = plateauxField.GetValue(partie) as List; + Dictionary? joueurs = joueursField.GetValue(partie) as Dictionary; + if (joueurs != null && plateaux != null) + { + joueurs.Add("Joueur1", false); + joueurs.Add("Joueur2", false); + plateaux.Add(plateau1); + plateaux.Add(plateau2); + PropertyInfo? victoireProperty = typeof(Plateau).GetProperty("Victoire"); + if (victoireProperty != null) + { + victoireProperty.SetValue(plateau1, true); + } + + + MethodInfo? methodInfo = typeof(Partie).GetMethod("PartieTerminee", BindingFlags.NonPublic | BindingFlags.Instance); + methodInfo?.Invoke(partie, null); + + Assert.True(partie.Termine); + partie.PartiePartieTerminee += (sender, e) => + { + Assert.True(partie.Termine); + Assert.Contains("Joueur1", e.Gagnants); + Assert.Contains("Joueur2", e.Perdants); + }; + + + } + } } - /// - /// Test tous les événements de Partie. - /// - [Fact] - public void TestPartieEcoute() - { - Partie partie = new Partie(new ReglesClassiques()); - - FieldInfo? joueursInfo = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxInfo = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(joueursInfo); - Assert.NotNull(plateauxInfo); - - Dictionary? joueurs = joueursInfo.GetValue(partie) as Dictionary; - List? plateaux = plateauxInfo.GetValue(partie) as List; - - Assert.NotNull(joueurs); - Assert.NotNull(plateaux); - - joueurs.Add("Céleste", true); - plateaux.Add(new Plateau(4, 12)); - - MethodInfo? QuandPartieDemanderJoueurInfo = typeof(Partie).GetMethod("QuandPartieDemanderJoueur", BindingFlags.NonPublic | BindingFlags.Instance); - MethodInfo? QuandPartieDebutPartieInfo = typeof(Partie).GetMethod("QuandPartieDebutPartie", BindingFlags.NonPublic | BindingFlags.Instance); - MethodInfo? QuandPartieDemanderJoueurJouerInfo = typeof(Partie).GetMethod("QuandPartieDemanderJoueurJouer", BindingFlags.NonPublic | BindingFlags.Instance); - MethodInfo? QuandPartieNouveauTourInfo = typeof(Partie).GetMethod("QuandPartieNouveauTour", BindingFlags.NonPublic | BindingFlags.Instance); - MethodInfo? QuandPartiePasserLaMainInfo = typeof(Partie).GetMethod("QuandPartiePasserLaMain", BindingFlags.NonPublic | BindingFlags.Instance); - MethodInfo? QuandPartiePartieTermineeInfo = typeof(Partie).GetMethod("QuandPartiePartieTerminee", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(QuandPartieDemanderJoueurInfo); - Assert.NotNull(QuandPartieDebutPartieInfo); - Assert.NotNull(QuandPartieDemanderJoueurJouerInfo); - Assert.NotNull(QuandPartieNouveauTourInfo); - Assert.NotNull(QuandPartiePasserLaMainInfo); - Assert.NotNull(QuandPartiePartieTermineeInfo); - - QuandPartieDemanderJoueurInfo?.Invoke(partie, [new Joueur()]); - QuandPartieDebutPartieInfo?.Invoke(partie, []); - QuandPartieDemanderJoueurJouerInfo?.Invoke(partie, [new Code(4)]); - QuandPartieNouveauTourInfo?.Invoke(partie, [new Code(4)]); - QuandPartiePasserLaMainInfo?.Invoke(partie, []); - QuandPartiePartieTermineeInfo?.Invoke(partie, [new List(["Céleste"]), new List(["Robot 1"])]); - - bool appel1 = false; - partie.PartieDemanderJoueur += (sender, e) => appel1 = true; - bool appel2 = false; - partie.PartieDebutPartie += (sender, e) => appel2 = true; - bool appel3 = false; - partie.PartieDemanderJoueurJouer += (sender, e) => appel3 = true; - bool appel4 = false; - partie.PartieNouveauTour += (sender, e) => appel4 = true; - bool appel5 = false; - partie.PartiePasserLaMain += (sender, e) => appel5 = true; - bool appel6 = false; - partie.PartiePartieTerminee += (sender, e) => appel6 = true; - - QuandPartieDemanderJoueurInfo?.Invoke(partie, [new Joueur()]); - QuandPartieDebutPartieInfo?.Invoke(partie, []); - QuandPartieDemanderJoueurJouerInfo?.Invoke(partie, [new Code(4)]); - QuandPartieNouveauTourInfo?.Invoke(partie, [new Code(4)]); - QuandPartiePasserLaMainInfo?.Invoke(partie, []); - QuandPartiePartieTermineeInfo?.Invoke(partie, [new List(["Céleste"]), new List(["Robot 1"])]); - - Assert.True(appel1); - Assert.True(appel2); - Assert.True(appel3); - Assert.True(appel4); - Assert.True(appel5); - Assert.True(appel6); + /// + /// Test tous les événements de Partie. + /// + [Fact] + public void TestPartieEcoute() + { + Partie partie = new Partie(new ReglesClassiques()); + + FieldInfo? joueursInfo = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxInfo = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(joueursInfo); + Assert.NotNull(plateauxInfo); + + Dictionary? joueurs = joueursInfo.GetValue(partie) as Dictionary; + List? plateaux = plateauxInfo.GetValue(partie) as List; + + Assert.NotNull(joueurs); + Assert.NotNull(plateaux); + + joueurs.Add("Céleste", true); + plateaux.Add(new Plateau(4, 12)); + + MethodInfo? QuandPartieDemanderJoueurInfo = typeof(Partie).GetMethod("QuandPartieDemanderJoueur", BindingFlags.NonPublic | BindingFlags.Instance); + MethodInfo? QuandPartieDebutPartieInfo = typeof(Partie).GetMethod("QuandPartieDebutPartie", BindingFlags.NonPublic | BindingFlags.Instance); + MethodInfo? QuandPartieDemanderJoueurJouerInfo = typeof(Partie).GetMethod("QuandPartieDemanderJoueurJouer", BindingFlags.NonPublic | BindingFlags.Instance); + MethodInfo? QuandPartieNouveauTourInfo = typeof(Partie).GetMethod("QuandPartieNouveauTour", BindingFlags.NonPublic | BindingFlags.Instance); + MethodInfo? QuandPartiePasserLaMainInfo = typeof(Partie).GetMethod("QuandPartiePasserLaMain", BindingFlags.NonPublic | BindingFlags.Instance); + MethodInfo? QuandPartiePartieTermineeInfo = typeof(Partie).GetMethod("QuandPartiePartieTerminee", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(QuandPartieDemanderJoueurInfo); + Assert.NotNull(QuandPartieDebutPartieInfo); + Assert.NotNull(QuandPartieDemanderJoueurJouerInfo); + Assert.NotNull(QuandPartieNouveauTourInfo); + Assert.NotNull(QuandPartiePasserLaMainInfo); + Assert.NotNull(QuandPartiePartieTermineeInfo); + + QuandPartieDemanderJoueurInfo?.Invoke(partie, [new Joueur()]); + QuandPartieDebutPartieInfo?.Invoke(partie, []); + QuandPartieDemanderJoueurJouerInfo?.Invoke(partie, [new Code(4)]); + QuandPartieNouveauTourInfo?.Invoke(partie, [new Code(4)]); + QuandPartiePasserLaMainInfo?.Invoke(partie, []); + QuandPartiePartieTermineeInfo?.Invoke(partie, [new List(["Céleste"]), new List(["Robot 1"])]); + + bool appel1 = false; + partie.PartieDemanderJoueur += (sender, e) => appel1 = true; + bool appel2 = false; + partie.PartieDebutPartie += (sender, e) => appel2 = true; + bool appel3 = false; + partie.PartieDemanderJoueurJouer += (sender, e) => appel3 = true; + bool appel4 = false; + partie.PartieNouveauTour += (sender, e) => appel4 = true; + bool appel5 = false; + partie.PartiePasserLaMain += (sender, e) => appel5 = true; + bool appel6 = false; + partie.PartiePartieTerminee += (sender, e) => appel6 = true; + + QuandPartieDemanderJoueurInfo?.Invoke(partie, [new Joueur()]); + QuandPartieDebutPartieInfo?.Invoke(partie, []); + QuandPartieDemanderJoueurJouerInfo?.Invoke(partie, [new Code(4)]); + QuandPartieNouveauTourInfo?.Invoke(partie, [new Code(4)]); + QuandPartiePasserLaMainInfo?.Invoke(partie, []); + QuandPartiePartieTermineeInfo?.Invoke(partie, [new List(["Céleste"]), new List(["Robot 1"])]); + + Assert.True(appel1); + Assert.True(appel2); + Assert.True(appel3); + Assert.True(appel4); + Assert.True(appel5); + Assert.True(appel6); } - /// - /// Test la méthode AjouterCode de Partie avec toutes ses composantes et les différentes fin. - /// - [Fact] - public void TestPartiePlateauAjouterCode() - { - // Cas 1 : dernier joueur - false, plateau complet - false, victoire - false - Partie partie1 = new Partie(new ReglesClassiques()); - - FieldInfo? joueursInfo1 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxInfo1 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? courantInfo1 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(joueursInfo1); - Assert.NotNull(plateauxInfo1); - Assert.NotNull(courantInfo1); - - Dictionary? joueurs1 = joueursInfo1.GetValue(partie1) as Dictionary; - List? plateaux1 = plateauxInfo1.GetValue(partie1) as List; - - Assert.NotNull(joueurs1); - Assert.NotNull(plateaux1); - - courantInfo1.SetValue(partie1, 0); - - joueurs1.Add("Céleste", true); - joueurs1.Add("Pauline", true); - - Plateau plateau1_j1 = new Plateau(1, 1); - Plateau plateau1_j2 = new Plateau(1, 1); - - plateaux1.Add(plateau1_j1); - plateaux1.Add(plateau1_j2); - - PropertyInfo? VictoireInfo1_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo1_j1); - VictoireInfo1_j1.SetValue(plateau1_j1, false); - - PropertyInfo? VictoireInfo1_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo1_j2); - VictoireInfo1_j2.SetValue(plateau1_j2, false); - - MethodInfo? PlateauAjouterCodeInfo1 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - Assert.NotNull(PlateauAjouterCodeInfo1); - PlateauAjouterCodeInfo1.Invoke(partie1, [null, new PlateauAjouterCodeEventArgs(plateau1_j1)]); - - // Cas 2 : dernier joueur - false, plateau complet - false, victoire - true - Partie partie2 = new Partie(new ReglesClassiques()); - - FieldInfo? joueursInfo2 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxInfo2 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? courantInfo2 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(joueursInfo2); - Assert.NotNull(plateauxInfo2); - Assert.NotNull(courantInfo2); - - Dictionary? joueurs2 = joueursInfo2.GetValue(partie2) as Dictionary; - List? plateaux2 = plateauxInfo2.GetValue(partie2) as List; - - Assert.NotNull(joueurs2); - Assert.NotNull(plateaux2); - - courantInfo2.SetValue(partie2, 0); - - joueurs2.Add("Céleste", true); - joueurs2.Add("Pauline", true); - - Plateau plateau2_j1 = new Plateau(1, 1); - Plateau plateau2_j2= new Plateau(1, 1); - - plateaux2.Add(plateau2_j1); - plateaux2.Add(plateau2_j2); - - PropertyInfo? VictoireInfo2_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo2_j1); - VictoireInfo2_j1.SetValue(plateau2_j1, true); - - PropertyInfo? VictoireInfo2_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo2_j2); - VictoireInfo2_j2.SetValue(plateau2_j2, true); - - MethodInfo? PlateauAjouterCodeInfo2 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - Assert.NotNull(PlateauAjouterCodeInfo2); - PlateauAjouterCodeInfo2.Invoke(partie2, [null, new PlateauAjouterCodeEventArgs(plateau2_j1)]); - - - // Cas 3 : dernier joueur - false, plateau complet - true, victoire - false - Partie partie3 = new Partie(new ReglesClassiques()); - - FieldInfo? joueursInfo3 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxInfo3 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? courantInfo3 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(joueursInfo3); - Assert.NotNull(plateauxInfo3); - Assert.NotNull(courantInfo3); - - Dictionary? joueurs3 = joueursInfo3.GetValue(partie3) as Dictionary; - List? plateaux3 = plateauxInfo3.GetValue(partie3) as List; - - Assert.NotNull(joueurs3); - Assert.NotNull(plateaux3); - - courantInfo3.SetValue(partie3, 0); - - joueurs3.Add("Céleste", true); - joueurs3.Add("Pauline", true); - - Plateau plateau3_j1 = new Plateau(1, 1); - Plateau plateau3_j2 = new Plateau(1, 1); - - Code code3_j1 = new Code(1); - code3_j1.AjouterJeton(new Jeton(Couleur.Rouge)); - Code code3_j2 = new Code(1); - code3_j2.AjouterJeton(new Jeton(Couleur.Rouge)); - - plateau3_j1.AjouterCode(code3_j1); - plateau3_j2.AjouterCode(code3_j2); - - plateaux3.Add(plateau3_j1); - plateaux3.Add(plateau3_j2); - - PropertyInfo? VictoireInfo3_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo3_j1); - VictoireInfo3_j1.SetValue(plateau3_j1, false); - - PropertyInfo? VictoireInfo3_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo3_j2); - VictoireInfo3_j2.SetValue(plateau3_j2, false); - - MethodInfo? PlateauAjouterCodeInfo3 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - Assert.NotNull(PlateauAjouterCodeInfo3); - PlateauAjouterCodeInfo3.Invoke(partie3, [null, new PlateauAjouterCodeEventArgs(plateau3_j1)]); - - - // Cas 4 : dernier joueur - false, plateau complet - true, victoire - true - Partie partie4 = new Partie(new ReglesClassiques()); - - FieldInfo? joueursInfo4 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxInfo4 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? courantInfo4 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(joueursInfo4); - Assert.NotNull(plateauxInfo4); - Assert.NotNull(courantInfo4); - - Dictionary? joueurs4 = joueursInfo4.GetValue(partie4) as Dictionary; - List? plateaux4 = plateauxInfo4.GetValue(partie4) as List; - - Assert.NotNull(joueurs4); - Assert.NotNull(plateaux4); - - courantInfo4.SetValue(partie4, 0); - - joueurs4.Add("Céleste", true); - joueurs4.Add("Pauline", true); - - Plateau plateau4_j1 = new Plateau(1, 1); - Plateau plateau4_j2 = new Plateau(1, 1); - - Code code4_j1 = new Code(1); - code4_j1.AjouterJeton(new Jeton(Couleur.Rouge)); - Code code4_j2 = new Code(1); - code4_j2.AjouterJeton(new Jeton(Couleur.Rouge)); - - plateau4_j1.AjouterCode(code4_j1); - plateau4_j2.AjouterCode(code4_j2); - - plateaux4.Add(plateau4_j1); - plateaux4.Add(plateau4_j2); - - PropertyInfo? VictoireInfo4_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo4_j1); - VictoireInfo4_j1.SetValue(plateau4_j1, true); - - PropertyInfo? VictoireInfo4_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo4_j2); - VictoireInfo4_j2.SetValue(plateau4_j2, true); - - MethodInfo? PlateauAjouterCodeInfo4 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - Assert.NotNull(PlateauAjouterCodeInfo4); - PlateauAjouterCodeInfo4.Invoke(partie4, [null, new PlateauAjouterCodeEventArgs(plateau4_j1)]); - - - // Cas 5 : dernier joueur - true, plateau complet - false, victoire - false - Partie partie5 = new Partie(new ReglesClassiques()); - - FieldInfo? joueursInfo5 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxInfo5 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? courantInfo5 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(joueursInfo5); - Assert.NotNull(plateauxInfo5); - Assert.NotNull(courantInfo5); - - Dictionary? joueurs5 = joueursInfo5.GetValue(partie5) as Dictionary; - List? plateaux5 = plateauxInfo5.GetValue(partie5) as List; - - Assert.NotNull(joueurs5); - Assert.NotNull(plateaux5); - - courantInfo5.SetValue(partie5, 1); - - joueurs5.Add("Céleste", true); - joueurs5.Add("Pauline", true); - - Plateau plateau5_j1 = new Plateau(1, 1); - Plateau plateau5_j2 = new Plateau(1, 1); - - plateaux5.Add(plateau5_j1); - plateaux5.Add(plateau5_j2); - - PropertyInfo? VictoireInfo5_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo5_j1); - VictoireInfo5_j1.SetValue(plateau5_j1, false); - - PropertyInfo? VictoireInfo5_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo5_j2); - VictoireInfo5_j2.SetValue(plateau5_j2, false); - - MethodInfo? PlateauAjouterCodeInfo5 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - Assert.NotNull(PlateauAjouterCodeInfo5); - PlateauAjouterCodeInfo5.Invoke(partie5, [null, new PlateauAjouterCodeEventArgs(plateau5_j1)]); - - // Cas 6 : dernier joueur - true, plateau complet - false, victoire - true - Partie partie6 = new Partie(new ReglesClassiques()); - - FieldInfo? joueursInfo6 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxInfo6 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? courantInfo6 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(joueursInfo6); - Assert.NotNull(plateauxInfo6); - Assert.NotNull(courantInfo6); - - Dictionary? joueurs6 = joueursInfo6.GetValue(partie6) as Dictionary; - List? plateaux6 = plateauxInfo6.GetValue(partie6) as List; - - Assert.NotNull(joueurs6); - Assert.NotNull(plateaux6); - - courantInfo6.SetValue(partie6, 1); - - joueurs6.Add("Céleste", true); - joueurs6.Add("Pauline", true); - - Plateau plateau6_j1 = new Plateau(1, 1); - Plateau plateau6_j2 = new Plateau(1, 1); - - plateaux6.Add(plateau6_j1); - plateaux6.Add(plateau6_j2); - - PropertyInfo? VictoireInfo6_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo6_j1); - VictoireInfo6_j1.SetValue(plateau6_j1, true); - - PropertyInfo? VictoireInfo6_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo6_j2); - VictoireInfo6_j2.SetValue(plateau6_j2, true); - - MethodInfo? PlateauAjouterCodeInfo6 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - Assert.NotNull(PlateauAjouterCodeInfo6); - PlateauAjouterCodeInfo6.Invoke(partie6, [null, new PlateauAjouterCodeEventArgs(plateau6_j1)]); - - // Cas 7 : dernier joueur - true, plateau complet - true, victoire - false - Partie partie7 = new Partie(new ReglesClassiques()); - - FieldInfo? joueursInfo7 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxInfo7 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? courantInfo7 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(joueursInfo7); - Assert.NotNull(plateauxInfo7); - Assert.NotNull(courantInfo7); - - Dictionary? joueurs7 = joueursInfo7.GetValue(partie7) as Dictionary; - List? plateaux7 = plateauxInfo7.GetValue(partie7) as List; - - Assert.NotNull(joueurs7); - Assert.NotNull(plateaux7); - - courantInfo7.SetValue(partie7, 1); - - joueurs7.Add("Céleste", true); - joueurs7.Add("Pauline", true); - - Plateau plateau7_j1 = new Plateau(1, 1); - Plateau plateau7_j2 = new Plateau(1, 1); - - Code code7_j1 = new Code(1); - code7_j1.AjouterJeton(new Jeton(Couleur.Rouge)); - Code code7_j2 = new Code(1); - code7_j2.AjouterJeton(new Jeton(Couleur.Rouge)); - - plateau7_j1.AjouterCode(code7_j1); - plateau7_j2.AjouterCode(code7_j2); - - plateaux7.Add(plateau7_j1); - plateaux7.Add(plateau7_j2); - - PropertyInfo? VictoireInfo7_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo7_j1); - VictoireInfo7_j1.SetValue(plateau7_j1, false); - - PropertyInfo? VictoireInfo7_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo7_j2); - VictoireInfo7_j2.SetValue(plateau7_j2, false); - - MethodInfo? PlateauAjouterCodeInfo7 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - Assert.NotNull(PlateauAjouterCodeInfo7); - PlateauAjouterCodeInfo7.Invoke(partie7, [null, new PlateauAjouterCodeEventArgs(plateau7_j1)]); - - // Cas 8 : dernier joueur - true, plateau complet - true, victoire - true - Partie partie8 = new Partie(new ReglesClassiques()); - - FieldInfo? joueursInfo8 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? plateauxInfo8 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); - FieldInfo? courantInfo8 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); - - Assert.NotNull(joueursInfo8); - Assert.NotNull(plateauxInfo8); - Assert.NotNull(courantInfo8); - - Dictionary? joueurs8 = joueursInfo8.GetValue(partie8) as Dictionary; - List? plateaux8 = plateauxInfo8.GetValue(partie8) as List; - - Assert.NotNull(joueurs8); - Assert.NotNull(plateaux8); - - courantInfo8.SetValue(partie8, 1); - - joueurs8.Add("Céleste", true); - joueurs8.Add("Pauline", true); - - Plateau plateau8_j1 = new Plateau(1, 1); - Plateau plateau8_j2 = new Plateau(1, 1); - - Code code8_j1 = new Code(1); - code8_j1.AjouterJeton(new Jeton(Couleur.Rouge)); - Code code8_j2 = new Code(1); - code8_j2.AjouterJeton(new Jeton(Couleur.Rouge)); - - plateau8_j1.AjouterCode(code8_j1); - plateau8_j2.AjouterCode(code8_j2); - - plateaux8.Add(plateau8_j1); - plateaux8.Add(plateau8_j2); - - PropertyInfo? VictoireInfo8_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo8_j1); - VictoireInfo8_j1.SetValue(plateau8_j1, true); - - PropertyInfo? VictoireInfo8_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); - Assert.NotNull(VictoireInfo8_j2); - VictoireInfo8_j2.SetValue(plateau8_j2, true); - - MethodInfo? PlateauAjouterCodeInfo8 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); - Assert.NotNull(PlateauAjouterCodeInfo8); - PlateauAjouterCodeInfo8.Invoke(partie8, [null, new PlateauAjouterCodeEventArgs(plateau8_j1)]); - } - } -} + /// + /// Test la méthode AjouterCode de Partie avec toutes ses composantes et les différentes fin. + /// + [Fact] + public void TestPartiePlateauAjouterCode() + { + // Cas 1 : dernier joueur - false, plateau complet - false, victoire - false + Partie partie1 = new Partie(new ReglesClassiques()); + + FieldInfo? joueursInfo1 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxInfo1 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? courantInfo1 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(joueursInfo1); + Assert.NotNull(plateauxInfo1); + Assert.NotNull(courantInfo1); + + Dictionary? joueurs1 = joueursInfo1.GetValue(partie1) as Dictionary; + List? plateaux1 = plateauxInfo1.GetValue(partie1) as List; + + Assert.NotNull(joueurs1); + Assert.NotNull(plateaux1); + + courantInfo1.SetValue(partie1, 0); + + joueurs1.Add("Céleste", true); + joueurs1.Add("Pauline", true); + + Plateau plateau1_j1 = new Plateau(1, 1); + Plateau plateau1_j2 = new Plateau(1, 1); + + plateaux1.Add(plateau1_j1); + plateaux1.Add(plateau1_j2); + + PropertyInfo? VictoireInfo1_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo1_j1); + VictoireInfo1_j1.SetValue(plateau1_j1, false); + + PropertyInfo? VictoireInfo1_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo1_j2); + VictoireInfo1_j2.SetValue(plateau1_j2, false); + + MethodInfo? PlateauAjouterCodeInfo1 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + Assert.NotNull(PlateauAjouterCodeInfo1); + PlateauAjouterCodeInfo1.Invoke(partie1, [null, new PlateauAjouterCodeEventArgs(plateau1_j1)]); + + // Cas 2 : dernier joueur - false, plateau complet - false, victoire - true + Partie partie2 = new Partie(new ReglesClassiques()); + + FieldInfo? joueursInfo2 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxInfo2 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? courantInfo2 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(joueursInfo2); + Assert.NotNull(plateauxInfo2); + Assert.NotNull(courantInfo2); + + Dictionary? joueurs2 = joueursInfo2.GetValue(partie2) as Dictionary; + List? plateaux2 = plateauxInfo2.GetValue(partie2) as List; + + Assert.NotNull(joueurs2); + Assert.NotNull(plateaux2); + + courantInfo2.SetValue(partie2, 0); + + joueurs2.Add("Céleste", true); + joueurs2.Add("Pauline", true); + + Plateau plateau2_j1 = new Plateau(1, 1); + Plateau plateau2_j2= new Plateau(1, 1); + + plateaux2.Add(plateau2_j1); + plateaux2.Add(plateau2_j2); + + PropertyInfo? VictoireInfo2_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo2_j1); + VictoireInfo2_j1.SetValue(plateau2_j1, true); + + PropertyInfo? VictoireInfo2_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo2_j2); + VictoireInfo2_j2.SetValue(plateau2_j2, true); + + MethodInfo? PlateauAjouterCodeInfo2 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + Assert.NotNull(PlateauAjouterCodeInfo2); + PlateauAjouterCodeInfo2.Invoke(partie2, [null, new PlateauAjouterCodeEventArgs(plateau2_j1)]); + + + // Cas 3 : dernier joueur - false, plateau complet - true, victoire - false + Partie partie3 = new Partie(new ReglesClassiques()); + + FieldInfo? joueursInfo3 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxInfo3 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? courantInfo3 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(joueursInfo3); + Assert.NotNull(plateauxInfo3); + Assert.NotNull(courantInfo3); + + Dictionary? joueurs3 = joueursInfo3.GetValue(partie3) as Dictionary; + List? plateaux3 = plateauxInfo3.GetValue(partie3) as List; + + Assert.NotNull(joueurs3); + Assert.NotNull(plateaux3); + + courantInfo3.SetValue(partie3, 0); + + joueurs3.Add("Céleste", true); + joueurs3.Add("Pauline", true); + + Plateau plateau3_j1 = new Plateau(1, 1); + Plateau plateau3_j2 = new Plateau(1, 1); + + Code code3_j1 = new Code(1); + code3_j1.AjouterJeton(new Jeton(Couleur.Rouge)); + Code code3_j2 = new Code(1); + code3_j2.AjouterJeton(new Jeton(Couleur.Rouge)); + + plateau3_j1.AjouterCode(code3_j1); + plateau3_j2.AjouterCode(code3_j2); + + plateaux3.Add(plateau3_j1); + plateaux3.Add(plateau3_j2); + + PropertyInfo? VictoireInfo3_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo3_j1); + VictoireInfo3_j1.SetValue(plateau3_j1, false); + + PropertyInfo? VictoireInfo3_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo3_j2); + VictoireInfo3_j2.SetValue(plateau3_j2, false); + + MethodInfo? PlateauAjouterCodeInfo3 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + Assert.NotNull(PlateauAjouterCodeInfo3); + PlateauAjouterCodeInfo3.Invoke(partie3, [null, new PlateauAjouterCodeEventArgs(plateau3_j1)]); + + + // Cas 4 : dernier joueur - false, plateau complet - true, victoire - true + Partie partie4 = new Partie(new ReglesClassiques()); + + FieldInfo? joueursInfo4 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxInfo4 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? courantInfo4 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(joueursInfo4); + Assert.NotNull(plateauxInfo4); + Assert.NotNull(courantInfo4); + + Dictionary? joueurs4 = joueursInfo4.GetValue(partie4) as Dictionary; + List? plateaux4 = plateauxInfo4.GetValue(partie4) as List; + + Assert.NotNull(joueurs4); + Assert.NotNull(plateaux4); + + courantInfo4.SetValue(partie4, 0); + + joueurs4.Add("Céleste", true); + joueurs4.Add("Pauline", true); + + Plateau plateau4_j1 = new Plateau(1, 1); + Plateau plateau4_j2 = new Plateau(1, 1); + + Code code4_j1 = new Code(1); + code4_j1.AjouterJeton(new Jeton(Couleur.Rouge)); + Code code4_j2 = new Code(1); + code4_j2.AjouterJeton(new Jeton(Couleur.Rouge)); + + plateau4_j1.AjouterCode(code4_j1); + plateau4_j2.AjouterCode(code4_j2); + + plateaux4.Add(plateau4_j1); + plateaux4.Add(plateau4_j2); + + PropertyInfo? VictoireInfo4_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo4_j1); + VictoireInfo4_j1.SetValue(plateau4_j1, true); + + PropertyInfo? VictoireInfo4_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo4_j2); + VictoireInfo4_j2.SetValue(plateau4_j2, true); + + MethodInfo? PlateauAjouterCodeInfo4 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + Assert.NotNull(PlateauAjouterCodeInfo4); + PlateauAjouterCodeInfo4.Invoke(partie4, [null, new PlateauAjouterCodeEventArgs(plateau4_j1)]); + + + // Cas 5 : dernier joueur - true, plateau complet - false, victoire - false + Partie partie5 = new Partie(new ReglesClassiques()); + + FieldInfo? joueursInfo5 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxInfo5 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? courantInfo5 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(joueursInfo5); + Assert.NotNull(plateauxInfo5); + Assert.NotNull(courantInfo5); + + Dictionary? joueurs5 = joueursInfo5.GetValue(partie5) as Dictionary; + List? plateaux5 = plateauxInfo5.GetValue(partie5) as List; + + Assert.NotNull(joueurs5); + Assert.NotNull(plateaux5); + + courantInfo5.SetValue(partie5, 1); + + joueurs5.Add("Céleste", true); + joueurs5.Add("Pauline", true); + + Plateau plateau5_j1 = new Plateau(1, 1); + Plateau plateau5_j2 = new Plateau(1, 1); + + plateaux5.Add(plateau5_j1); + plateaux5.Add(plateau5_j2); + + PropertyInfo? VictoireInfo5_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo5_j1); + VictoireInfo5_j1.SetValue(plateau5_j1, false); + + PropertyInfo? VictoireInfo5_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo5_j2); + VictoireInfo5_j2.SetValue(plateau5_j2, false); + + MethodInfo? PlateauAjouterCodeInfo5 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + Assert.NotNull(PlateauAjouterCodeInfo5); + PlateauAjouterCodeInfo5.Invoke(partie5, [null, new PlateauAjouterCodeEventArgs(plateau5_j1)]); + + // Cas 6 : dernier joueur - true, plateau complet - false, victoire - true + Partie partie6 = new Partie(new ReglesClassiques()); + + FieldInfo? joueursInfo6 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxInfo6 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? courantInfo6 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(joueursInfo6); + Assert.NotNull(plateauxInfo6); + Assert.NotNull(courantInfo6); + + Dictionary? joueurs6 = joueursInfo6.GetValue(partie6) as Dictionary; + List? plateaux6 = plateauxInfo6.GetValue(partie6) as List; + + Assert.NotNull(joueurs6); + Assert.NotNull(plateaux6); + + courantInfo6.SetValue(partie6, 1); + + joueurs6.Add("Céleste", true); + joueurs6.Add("Pauline", true); + + Plateau plateau6_j1 = new Plateau(1, 1); + Plateau plateau6_j2 = new Plateau(1, 1); + + plateaux6.Add(plateau6_j1); + plateaux6.Add(plateau6_j2); + + PropertyInfo? VictoireInfo6_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo6_j1); + VictoireInfo6_j1.SetValue(plateau6_j1, true); + + PropertyInfo? VictoireInfo6_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo6_j2); + VictoireInfo6_j2.SetValue(plateau6_j2, true); + + MethodInfo? PlateauAjouterCodeInfo6 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + Assert.NotNull(PlateauAjouterCodeInfo6); + PlateauAjouterCodeInfo6.Invoke(partie6, [null, new PlateauAjouterCodeEventArgs(plateau6_j1)]); + + // Cas 7 : dernier joueur - true, plateau complet - true, victoire - false + Partie partie7 = new Partie(new ReglesClassiques()); + + FieldInfo? joueursInfo7 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxInfo7 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? courantInfo7 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(joueursInfo7); + Assert.NotNull(plateauxInfo7); + Assert.NotNull(courantInfo7); + + Dictionary? joueurs7 = joueursInfo7.GetValue(partie7) as Dictionary; + List? plateaux7 = plateauxInfo7.GetValue(partie7) as List; + + Assert.NotNull(joueurs7); + Assert.NotNull(plateaux7); + + courantInfo7.SetValue(partie7, 1); + + joueurs7.Add("Céleste", true); + joueurs7.Add("Pauline", true); + + Plateau plateau7_j1 = new Plateau(1, 1); + Plateau plateau7_j2 = new Plateau(1, 1); + + Code code7_j1 = new Code(1); + code7_j1.AjouterJeton(new Jeton(Couleur.Rouge)); + Code code7_j2 = new Code(1); + code7_j2.AjouterJeton(new Jeton(Couleur.Rouge)); + + plateau7_j1.AjouterCode(code7_j1); + plateau7_j2.AjouterCode(code7_j2); + + plateaux7.Add(plateau7_j1); + plateaux7.Add(plateau7_j2); + + PropertyInfo? VictoireInfo7_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo7_j1); + VictoireInfo7_j1.SetValue(plateau7_j1, false); + + PropertyInfo? VictoireInfo7_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo7_j2); + VictoireInfo7_j2.SetValue(plateau7_j2, false); + + MethodInfo? PlateauAjouterCodeInfo7 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + Assert.NotNull(PlateauAjouterCodeInfo7); + PlateauAjouterCodeInfo7.Invoke(partie7, [null, new PlateauAjouterCodeEventArgs(plateau7_j1)]); + + // Cas 8 : dernier joueur - true, plateau complet - true, victoire - true + Partie partie8 = new Partie(new ReglesClassiques()); + + FieldInfo? joueursInfo8 = typeof(Partie).GetField("joueurs", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? plateauxInfo8 = typeof(Partie).GetField("plateaux", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo? courantInfo8 = typeof(Partie).GetField("courant", BindingFlags.NonPublic | BindingFlags.Instance); + + Assert.NotNull(joueursInfo8); + Assert.NotNull(plateauxInfo8); + Assert.NotNull(courantInfo8); + + Dictionary? joueurs8 = joueursInfo8.GetValue(partie8) as Dictionary; + List? plateaux8 = plateauxInfo8.GetValue(partie8) as List; + + Assert.NotNull(joueurs8); + Assert.NotNull(plateaux8); + + courantInfo8.SetValue(partie8, 1); + + joueurs8.Add("Céleste", true); + joueurs8.Add("Pauline", true); + + Plateau plateau8_j1 = new Plateau(1, 1); + Plateau plateau8_j2 = new Plateau(1, 1); + + Code code8_j1 = new Code(1); + code8_j1.AjouterJeton(new Jeton(Couleur.Rouge)); + Code code8_j2 = new Code(1); + code8_j2.AjouterJeton(new Jeton(Couleur.Rouge)); + + plateau8_j1.AjouterCode(code8_j1); + plateau8_j2.AjouterCode(code8_j2); + + plateaux8.Add(plateau8_j1); + plateaux8.Add(plateau8_j2); + + PropertyInfo? VictoireInfo8_j1 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo8_j1); + VictoireInfo8_j1.SetValue(plateau8_j1, true); + + PropertyInfo? VictoireInfo8_j2 = typeof(Plateau).GetProperty("Victoire", BindingFlags.Public | BindingFlags.Instance); + Assert.NotNull(VictoireInfo8_j2); + VictoireInfo8_j2.SetValue(plateau8_j2, true); + + MethodInfo? PlateauAjouterCodeInfo8 = typeof(Partie).GetMethod("PlateauAjouterCode", BindingFlags.NonPublic | BindingFlags.Instance); + Assert.NotNull(PlateauAjouterCodeInfo8); + PlateauAjouterCodeInfo8.Invoke(partie8, [null, new PlateauAjouterCodeEventArgs(plateau8_j1)]); + } + } +}