Merge pull request '.' (#51) from bug003 into master
continuous-integration/drone/push Build is passing Details

Reviewed-on: #51
pull/55/head
Victor Perez NGOUNOU 3 years ago
commit 222a7d2aa7

@ -4,36 +4,39 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading.Tasks;
namespace BowlingLib.Model
{
/// <summary>
/// Classe Model Equipe
/// </summary>
public class Equipe
{
private string nom;
private readonly long id;
public List<Joueur> Joueurs = new List<Joueur>();
public string Nom
{
get { return nom; }
set { nom = value; }
}
public Equipe(string nom, params Joueur[] joueurs)
{
this.nom = nom;
AjouterJoueurs(joueurs);
// foreach (Joueur nouv in joueurs) AjouterJoueur(nouv);
// foreach (Joueur nouv in joueurs) AjouterJoueur(nouv);
}
public long Id
public long Id
{
get { return id; }
}
@ -44,13 +47,18 @@ namespace BowlingLib.Model
this.nom = nom;
}
public Equipe(long id, string nom, List<Joueur> joueurs)
public Equipe(long id, string nom, List<Joueur> joueurs)
{
this.id = id;
Joueurs = joueurs;
Nom = nom;
}
/// <summary>
/// Ajoute une liste de joueur à l'équipe
/// </summary>
/// <param name="joueurs"></param>
/// <returns></returns>
public List<Joueur> AjouterJoueurs(params Joueur[] joueurs)
{
List<Joueur> result = new();
@ -63,40 +71,57 @@ namespace BowlingLib.Model
}
return result;
}
/// <summary>
/// Ajouter un joueur s'il n'exciste pas dans la bd
/// </summary>
/// <param name="joueur"></param>
/// <returns></returns>
public bool AjouterJoueur(Joueur joueur)
{
if(!isExist(joueur))
if (!isExist(joueur))
{
Joueurs.Add(joueur);
return true;
}else
}
else
{
return false;
}
}
/// <summary>
/// Supprimer un joueur
/// </summary>
/// <param name="joueur"></param>
public void SupprimerJoueur(Joueur joueur)
{
Joueurs.Remove(joueur);
}
//retourner la liste non modifiable des joueurs de l'équipe
/// <summary>
/// retourner la liste non modifiable des joueurs de l'équipe
/// </summary>
/// <returns></returns>
public List<Joueur> GetJoueurs()
{
return Joueurs;
}
// Fonction permettant de vérifier si un joueur existe déjà dans la liste (l'équipe)
/// <summary>
/// Fonction permettant de vérifier si un joueur existe déjà dans la liste (l'équipe)
/// </summary>
/// <param name="nouvJoueur"></param>
/// <returns></returns>
public bool isExist(Joueur nouvJoueur)
{
if (Joueurs.Contains(nouvJoueur)) return true;
if (Joueurs.Contains(nouvJoueur))
return true;
return false;
}

@ -8,10 +8,14 @@ using System.Threading.Tasks;
namespace BowlingLib.Model
{
/// <summary>
/// Classe Model Frame
/// </summary>
public class Frame
{
const int MAX_QUILLE = 10;
public int Numero {
public int Numero
{
get
{ return numero; }
set
@ -29,8 +33,9 @@ namespace BowlingLib.Model
}
public int QuillesRestantes
{ get
public int QuillesRestantes
{
get
{
return quillesRestantes;
}
@ -41,12 +46,12 @@ namespace BowlingLib.Model
}
private int quillesRestantes;
public int QuillesTombees
public int QuillesTombees
{
get
{
return quillesTombees;
}
}
set
{
this.quillesTombees = value;
@ -54,36 +59,39 @@ namespace BowlingLib.Model
}
private int quillesTombees;
public bool IsStrike {
get {
public bool IsStrike
{
get
{
return isStrike;
}
set{
}
set
{
this.isStrike = value;
}
}
}
private bool isStrike;
public bool IsSpare
{
get
public bool IsSpare
{
get
{
return isPark;
}
}
set
{
this.isPark = value;
}
}
}
private bool isPark;
public bool IsFinished
{
get
{
return isFinished;
}
set
{
return isFinished;
}
set
{
this.isFinished = value;
}
@ -91,14 +99,14 @@ namespace BowlingLib.Model
}
private bool isFinished;
public Lancer Lancer1
public Lancer Lancer1
{
get
{
return lancer1;
{
return lancer1;
}
set
{
set
{
this.lancer1 = value;
}
}
@ -136,18 +144,12 @@ namespace BowlingLib.Model
/// </summary>
/// <param name="numero"></param>
/// <param name="id"></param>
/// <param name="isStrike"></param>
/// <param name="isSpare"></param>
/// <param name="isPark"></param>
/// <param name="isFinished"></param>
/// <param name="lancer1"></param>
/// <param name="lancer2"></param>
/// <param name="lancer3"></param>
public Frame(long id, int numero, bool isStrike, bool isSpare, int lancer1, int lancer2, [AllowNull] int lancer3) : this(numero)
public Frame(long id, int numero, int lancer1, int lancer2, [AllowNull] int lancer3) : this(numero)
{
this.id = id;
IsStrike = isStrike;
IsSpare = isSpare;
Lancer1 = new Lancer(lancer1);
Lancer2 = new Lancer(lancer2);
Lancer3 = new Lancer(lancer3);
@ -169,6 +171,7 @@ namespace BowlingLib.Model
throw new ArgumentException("Le nombre de quilles tombees doit et etre positif");
}
//Situation lor du dernier frame
if (this.Numero == 10)
{
if (this.Lancer1 == null)
@ -179,6 +182,7 @@ namespace BowlingLib.Model
if (quillesTombees == MAX_QUILLE)
{
this.IsStrike = true;
QuillesRestantes = MAX_QUILLE;
}
}
else if (this.Lancer2 == null)
@ -186,11 +190,14 @@ namespace BowlingLib.Model
this.Lancer2 = new Lancer(quillesTombees);
this.QuillesRestantes -= quillesTombees;
this.QuillesTombees += quillesTombees;
//lorsque le premier lancer est un strike
if (this.IsStrike)
{
if (quillesTombees == MAX_QUILLE)
{
//lorsque le lancer actuel est un strike
this.IsStrike = true;
QuillesRestantes = MAX_QUILLE;//Remetre le nombre de quilles restantes à 10 pour le lancer 2
}
else
{
@ -201,8 +208,9 @@ namespace BowlingLib.Model
{
if (quillesTombees + this.Lancer1.QuillesTombees == MAX_QUILLE)
{
//lorsque le lancer actuel est un spare
this.IsSpare = true;
QuillesRestantes = 10;
QuillesRestantes = MAX_QUILLE;//Remetre le nombre de quilles restantes à 10 pour le lancer 3
}
}
}
@ -211,22 +219,22 @@ namespace BowlingLib.Model
this.Lancer3 = new Lancer(quillesTombees);
this.QuillesRestantes -= quillesTombees;
this.QuillesTombees += quillesTombees;
if (this.IsStrike)
if (this.IsStrike)//si le deuxième lancer etait un strike
{
if (quillesTombees == MAX_QUILLE)
{
this.IsStrike = true;
this.IsStrike = true;//cas ou il effectue un 3eme strike
}
else
{
this.IsStrike = false;
}
}
else if (this.IsSpare)
else if (this.IsSpare)//si le deuxième lancer etait un spare
{
if (quillesTombees + this.Lancer2.QuillesTombees == MAX_QUILLE)
{
this.IsSpare = true;
this.IsSpare = true;//cas ou il effectue un 3eme spare
}
else
{
@ -271,7 +279,7 @@ namespace BowlingLib.Model
this.IsSpare = true;
}
}
if (this.QuillesRestantes == 0 || (this.Lancer2 != null && this.Numero != 10))
if (this.QuillesRestantes == 0 || (this.Lancer2 != null && this.Numero != 10) || (!IsStrike && !IsSpare && Numero == 10))
{
this.IsFinished = true;
}

@ -6,6 +6,9 @@ using System.Threading.Tasks;
namespace BowlingLib.Model
{
/// <summary>
/// Classe Model Joueur
/// </summary>
public class Joueur
{
private string pseudo;

@ -7,6 +7,9 @@ using System.Threading.Tasks;
namespace BowlingLib.Model
{
/// <summary>
/// Classe Model Partie
/// </summary>
public class Partie
{
public ReadOnlyCollection<Frame> Frames { get; }

@ -83,18 +83,18 @@ namespace BowlingMaping
using (var context = new BowlingContext())
{
PartieEntity entity = context.Parties.Find(name);
Joueur joueur = new Joueur(entity.Joueur.Id,entity.Joueur.Pseudo);
Joueur joueur = new Joueur(entity.Joueur.Id, entity.Joueur.Pseudo);
List<Frame> frames = new List<Frame>();
foreach (FrameEntity frameEntity in entity.Frames)
{
Frame frame = new Frame(frameEntity.Id, frameEntity.Numero, frameEntity.IsStrike, frameEntity.IsSpare,frameEntity.Lancer1,frameEntity.Lancer2,frameEntity.Lancer3);
Frame frame = new Frame(frameEntity.Id, frameEntity.Numero, frameEntity.Lancer1, frameEntity.Lancer2, frameEntity.Lancer3);
frames.Add(frame);
}
result = new Partie(entity.Id, joueur,frames, entity.Date, entity.Score);
result = new Partie(entity.Id, joueur, frames, entity.Date, entity.Score);
}
return result;
}
/// <summary>
/// Retourne Toutes les parties en base de donné
/// </summary>
@ -104,13 +104,13 @@ namespace BowlingMaping
List<Partie> result = new List<Partie>();
using (var context = new BowlingContext())
{
foreach (PartieEntity entity in context.Parties.OrderBy(item=>item.Date))
foreach (PartieEntity entity in context.Parties.OrderBy(item => item.Date))
{
Joueur joueur = new Joueur(entity.Joueur.Id, entity.Joueur.Pseudo);
List<Frame> frames = new List<Frame>();
foreach (FrameEntity frameEntity in entity.Frames)
{
Frame frame = new Frame(frameEntity.Id, frameEntity.Numero, frameEntity.IsStrike, frameEntity.IsSpare, frameEntity.Lancer1, frameEntity.Lancer2, frameEntity.Lancer3);
Frame frame = new Frame(frameEntity.Id, frameEntity.Numero, frameEntity.Lancer1, frameEntity.Lancer2, frameEntity.Lancer3);
frames.Add(frame);
}
result.Add(new Partie(entity.Id, joueur, frames, entity.Date, entity.Score));
@ -118,14 +118,14 @@ namespace BowlingMaping
}
return result;
}
public IEnumerable<Partie> GetAllWithDate(DateTime date)
{
List<Partie> result = new List<Partie>();
using (var context = new BowlingContext())
{
foreach (PartieEntity entity in context.Parties.OrderBy(item=>item.Date))
foreach (PartieEntity entity in context.Parties.OrderBy(item => item.Date))
{
if (entity.Date == date)
{
@ -133,7 +133,7 @@ namespace BowlingMaping
List<Frame> frames = new List<Frame>();
foreach (FrameEntity frameEntity in entity.Frames)
{
Frame frame = new Frame(frameEntity.Id, frameEntity.Numero, frameEntity.IsStrike, frameEntity.IsSpare, frameEntity.Lancer1, frameEntity.Lancer2, frameEntity.Lancer3);
Frame frame = new Frame(frameEntity.Id, frameEntity.Numero, frameEntity.Lancer1, frameEntity.Lancer2, frameEntity.Lancer3);
frames.Add(frame);
}
result.Add(new Partie(entity.Id, joueur, frames, entity.Date, entity.Score));

@ -160,5 +160,127 @@ namespace BowlingAppUnitTest
//Assert
Assert.Equal(90, score);
}
//le cas ou le joueur fait un strike au dernier lancer
[Fact]
public void TestGetScore5()
{
//Arrange
StubPartie stubPartie = new StubPartie();
IEnumerable<Partie> listParties = stubPartie.GetAll(1);
Partie partie = listParties.ElementAt(0);
partie.AddFrame(new Frame(1));
partie.AddFrame(new Frame(2));
partie.AddFrame(new Frame(3));
partie.AddFrame(new Frame(4));
partie.AddFrame(new Frame(5));
partie.AddFrame(new Frame(6));
partie.AddFrame(new Frame(7));
partie.AddFrame(new Frame(8));
partie.AddFrame(new Frame(9));
partie.AddFrame(new Frame(10));
for (int i = 0; i < partie.Frames.Count; i++)
{
if (i < 9)
{
partie.Frames[i].Lancer(5);
partie.Frames[i].Lancer(4);
continue;
}
partie.Frames[i].Lancer(10);
if (partie.Frames[i].IsStrike)
{
partie.Frames[i].Lancer(5);
partie.Frames[i].Lancer(4);
}
}
//Act
int? score = partie.GetScore();
//Assert
Assert.Equal(100, score);
}
//le cas ou le joueur fait un spare au deuxieme lancer du dernier frame
[Fact]
public void TestGetScore6()
{
//Arrange
StubPartie stubPartie = new StubPartie();
IEnumerable<Partie> listParties = stubPartie.GetAll(1);
Partie partie = listParties.ElementAt(0);
partie.AddFrame(new Frame(1));
partie.AddFrame(new Frame(2));
partie.AddFrame(new Frame(3));
partie.AddFrame(new Frame(4));
partie.AddFrame(new Frame(5));
partie.AddFrame(new Frame(6));
partie.AddFrame(new Frame(7));
partie.AddFrame(new Frame(8));
partie.AddFrame(new Frame(9));
partie.AddFrame(new Frame(10));
for (int i = 0; i < partie.Frames.Count; i++)
{
if (i < 9)
{
partie.Frames[i].Lancer(5);
partie.Frames[i].Lancer(4);
continue;
}
partie.Frames[i].Lancer(5);
partie.Frames[i].Lancer(5);
if (partie.Frames[i].IsSpare)
{
partie.Frames[i].Lancer(5);
}
}
//Act
int? score = partie.GetScore();
//Assert
Assert.Equal(96, score);
}
//le cas ou le nombre de lancer est atteind 2 eme frames
[Fact]
public void TestGetScore7()
{
//Arrange
StubPartie stubPartie = new StubPartie();
IEnumerable<Partie> listParties = stubPartie.GetAll(1);
Partie partie = listParties.ElementAt(0);
partie.AddFrame(new Frame(1));
partie.Frames[0].Lancer(5);
partie.Frames[0].Lancer(5);
Assert.Throws<ArgumentException>
(() => partie.Frames[0].Lancer(5));
}
//le cas ou les lancer sont finis
[Fact]
public void TestGetScore8()
{
//Arrange
StubPartie stubPartie = new StubPartie();
IEnumerable<Partie> listParties = stubPartie.GetAll(1);
Partie partie = listParties.ElementAt(0);
partie.AddFrame(new Frame(1));
partie.Frames[0].Lancer(5);
partie.Frames[0].Lancer(5);
Assert.True(partie.Frames[0].IsFinished);
}
}
}

@ -54,24 +54,22 @@ namespace Test.BowlingAppUnitTest
Assert.NotEqual(expectedPseudo, j.Pseudo);
}
// else
// {
// else
// {
// if (!isEqual)
// {
// Assert.NotEqual(expectedPseudo, j.Pseudo);
// }
if(isEqual)
{
Assert.Equal(expectedPseudo, j.Pseudo);
}
// if (!isEqual)
// {
// Assert.NotEqual(expectedPseudo, j.Pseudo);
// }
if (isEqual)
{
Assert.Equal(expectedPseudo, j.Pseudo);
}
}
//Test joueur avec stub
@ -93,8 +91,8 @@ namespace Test.BowlingAppUnitTest
//Compter le nombre de joueur dans un objet IEnumerable
Assert.Equal(0, stub.GetAll().Count());
}
[Fact]
public void TestUpdate()
{
@ -106,8 +104,9 @@ namespace Test.BowlingAppUnitTest
Assert.Equal("Augustin", stub.GetAll().First().Pseudo);
}
}
}

Loading…
Cancel
Save