Correction code smells et tests unitaires
continuous-integration/drone/push Build is passing Details

master
Céleste BARBOSA 11 months ago
parent 70d57a6e85
commit de465e76c2

@ -1,11 +1,10 @@
using CoreLibrary.Joueurs; using CoreLibrary.Joueurs;
using CoreLibrary.Regles;
namespace CoreLibrary.Manager namespace CoreLibrary.Manager
{ {
public class Manager : IDisposable public class Manager : IDisposable
{ {
IPersistanceManager persistance; private readonly IPersistanceManager persistance;
private readonly IEnumerable<Joueur> joueurs; private readonly IEnumerable<Joueur> joueurs;
public IEnumerable<Joueur> Joueurs => joueurs; public IEnumerable<Joueur> Joueurs => joueurs;
@ -19,6 +18,8 @@ namespace CoreLibrary.Manager
public void Dispose() public void Dispose()
{ {
persistance.Enregistrer(joueurs); persistance.Enregistrer(joueurs);
GC.SuppressFinalize(this);
} }
} }
} }

@ -0,0 +1,23 @@
using CoreLibrary.Events;
using CoreLibrary.Joueurs;
using Xunit;
namespace UnitTesting
{
public class JoueurBuilderUT
{
[Fact]
public void JoueurBuilderTest()
{
string nom = "Céleste";
string? nomEvenement = "";
JoueurBuilder builder = new JoueurBuilder();
builder.ConstruireJoueur += (Object? sender, ConstruireJoueurEventArgs e) => nomEvenement = e.Nom;
builder.Nom(nom);
Assert.Equal(nom, nomEvenement);
}
}
}

@ -1,4 +1,5 @@
using CoreLibrary.Core; using CoreLibrary.Core;
using CoreLibrary.Events;
using CoreLibrary.Joueurs; using CoreLibrary.Joueurs;
using Xunit; using Xunit;
@ -40,5 +41,19 @@ namespace UnitTesting
Assert.Equal(nbPartiePerdue, joueur.NbPartiePerdue); Assert.Equal(nbPartiePerdue, joueur.NbPartiePerdue);
} }
[Fact]
public void TestEvenement()
{
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.JAUNE), new Jeton(Couleur.VERT)]);
Code? codeEvenement = null;
Joueur j = new Joueur("Céleste");
j.JouerCode += (Object? sender, JouerCodeEventArgs e) => codeEvenement = e.Code;
j.Code(code);
Assert.NotNull(codeEvenement);
Assert.Equal(code, codeEvenement);
}
} }
} }

@ -0,0 +1,16 @@
using CoreLibrary.Manager;
using Xunit;
namespace UnitTesting
{
public class ManagerUT
{
[Fact]
public void TestConstruteur()
{
Manager manager = new Manager(new Stub());
Assert.NotNull(manager.Joueurs);
Assert.NotEmpty(manager.Joueurs);
}
}
}

@ -16,6 +16,25 @@ namespace UnitTesting
Assert.Equal("Règles classiques", new ReglesClassiques().Nom); Assert.Equal("Règles classiques", new ReglesClassiques().Nom);
} }
[Fact]
public void TestNbJoueur()
{
ReglesClassiques regles = new ReglesClassiques();
Assert.Equal(0, regles.NbJoueurs);
regles.AjouterJoueur("Bonjour");
Assert.Equal(1, regles.NbJoueurs);
regles.AjouterJoueur("Bonsoir");
Assert.Equal(2, regles.NbJoueurs);
}
[Fact]
public void GenererCode()
{
ReglesClassiques regles = new ReglesClassiques();
Assert.Equal(new Code(4).NbJetons, regles.GenererCode().NbJetons);
Assert.Equal(4, regles.GenererCode().TailleMaximale());
}
[Fact] [Fact]
public void TestJoueurCourantPartieNonCommencee() public void TestJoueurCourantPartieNonCommencee()
{ {
@ -145,5 +164,93 @@ namespace UnitTesting
Assert.Single(gagnants); Assert.Single(gagnants);
Assert.Contains(regles.JoueurCourant().Item1, gagnants); Assert.Contains(regles.JoueurCourant().Item1, gagnants);
} }
[Fact]
public void TestPerdants()
{
ReglesClassiques regles = new ReglesClassiques();
Partie partie = new Partie(regles);
regles.AjouterJoueur("joueur1");
regles.AjouterJoueur("joueur2");
regles.CommencerLaPartie();
Plateau plateauj1 = regles.JoueurCourant().Item2;
Type type = typeof(Plateau);
FieldInfo? fieldInfo = type.GetField("codeSecret", BindingFlags.NonPublic | BindingFlags.Instance);
Assert.NotNull(fieldInfo);
Code? codeSecret = (Code?)fieldInfo.GetValue(plateauj1);
Assert.NotNull(codeSecret);
regles.JoueurCourant().Item2.AjouterCode(codeSecret);
regles.PasserLaMain();
IEnumerable<Joueur> perdants = regles.Perdants();
Assert.Single(perdants);
Assert.Contains(regles.JoueurCourant().Item1, perdants);
}
[Fact]
public void EstTermineeMaxTour()
{
ReglesClassiques regles = new ReglesClassiques();
regles.AjouterJoueur("1");
regles.AjouterJoueur("2");
regles.CommencerLaPartie();
for (int i = 0; i < 24; ++i)
{
Plateau plateau = regles.JoueurCourant().Item2;
Code code = new Code(4);
code.AjouterJeton(new Jeton(Couleur.ROUGE));
code.AjouterJeton(new Jeton(Couleur.ROUGE));
code.AjouterJeton(new Jeton(Couleur.ROUGE));
code.AjouterJeton(new Jeton(Couleur.ROUGE));
plateau.AjouterCode(code);
regles.PasserLaMain();
}
Assert.True(regles.EstTerminee());
}
[Fact]
public void EstTermineeNon()
{
ReglesClassiques regles = new ReglesClassiques();
regles.AjouterJoueur("1");
regles.AjouterJoueur("2");
regles.CommencerLaPartie();
for (int i = 0; i < 12; ++i)
regles.PasserLaMain();
Assert.False(regles.EstTerminee());
}
[Fact]
public void EstTermineeCodeTrouve()
{
ReglesClassiques regles = new ReglesClassiques();
regles.AjouterJoueur("1");
regles.AjouterJoueur("2");
regles.CommencerLaPartie();
Plateau plateauj1 = regles.JoueurCourant().Item2;
Type type = typeof(Plateau);
FieldInfo? fieldInfo = type.GetField("codeSecret", BindingFlags.NonPublic | BindingFlags.Instance);
Assert.NotNull(fieldInfo);
Code? codeSecret = (Code?)fieldInfo.GetValue(plateauj1);
Assert.NotNull(codeSecret);
regles.JoueurCourant().Item2.AjouterCode(codeSecret);
Assert.True(regles.EstTerminee());
}
} }
} }

@ -0,0 +1,21 @@
using CoreLibrary.Manager;
using Xunit;
namespace UnitTesting
{
public class StubUT
{
[Fact]
public void ChargerTest()
{
Assert.NotEmpty(new Stub().Charger());
}
[Fact]
public void EnregistrerTest()
{
new Stub().Enregistrer([]);
}
}
}
Loading…
Cancel
Save