diff --git a/Sources/BowlingLib/Model/Equipe.cs b/Sources/BowlingLib/Model/Equipe.cs index 84e1185..378ebcf 100644 --- a/Sources/BowlingLib/Model/Equipe.cs +++ b/Sources/BowlingLib/Model/Equipe.cs @@ -11,59 +11,63 @@ namespace BowlingLib.Model { private string nom; private List joueurs; - + public ReadOnlyCollection Joueurs { get; private set; } + private List joueurs = new List(); public string Nom { get { return nom; } set { nom = value; } } - public List Joueurs - { - get { return this.joueurs.AsReadOnly().ToList(); } - set { - - foreach (Joueur nouv in value) AjouterJoueur(nouv); - } - } + - public Equipe(string nom, List joueurs) + public Equipe(string nom, params Joueur[] joueurs) { this.nom = nom; if ( joueurs != null && joueurs.Count > 0) { - if (!this.joueurs.SequenceEqual(joueurs)) this.joueurs = joueurs; // Verification de doublon avant l'ajout des joueurs dans l'équipe + foreach (Joueur nouv in joueurs) AjouterJoueur(nouv); } else { throw new ArgumentException("La liste est null "); } - + + + Joueurs = new ReadOnlyCollection(this.joueurs); + } public Equipe(string nom) { this.nom = nom; - joueurs = new List(); } - + public void AjouterJoueurs(params Joueur[] joueurs) + { + foreach(var j in joueurs) + { + AjouterJoueur(j); + } - public void AjouterJoueur(Joueur joueur) + Joueurs = new ReadOnlyCollection(this.joueurs); + } + + public bool AjouterJoueur(Joueur joueur) { if(!isExist(joueur)) { joueurs.Add(joueur); - + return true; }else { throw new ArgumentException("Le joueur existe déjà dans l'équipe"); } - + return false; } public void SupprimerJoueur(Joueur joueur) diff --git a/Sources/Tests/BowlingAppUnitTest/UTestEquipe.cs b/Sources/Tests/BowlingAppUnitTest/UTestEquipe.cs index 6edea59..915cd8c 100644 --- a/Sources/Tests/BowlingAppUnitTest/UTestEquipe.cs +++ b/Sources/Tests/BowlingAppUnitTest/UTestEquipe.cs @@ -7,6 +7,60 @@ namespace Test.BowlingAppUnitTest { public class UnitTestEquipe { - + + public static IEnumerable Data_AddJoueurToEquipe() + { + yield return new object[] + { + true, + new Joueur[] + { + new Joueur("Alys"), + new Joueur("Bénita"), + new Joueur("Regis"), + new Joueur("Mania"), + new Joueur("Cornelle") + }, + new Equipe("ABRMC", + new Joueur("Alys"), + new Joueur("Bénita"), + new Joueur("Regis"), + new Joueur("Mania")), + new Joueur("Cornelle") + }; + + yield return new object[] + { + false, + new Joueur[] + { + new Joueur("Alys"), + new Joueur("Bénita"), + new Joueur("Regis"), + new Joueur("Mania") + }, + new Equipe("ABRMC", + new Joueur("Alys"), + new Joueur("Bénita"), + new Joueur("Regis"), + new Joueur("Mania")), + new Joueur("Mania") + }; + } + + + [Theory] + [MemberData(nameof(Data_AddJoueurToEquipe))] + public void Test_AddJoueurToEquipe(bool expectedResult, + IEnumerable expectedJoueurs, + Equipe equipe, + Joueur joueur) + { + bool result = equipe.AjouterJoueur(joueur); + Assert.Equal(expectedResult, result); + Assert.Equal(expectedJoueurs.Count(), equipe.Joueurs.Count()); + Assert.All(expectedJoueurs, j => equipe.Joueurs.Contains(j)); + } + } }