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

Reviewed-on: #20
pull/27/head
Victor Perez NGOUNOU 3 years ago
commit 6f9c109d1a

@ -36,6 +36,11 @@ namespace BowlingLib.Model
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)
@ -80,6 +85,7 @@ namespace BowlingLib.Model
if (quillesTombees + this.Lancer1.QuillesTombees == 10)
{
this.IsSpare = true;
QuillesRestantes = 10;
}
}
}
@ -148,7 +154,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;
}

@ -13,24 +13,37 @@ namespace BowlingLib.Model
public List<Frame> Frames { get; set; }
/// <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 (Frames[i].IsStrike)
if (Frames[i].IsStrike && i < Frames.Count - 1)
{
score += Frames[i + 1].QuillesTombees;
if (Frames[i + 1].IsStrike && i < Frames.Count - 2)
@ -38,7 +51,7 @@ namespace BowlingLib.Model
score += Frames[i + 2].QuillesTombees;
}
}
else if (Frames[i].IsSpare)
else if (Frames[i].IsSpare && i < Frames.Count - 1)
{
score += Frames[i + 1].Lancer1.QuillesTombees;
}

@ -1,8 +1,28 @@
namespace BowlingStub
using BowlingLib.Model;
namespace BowlingStub
{
public class StubPartie
{
List<Partie> listParties = new List<Partie>();
public StubPartie()
{
}
//Fonction permettant de créer une partie pour chaque joueur
public List<Partie> ListParties(int n = 10)
{
for (int i = 0; i < n; i++)
{
listParties.Add(new Partie(new Joueur("Joueur " + i + 1)));
}
return listParties;
}
}
}

@ -0,0 +1,164 @@
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 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];
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));
partie.AddFrame(new Frame(11));
for (int i = 0; i < partie.Frames.Count; i++)
{
partie.Frames[i].Lancer(10);
}
//Act
int? score = partie.GetScore();
//Assert
Assert.Equal(300, score);
}
//le cas ou le joueur fait que des spares
[Fact]
public void TestGetScore2()
{
//Arrange
StubPartie stubPartie = new StubPartie();
List<Partie> listParties = stubPartie.ListParties();
Partie partie = listParties[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();
List<Partie> listParties = stubPartie.ListParties();
Partie partie = listParties[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();
List<Partie> listParties = stubPartie.ListParties();
Partie partie = listParties[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);
}
}
}
Loading…
Cancel
Save