OK [#26]
continuous-integration/drone/push Build is passing Details

pull/26/head
victor perez ngounou 3 years ago
commit 6970b3a196

@ -1,5 +1,5 @@
[![Build Status](https://codefirst.iut.uca.fr/api/badges/victor_perez.ngounou/BowlingScoreApp/status.svg)](https://codefirst.iut.uca.fr/victor_perez.ngounou/BowlingScoreApp)
[![Quality Gate Status](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=BowlingScoreApp&metric=alert_status)](https://codefirst.iut.uca.fr/sonar/dashboard?id=BowlingScoreApp)
[![Quality Gate Status](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=BowlingScoreApp&metric=alert_status&token=squ_8476cf8c9c3d3acdcf6042e2075498afbe697e52)](https://codefirst.iut.uca.fr/sonar/dashboard?id=BowlingScoreApp)
[![Bugs](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=BowlingScoreApp&metric=bugs)](https://codefirst.iut.uca.fr/sonar/dashboard?id=BowlingScoreApp)
[![Code Smells](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=BowlingScoreApp&metric=code_smells)](https://codefirst.iut.uca.fr/sonar/dashboard?id=BowlingScoreApp)
[![Coverage](https://codefirst.iut.uca.fr/sonar/api/project_badges/measure?project=BowlingScoreApp&metric=coverage)](https://codefirst.iut.uca.fr/sonar/dashboard?id=BowlingScoreApp)

@ -0,0 +1,18 @@
using BowlingLib.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingLib.Interface
{
public interface IDataManager<Data>
{
void Add(Data data);
void Delete(Data data);
void Update(Data data);
IEnumerable<Data> GetAll();
IEnumerable<Data> GetAll(int n, int j);
}
}

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -31,6 +32,9 @@ namespace BowlingLib.Model
// foreach (Joueur nouv in joueurs) AjouterJoueur(nouv);
}
public object Id { get; set; }
private int numero;
public Equipe(string nom)
{

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -8,34 +9,121 @@ namespace BowlingLib.Model
{
public class Frame
{
public int Numero { get; set; }
const int MAX_QUILLE = 10;
public int Numero {
get
{ return numero; }
set
{
this.numero = value;
}
}
private int numero;
public int QuillesRestantes { get; set; }
public int QuillesTombees { get; set; }
public int QuillesRestantes
{ get
{
return quillesRestantes;
}
set
{
this.quillesRestantes = value;
}
}
private int quillesRestantes;
public bool IsStrike { get; set; }
public int QuillesTombees
{
get
{
return quillesTombees;
}
set
{
this.quillesTombees = value;
}
}
private int quillesTombees;
public bool IsStrike {
get {
return isStrike;
}
set{
this.isStrike = value;
}
}
private bool isStrike;
public bool IsSpare { get; set; }
public bool IsSpare
{
get
{
return isPark;
}
set
{
this.isPark = value;
}
}
private bool isPark;
public bool IsFinished { get; set; }
public bool IsFinished
{
get
{
return isFinished;
}
set
{
this.isFinished = value;
}
public Lancer Lancer1 { get; set; }
}
private bool isFinished;
public Lancer Lancer2 { get; set; }
public Lancer Lancer1
{
get
{
return lancer1;
}
set
{
this.lancer1 = value;
}
}
private Lancer lancer1;
public Lancer Lancer3 { get; set; }
public Lancer Lancer2
{
get { return lancer2; }
set { this.lancer2 = value; }
}
private Lancer lancer2;
public Lancer Lancer3
{
get { return lancer3; }
set { this.lancer3 = value; }
}
private Lancer lancer3;
public Frame(int numero)
{
this.Numero = numero;
this.QuillesRestantes = 10;
this.QuillesRestantes = MAX_QUILLE;
this.IsFinished = false;
this.IsStrike = false;
this.IsSpare = false;
}
/// <summary>
/// Lance une quille
/// </summary>
/// <param name="quillesTombees">le nombre de quilles tombés </param>
/// <exception cref="ArgumentException"></exception>
public void Lancer(int quillesTombees)
{
if (quillesTombees > QuillesRestantes)
@ -54,7 +142,7 @@ namespace BowlingLib.Model
this.Lancer1 = new Lancer(quillesTombees);
this.QuillesRestantes -= quillesTombees;
this.QuillesTombees += quillesTombees;
if (quillesTombees == 10)
if (quillesTombees == MAX_QUILLE)
{
this.IsStrike = true;
}
@ -66,7 +154,7 @@ namespace BowlingLib.Model
this.QuillesTombees += quillesTombees;
if (this.IsStrike)
{
if (quillesTombees == 10)
if (quillesTombees == MAX_QUILLE)
{
this.IsStrike = true;
}
@ -77,9 +165,10 @@ namespace BowlingLib.Model
}
else
{
if (quillesTombees + this.Lancer1.QuillesTombees == 10)
if (quillesTombees + this.Lancer1.QuillesTombees == MAX_QUILLE)
{
this.IsSpare = true;
QuillesRestantes = 10;
}
}
}
@ -90,7 +179,7 @@ namespace BowlingLib.Model
this.QuillesTombees += quillesTombees;
if (this.IsStrike)
{
if (quillesTombees == 10)
if (quillesTombees == MAX_QUILLE)
{
this.IsStrike = true;
}
@ -101,7 +190,7 @@ namespace BowlingLib.Model
}
else if (this.IsSpare)
{
if (quillesTombees + this.Lancer2.QuillesTombees == 10)
if (quillesTombees + this.Lancer2.QuillesTombees == MAX_QUILLE)
{
this.IsSpare = true;
}
@ -112,7 +201,7 @@ namespace BowlingLib.Model
}
else
{
if (quillesTombees + this.Lancer2.QuillesTombees == 10)
if (quillesTombees + this.Lancer2.QuillesTombees == MAX_QUILLE)
{
this.IsSpare = true;
}
@ -139,7 +228,7 @@ namespace BowlingLib.Model
}
this.QuillesRestantes -= quillesTombees;
this.QuillesTombees += quillesTombees;
if (quillesTombees == 10)
if (quillesTombees == MAX_QUILLE)
{
this.IsStrike = true;
}
@ -148,7 +237,7 @@ namespace BowlingLib.Model
this.IsSpare = true;
}
}
if (this.QuillesRestantes == 0 || this.Lancer2 != null)
if (this.QuillesRestantes == 0 || (this.Lancer2 != null && this.Numero != 10))
{
this.IsFinished = true;
}

@ -11,20 +11,22 @@ namespace BowlingLib.Model
private string pseudo;
public Joueur(string pseudo)
{
if (pseudo == null || pseudo == "" || pseudo.Length < 3)
{
throw new ArgumentException("Le pseudo ne peut pas être vide");
}
this.pseudo = pseudo;
{
this.Pseudo = pseudo;
}
public string Pseudo
{
get { return pseudo; }
private set { pseudo = value; }
set
{
pseudo = value;
if (pseudo == null || pseudo == "" || pseudo.Length < 3)
{
throw new ArgumentException("Le pseudo ne peut pas être vide");
}
}
}
public override bool Equals(object obj)
@ -33,5 +35,6 @@ namespace BowlingLib.Model
pseudo == joueur.pseudo &&
Pseudo == joueur.Pseudo;
}
public int Id { get; set; }
}
}

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -10,10 +11,10 @@ namespace BowlingLib.Model
{
private int quillesTombees;
public int QuillesTombees
public int QuillesTombees
{
get { return quillesTombees; }
set
private set
{
if (value < 0 || value > 10)
{

@ -0,0 +1,147 @@
using BowlingLib.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BowlingLib.Model
{
public class Manager
{
public IDataManager<Joueur> joueurManager { get; private set; }
public IDataManager<Partie> partieManager { get; private set; }
public IDataManager<Equipe> equipeManager { get; private set; }
public Manager(IDataManager<Joueur> joueurManager)
{
this.joueurManager = joueurManager;
}
public Manager(IDataManager<Partie> partieManager)
{
this.partieManager = partieManager;
}
/// <summary>
/// Ajoute un joueur à la liste des joueurs
/// </summary>
/// <param name="equipeManager"></param>
public Manager(IDataManager<Equipe> equipeManager)
{
this.equipeManager = equipeManager;
}
/// <summary>
/// Ajoute un joueur à la liste des joueurs
/// </summary>
/// <param name="joueur"></param>
public void AddJoueur(Joueur joueur)
{
joueurManager.Add(joueur);
}
/// <summary>
/// Ajoute une partie à la liste des parties
/// </summary>
/// <param name="partie"></param>
public void AddPartie(Partie partie)
{
partieManager.Add(partie);
}
/// <summary>
/// Ajoute une équipe à la liste des équipes
/// </summary>
/// <param name="equipe"></param>
public void AddEquipe(Equipe equipe)
{
equipeManager.Add(equipe);
}
/// <summary>
/// Retourne la liste des joueurs
/// </summary>
/// <param name="joueur"></param>
public void DeleteJoueur(Joueur joueur)
{
joueurManager.Delete(joueur);
}
/// <summary>
/// Supprime une partie
/// </summary>
/// <param name="partie"></param>
public void DeletePartie(Partie partie)
{
partieManager.Delete(partie);
}
/// <summary>
/// Supprime une équipe
/// </summary>
/// <param name="equipe"></param>
public void DeleteEquipe(Equipe equipe)
{
equipeManager.Delete(equipe);
}
/// <summary>
/// Retourne la liste des joueurs
/// </summary>
/// <param name="joueur"></param>
public void UpdateJoueur(Joueur joueur)
{
joueurManager.Update(joueur);
}
/// <summary>
/// Met à jour une partie
/// </summary>
/// <param name="partie"></param>
public void UpdatePartie(Partie partie)
{
partieManager.Update(partie);
}
/// <summary>
/// Met à jour une équipe
/// </summary>
/// <param name="equipe"></param>
public void UpdateEquipe(Equipe equipe)
{
equipeManager.Update(equipe);
}
/// <summary>
/// Retourne la liste des joueurs
/// </summary>
/// <returns></returns>
public IEnumerable<Joueur> GetAllJoueur()
{
return joueurManager.GetAll();
}
/// <summary>
/// Retourne les dernières parties du joueur
/// </summary>
/// <returns></returns>
public IEnumerable<Partie> GetAllPartie()
{
return partieManager.GetAll();
}
/// <summary>
/// Retourne les Equipe d'une partie
/// </summary>
/// <returns></returns>
public IEnumerable<Equipe> GetAllEquipe()
{
return equipeManager.GetAll();
}
}
}

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -8,43 +9,54 @@ namespace BowlingLib.Model
{
public class Partie
{
//public ReadOnlyCollection<Frame> Frames;
public Joueur Joueur { get; private set; }
public object Id { get; set; }
public Joueur Joueur { get; set; }
public List<Frame> Frames { get; set; }
public List<Frame> Frames;
/// <summary>
/// Constructeur
/// </summary>
/// <param name="joueur"></param>
public Partie(Joueur joueur)
{
this.Joueur = joueur;
Frames = new List<Frame>();
}
/// <summary>
/// Ajoute un frame à la partie
/// </summary>
/// <param name="frame"></param>
public void AddFrame(Frame frame)
{
Frames.Add(frame);
}
/// <summary>
/// Calcule le score de la partie
/// </summary>
/// <returns>le Score d'une partie</returns>
public int? GetScore()
{
int? score = 0;
for (int i = 0; i < Frames.Count; i++)
{
score += Frames[i].QuillesTombees;
if (i<Frames.Count-1)
if (Frames[i].IsStrike && i < Frames.Count - 1)
{
if (Frames[i].IsStrike)
{
score += Frames[i + 1].QuillesTombees;
if (Frames[i + 1].IsStrike && i < Frames.Count - 2)
{
score += Frames[i + 2].QuillesTombees;
}
}
else if (Frames[i].IsSpare)
score += Frames[i + 1].QuillesTombees;
if (Frames[i + 1].IsStrike && i < Frames.Count - 2)
{
score += Frames[i + 1].Lancer1.QuillesTombees;
score += Frames[i + 2].QuillesTombees;
}
}
else if (Frames[i].IsSpare && i < Frames.Count - 1)
{
score += Frames[i + 1].Lancer1.QuillesTombees;
}
}
return score;
}

@ -1,26 +1,49 @@
using BowlingLib.Model;
using BowlingLib.Interface;
using System;
public class StubEquipe
public class StubEquipe:IDataManager<Equipe>
{
private List<Equipe> listEquipes = new List<Equipe>();
public StubEquipe()
{
}
public List<Equipe> ListEquipes(int n = 10, int j = 2)
{
for (int i = 0; i < n; i++)
{
listEquipes.Add(new Equipe("Equipe " + i + 1));
for(int k = 0; k < j; k++)
private List<Equipe> listEquipes = new List<Equipe>();
public StubEquipe()
{
}
public void Add(Equipe data)
{
listEquipes.Add(data);
}
public void Delete(Equipe data)
{
listEquipes.Remove(data);
}
public IEnumerable<Equipe> GetAll(int n = 10, int j = 2)
{
for (int i = 0; i < n; i++)
{
this.Add(new Equipe("Equipe " + i + 1));
for (int k = 0; k < j; k++)
{
listEquipes.ElementAt(i).AjouterJoueur(new Joueur("Joueur " + i + 1 + "-" + k + 1));
listEquipes.ElementAt(i).AjouterJoueur(new Joueur("Joueur " + i + 1 + "-" + k + 1));
}
}
return listEquipes;
}
}
}
public IEnumerable<Equipe> GetAll()
{
return listEquipes;
}
//mise à jour d'une équipe
public void Update(Equipe data)
{
int index = listEquipes.FindIndex(x => x.Id == data.Id);
listEquipes[index] = data;
}
}

@ -1,20 +1,41 @@
using BowlingLib.Model;
using BowlingLib.Interface;
using System;
public class StubJoueur
public class StubJoueur : IDataManager<Joueur>
{
private List<Joueur> listJoueurs = new List<Joueur>();
public StubJoueur()
{
}
private List<Joueur> listJoueurs = new List<Joueur>();
public void Add(Joueur data)
{
listJoueurs.Add(data);
}
public void Delete(Joueur data)
{
listJoueurs.Remove(data);
}
public List<Joueur> ListJoueurs(int n = 10)
public IEnumerable<Joueur> GetAll()
{
for (int i = 0; i < n; i++)
return listJoueurs;
}
public IEnumerable<Joueur> GetAll(int n=10, int j=0)
{
for (int i = 0; i < n; i++)
{
listJoueurs.Add(new Joueur("Joueur " + i + 1));
}
Add(new Joueur("Joueur " + i + 1));
}
return listJoueurs;
}
public void Update(Joueur data)
{
int index = listJoueurs.FindIndex(x => x.Id == data.Id);
listJoueurs[index] = data;
}
}

@ -1,18 +1,28 @@
using BowlingLib.Model;
using BowlingLib.Interface;
namespace BowlingStub
{
public class StubPartie
public class StubPartie:IDataManager<Partie>
{
List<Partie> listParties = new List<Partie>();
public StubPartie()
private List<Partie> listParties = new List<Partie>();
public void Add(Partie data)
{
listParties.Add(data);
}
public void Delete(Partie data)
{
listParties.Remove(data);
}
public IEnumerable<Partie> GetAll()
{
return listParties;
}
//Fonction permettant de créer une partie pour chaque joueur
public List<Partie> ListParties(int n = 10)
public IEnumerable<Partie> GetAll(int n=10, int j=0)
{
for (int i = 0; i < n; i++)
{
@ -20,9 +30,12 @@ namespace BowlingStub
}
return listParties;
}
public void Update(Partie data)
{
int index = listParties.FindIndex(x => x.Id == data.Id);
listParties[index] = data;
}
}
}

@ -0,0 +1,62 @@
using BowlingLib.Model;
using BowlingStub;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
namespace BowlingAppUnitTest
{
public class UTManager
{
//test de la méthode AddJoueur using MemberData
[Fact]
public void TestAddJoueur() //Test de la méthode AddJoueur
{
//Arrange
Joueur joueur = new Joueur("Pierre");
Manager manager = new Manager(new StubJoueur());
//Act
manager.AddJoueur(joueur);
//Assert
Assert.Single(manager.joueurManager.GetAll());
}
//Test de la méthode AddPartie
[Fact]
public void TestAddPartie() //Test de la méthode AddPartie
{
//Arrange
Partie partie = new Partie(new Joueur("Pierre"));
Manager manager = new Manager(new StubPartie());
//Act
manager.AddPartie(partie);
//Assert
Assert.Single(manager.partieManager.GetAll());
}
//Test de la méthode AddEquipe
//[Fact]
//public void TestAddEquipe() //Test de la méthode AddEquipe
//{
// //Arrange
// Equipe equipe = new Equipe("Equipe 1");
// Manager manager = new Manager(new StubEquipe());
// //Act
// manager.AddEquipe(equipe);
// //Assert
// Assert.Single(manager.equipeManager.GetAll());
//}
}
}

@ -11,13 +11,14 @@ namespace BowlingAppUnitTest
{
public class UTPartie
{
//le cas ou le joueur ne fait que des strikes
[Fact]
public void TestGetScore()
{
//Arrange
StubPartie stubPartie = new StubPartie();
List<Partie> listParties = stubPartie.ListParties();
Partie partie = listParties[0];
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));
@ -28,7 +29,7 @@ namespace BowlingAppUnitTest
partie.AddFrame(new Frame(8));
partie.AddFrame(new Frame(9));
partie.AddFrame(new Frame(10));
partie.AddFrame(new Frame(10));
partie.AddFrame(new Frame(11));
for (int i = 0; i < partie.Frames.Count; i++)
{
@ -41,5 +42,123 @@ namespace BowlingAppUnitTest
//Assert
Assert.Equal(300, score);
}
//le cas ou le joueur fait que des spares
[Fact]
public void TestGetScore2()
{
//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++)
{
partie.Frames[i].Lancer(5);
partie.Frames[i].Lancer(5);
if (i == 9)
{
partie.Frames[i].Lancer(5);
}
}
//Act
int? score = partie.GetScore();
//Assert
Assert.Equal(150, score);
}
//le cas ou le joueur fait que des spares et des strikes
[Fact]
public void TestGetScore3()
{
//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 % 2 == 0)
{
partie.Frames[i].Lancer(10);
}
else
{
partie.Frames[i].Lancer(5);
partie.Frames[i].Lancer(5);
if (i==9)
{
partie.Frames[i].Lancer(5);
}
}
}
//Act
int? score = partie.GetScore();
//Assert
Assert.Equal(200, score);
}
//le cas ou le joueur ne fait aucun strike ou spare
[Fact]
public void TestGetScore4()
{
//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++)
{
partie.Frames[i].Lancer(5);
partie.Frames[i].Lancer(4);
}
//Act
int? score = partie.GetScore();
//Assert
Assert.Equal(90, score);
}
}
}

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BowlingLib.Model;
using Xunit;
@ -75,7 +76,33 @@ namespace Test.BowlingAppUnitTest
public void TestJoueurStub()
{
StubJoueur stub = new StubJoueur();
Assert.Equal(10, stub.ListJoueurs(10).Count);
Assert.Equal(10, stub.GetAll(10).Count());
}
//tester la methode remove
[Fact]
public void TestRemove()
{
StubJoueur stub = new StubJoueur();
stub.Add(j);
stub.Delete(j);
//Compter le nombre de joueur dans un objet IEnumerable
Assert.Equal(0, stub.GetAll().Count());
}
//tester la methode update avec les members Data
[Fact]
public void TestUpdate()
{
StubJoueur stub = new StubJoueur();
Joueur j = new Joueur("Paul");
stub.Add(j);
j.Pseudo = "Augustin";
stub.Update(j);
Assert.Equal("Augustin", stub.GetAll().First().Pseudo);
}
}
}

Loading…
Cancel
Save