Reprise des tests unitaires
continuous-integration/drone/push Build is failing Details

master
Pauline PRADY 11 months ago
parent f7f4e0c3cb
commit 28fca8d70b

@ -1,20 +0,0 @@
using CoreLibrary.Core;
using CoreLibrary.Evenements;
using Xunit;
namespace UnitTesting
{
public class AjouterCodeEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
Code monCode = new Code([new Jeton(Couleur.VERT), new Jeton(Couleur.BLEU)]);
AjouterCodeEventArgs evenement = new AjouterCodeEventArgs(monCode);
Assert.Equal(monCode, evenement.Code);
}
}
}

@ -1,21 +0,0 @@
using CoreLibrary.Core;
using CoreLibrary.Evenements;
using CoreLibrary.Joueurs;
using Xunit;
namespace UnitTesting
{
public class AjouterJoueurEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
Joueur monJoueur = new Joueur("Céleste");
AjouterJoueurEventArgs evenement = new AjouterJoueurEventArgs(monJoueur);
Assert.Equal(monJoueur, evenement.Joueur);
}
}
}

@ -1,5 +1,6 @@
using CoreLibrary.Core; using CoreLibrary.Core;
using CoreLibrary.Exceptions; using CoreLibrary.Exceptions;
using System.Collections.ObjectModel;
using Xunit; using Xunit;
namespace UnitTesting namespace UnitTesting
@ -12,7 +13,9 @@ namespace UnitTesting
Code code = new Code(4); Code code = new Code(4);
Assert.NotNull(code); Assert.NotNull(code);
Assert.Empty(code.Jetons); Assert.Empty(code.Jetons);
Assert.Equal(0, code.NbJetons); Assert.Equal(0, code.Taille);
Assert.False(code.Complet);
Assert.True(code.Vide);
} }
[Fact] [Fact]
@ -22,46 +25,35 @@ namespace UnitTesting
Assert.Throws<TailleCodeException>(() => new Code(-1)); Assert.Throws<TailleCodeException>(() => new Code(-1));
} }
[Fact]
public void TestDeuxiemeConstructeurValide()
{
Jeton[] jetons = [new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLEU)];
Code code = new Code(jetons);
Assert.NotNull(code);
Assert.Equal(3, code.Jetons.Count());
Assert.Equal(3, code.NbJetons);
}
[Fact]
public void TestDeuxiemeConstructeurInvalide()
{
Assert.Throws<TailleCodeException>(() => new Code([]));
}
[Fact] [Fact]
public void TestAjouterJetonValide() public void TestAjouterJetonValide()
{ {
Jeton jeton = new Jeton(Couleur.JAUNE); Jeton jeton = new Jeton(Couleur.Jaune);
Code code = new Code(3); Code code = new Code(3);
code.AjouterJeton(jeton); code.AjouterJeton(jeton);
Assert.Equal(1, code.NbJetons); Assert.Equal(1, code.Taille);
Assert.Equal(jeton, code.Jetons.ElementAt(0)); Assert.Equal(jeton, code.Jetons.ElementAt(0));
} }
[Fact] [Fact]
public void TestAjouterJetonInvalide() public void TestAjouterJetonInvalide()
{ {
Code code = new Code([new Jeton(Couleur.NOIR)]); Jeton jeton = new Jeton(Couleur.Jaune);
Assert.Throws<CodeCompletException>(() => code.AjouterJeton(new Jeton(Couleur.ROUGE))); Code code = new Code(3);
code.AjouterJeton(jeton);
Assert.Throws<CodeCompletException>(() => code.AjouterJeton(new Jeton(Couleur.Rouge)));
} }
[Fact] [Fact]
public void TestSupprimerDernierJetonValide() public void TestSupprimerDernierJetonValide()
{ {
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]); Jeton jeton = new Jeton(Couleur.Rouge);
Code code = new Code(3);
code.AjouterJeton(jeton);
code.AjouterJeton(jeton);
code.AjouterJeton(jeton);
code.SupprimerDernierJeton(); code.SupprimerDernierJeton();
Assert.Equal(2, code.NbJetons); Assert.Equal(2, code.Taille);
} }
[Fact] [Fact]
@ -74,8 +66,12 @@ namespace UnitTesting
[Fact] [Fact]
public void TestRecupererJetonValide() public void TestRecupererJetonValide()
{ {
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]); Jeton jeton1 = new Jeton(Couleur.Rouge);
Jeton jetonAttendu = new Jeton(Couleur.BLEU); Jeton jeton2 = new Jeton(Couleur.Bleu);
Code code = new Code(3);
code.AjouterJeton(jeton1);
code.AjouterJeton(jeton2);
Jeton jetonAttendu = new Jeton(Couleur.Bleu);
Jeton jeton = code.RecupererJeton(1); Jeton jeton = code.RecupererJeton(1);
Assert.Equal(jetonAttendu.Couleur, jeton.Couleur); Assert.Equal(jetonAttendu.Couleur, jeton.Couleur);
} }
@ -98,16 +94,19 @@ namespace UnitTesting
[Fact] [Fact]
public void TestJetonsValide() public void TestJetonsValide()
{ {
Jeton[] jetonsAttendus = [new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLEU)]; Jeton[] jetonsAttendus = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Bleu)];
Code code = new Code(jetonsAttendus); Code code = new Code(3);
IEnumerable<Jeton?> lesJetons = code.Jetons; code.AjouterJeton(jetonsAttendus[0]);
code.AjouterJeton(jetonsAttendus[1]);
code.AjouterJeton(jetonsAttendus[2]);
ObservableCollection<Jeton> lesJetons = code.Jetons;
Assert.Equal(jetonsAttendus.Length, lesJetons.Count()); Assert.Equal(jetonsAttendus.Length, lesJetons.Count());
int index = 0; int index = 0;
foreach (Jeton jetonAttendu in jetonsAttendus) foreach (Jeton jetonAttendu in jetonsAttendus)
{ {
Assert.Equal(jetonAttendu.Couleur, lesJetons.ElementAt(index)?.Couleur); Assert.Equal(jetonAttendu.Couleur, lesJetons.ElementAt(index).Couleur);
index++; index++;
} }
} }
@ -115,8 +114,12 @@ namespace UnitTesting
[Fact] [Fact]
public void TestEstCompletValide() public void TestEstCompletValide()
{ {
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]); Jeton[] jetons = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Blanc)];
bool estComplet = code.EstComplet(); Code code = new Code(3);
code.AjouterJeton(jetons[0]);
code.AjouterJeton(jetons[1]);
code.AjouterJeton(jetons[2]);
bool estComplet = code.Complet;
Assert.True(estComplet); Assert.True(estComplet);
} }
@ -124,16 +127,19 @@ namespace UnitTesting
public void TestEstCompletInvalide() public void TestEstCompletInvalide()
{ {
Code code = new Code(3); Code code = new Code(3);
bool estComplet = code.EstComplet(); bool estComplet = code.Complet;
Assert.False(estComplet); Assert.False(estComplet);
} }
[Fact] [Fact]
public void TestTailleMaximaleValide() public void TestTailleMaximaleValide()
{ {
Jeton[] jetons = [new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLEU)]; Jeton[] jetons = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Bleu)];
Code code = new Code(jetons); Code code = new Code(3);
int tailleMaximale = code.NbJetonsMax; code.AjouterJeton(jetons[0]);
code.AjouterJeton(jetons[1]);
code.AjouterJeton(jetons[2]);
int tailleMaximale = code.TailleMax;
Assert.Equal(jetons.Length, tailleMaximale); Assert.Equal(jetons.Length, tailleMaximale);
} }
@ -141,81 +147,71 @@ namespace UnitTesting
[Fact] [Fact]
public void TestComparerValide() public void TestComparerValide()
{ {
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]); Jeton[] jetons1 = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Blanc)];
Code autreCode = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]); Code code1 = new Code(3);
code1.AjouterJeton(jetons1[0]);
code1.AjouterJeton(jetons1[1]);
code1.AjouterJeton(jetons1[2]);
Jeton[] jetons2 = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Blanc)];
Code code2 = new Code(3);
code2.AjouterJeton(jetons2[0]);
code2.AjouterJeton(jetons2[1]);
code2.AjouterJeton(jetons2[2]);
IEnumerable<Indicateur> indicateurs = code.Comparer(autreCode); IReadOnlyList<Indicateur> indicateurs = code1.Comparer(code2);
Assert.Equal(3, indicateurs.Count()); Assert.Equal(3, indicateurs.Count());
Assert.Contains(Indicateur.BONNEPLACE, indicateurs);
Assert.DoesNotContain(Indicateur.BONNECOULEUR, indicateurs);
} }
[Fact] [Fact]
public void TestComparerBonnePlace() public void TestComparerDifferent()
{ {
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]); Jeton[] jetons1 = [new Jeton(Couleur.Noir), new Jeton(Couleur.Jaune), new Jeton(Couleur.Vert)];
Code autreCode = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.NOIR)]); Code code1 = new Code(3);
code1.AjouterJeton(jetons1[0]);
IEnumerable<Indicateur> indicateurs = code.Comparer(autreCode); code1.AjouterJeton(jetons1[1]);
code1.AjouterJeton(jetons1[2]);
Assert.Equal(2, indicateurs.Count());
Assert.Contains(Indicateur.BONNEPLACE, indicateurs);
Assert.DoesNotContain(Indicateur.BONNECOULEUR, indicateurs);
}
[Fact] Jeton[] jetons2 = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Blanc)];
public void TestComparerBonneCouleur() Code code2 = new Code(3);
{ code2.AjouterJeton(jetons2[0]);
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]); code2.AjouterJeton(jetons2[1]);
Code autreCode = new Code([new Jeton(Couleur.BLEU), new Jeton(Couleur.ROUGE), new Jeton(Couleur.NOIR)]); code2.AjouterJeton(jetons2[2]);
IEnumerable<Indicateur> indicateurs = code.Comparer(autreCode); IReadOnlyList<Indicateur> indicateurs = code1.Comparer(code2);
Assert.Equal(2, indicateurs.Count()); Assert.Empty(indicateurs);
Assert.Contains(Indicateur.BONNECOULEUR, indicateurs);
Assert.DoesNotContain(Indicateur.BONNEPLACE, indicateurs);
} }
[Fact] [Fact]
public void TestComparerBonnePlaceEtCouleur() public void TestComparerMonCodeIncomplet()
{ {
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]); Code code1 = new Code(3);
Code autreCode = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLANC), new Jeton(Couleur.BLEU)]);
IEnumerable<Indicateur> indicateurs = code.Comparer(autreCode);
Assert.Equal(3, indicateurs.Count()); Jeton[] jetons2 = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Blanc)];
Assert.Contains(Indicateur.BONNEPLACE, indicateurs); Code code2 = new Code(3);
Assert.Contains(Indicateur.BONNECOULEUR, indicateurs); code2.AjouterJeton(jetons2[0]);
} code2.AjouterJeton(jetons2[1]);
code2.AjouterJeton(jetons2[2]);
[Fact] IEnumerable<Indicateur> indicateurs = code1.Comparer(code2);
public void TestComparerDifferent()
{
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]);
Code autreCode = new Code([new Jeton(Couleur.VERT), new Jeton(Couleur.JAUNE), new Jeton(Couleur.NOIR)]);
IEnumerable<Indicateur> indicateurs = code.Comparer(autreCode);
Assert.Empty(indicateurs); Assert.Empty(indicateurs);
} }
[Fact] [Fact]
public void TestComparerMonCodeIncomplet() public void TestComparerSonCodeIncomplet()
{ {
Code code = new Code(3); Jeton[] jetons1 = [new Jeton(Couleur.Noir), new Jeton(Couleur.Jaune), new Jeton(Couleur.Vert)];
Code autreCode = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]); Code code1 = new Code(3);
IEnumerable<Indicateur> indicateurs = code.Comparer(autreCode); code1.AjouterJeton(jetons1[0]);
code1.AjouterJeton(jetons1[1]);
code1.AjouterJeton(jetons1[2]);
Assert.Empty(indicateurs); Code code2 = new Code(3);
}
[Fact] IReadOnlyList<Indicateur> indicateurs = code1.Comparer(code2);
public void TestComparerSonCodeIncomplet()
{
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC)]);
Code autreCode = new Code(3);
IEnumerable<Indicateur> indicateurs = code.Comparer(autreCode);
Assert.Empty(indicateurs); Assert.Empty(indicateurs);
} }

@ -1,20 +0,0 @@
using CoreLibrary.Core;
using CoreLibrary.Evenements;
using Xunit;
namespace UnitTesting
{
public class ConstruireJoueurEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
ConstruireJoueurEventArgs evenement = new ConstruireJoueurEventArgs("Bonjour");
ConstruireJoueurEventArgs evenement2 = new ConstruireJoueurEventArgs(null);
Assert.Equal("Bonjour", evenement.Nom);
Assert.Null(evenement2.Nom);
}
}
}

@ -9,12 +9,12 @@ namespace UnitTesting
[Fact] [Fact]
public void TestConstructeurValide() public void TestConstructeurValide()
{ {
JoueurBuilder joueurBuilder = new JoueurBuilder(); Joueur joueur = new Joueur();
int indice = 15; int indice = 15;
DemanderJoueurEventArgs evenement = new DemanderJoueurEventArgs(indice, joueurBuilder); PartieDemanderJoueurEventArgs evenement = new PartieDemanderJoueurEventArgs(indice, joueur);
Assert.Equal(joueurBuilder, evenement.JoueurBuilder); Assert.Equal(joueur, evenement.JoueurDemande);
Assert.Equal(indice, evenement.Indice); Assert.Equal(indice, evenement.Indice);
} }

@ -1,19 +0,0 @@
using CoreLibrary.Core;
using CoreLibrary.Evenements;
using Xunit;
namespace UnitTesting
{
public class JouerCodeEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
Code monCode = new Code([new Jeton(Couleur.VERT), new Jeton(Couleur.BLEU)]);
JouerCodeEventArgs evenement = new JouerCodeEventArgs(monCode);
Assert.Equal(monCode, evenement.Code);
}
}
}

@ -1,50 +0,0 @@
using CoreLibrary.Core;
using CoreLibrary.Evenements;
using CoreLibrary.Joueurs;
using System.Reflection;
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);
}
[Fact]
public void JoueurBuilderQuandConstruireJoueur()
{
string nom = "Céleste";
string? nomEvenement = "";
JoueurBuilder builder = new JoueurBuilder();
builder.ConstruireJoueur += (Object? sender, ConstruireJoueurEventArgs e) => nomEvenement = e.Nom;
Type type = typeof(JoueurBuilder);
MethodInfo? methodInfo = type.GetMethod("QuandConstruireJoueur", BindingFlags.NonPublic | BindingFlags.Instance);
Assert.NotNull(methodInfo);
methodInfo.Invoke(builder, [nom]);
Assert.Equal(nom, nomEvenement);
}
[Fact]
public void JoueurBuilderQuandConstruireJoueurSansBranchement()
{
JoueurBuilder builder = new JoueurBuilder();
Assert.Null(Record.Exception(() => builder.Nom("Pauline")));
}
}
}

@ -11,86 +11,27 @@ namespace UnitTesting
[Fact] [Fact]
public void TestConstructeur1Valide() public void TestConstructeur1Valide()
{ {
string nom = "toto"; string nom = "";
Joueur joueur = new Joueur(nom); Joueur joueur = new Joueur();
Assert.Equal(nom, joueur.Nom); Assert.Equal(nom, joueur.Nom);
Assert.Equal(0, joueur.NbCoutTotal); Assert.False(joueur.EstConnecte);
Assert.Equal(0, joueur.NbPartieGagnee);
Assert.Equal(0, joueur.NbPartieEgalite);
Assert.Equal(0, joueur.NbPartiePerdue);
} }
[Fact] [Fact]
public void TestConstructeur2Valide() public void TestConstructeur2Valide()
{ {
string nom = "Bob"; string nom = "toto";
int nbCoutTotal = 10;
int nbPartieGagnee = 5;
int nbPartieEgalite = 2;
int nbPartiePerdue = 3;
Joueur joueur = new Joueur(nom, nbCoutTotal, nbPartieGagnee, nbPartieEgalite, nbPartiePerdue);
Assert.Equal(nom, joueur.Nom);
Assert.Equal(nbCoutTotal, joueur.NbCoutTotal);
Assert.Equal(nbPartieGagnee, joueur.NbPartieGagnee);
Assert.Equal(nbPartieEgalite, joueur.NbPartieEgalite);
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);
}
[Fact]
public void JoueurQuandJouerCode()
{
Code code = new Code(4);
code.AjouterJeton(new Jeton(Couleur.Rouge));
code.AjouterJeton(new Jeton(Couleur.Blanc));
code.AjouterJeton(new Jeton(Couleur.Blanc));
code.AjouterJeton(new Jeton(Couleur.Noir));
Code? codeEvenement = null;
Joueur joueur = new Joueur("Céleste"); Joueur joueur = new Joueur(nom);
joueur.JouerCode += (Object? sender, JouerCodeEventArgs e) => codeEvenement = e.Code;
Type type = typeof(Joueur);
MethodInfo? methodInfo = type.GetMethod("QuandJouerCode", BindingFlags.NonPublic | BindingFlags.Instance);
Assert.NotNull(methodInfo);
methodInfo.Invoke(joueur, [code]);
Assert.NotNull(codeEvenement); Assert.Equal(nom, joueur.Nom);
Assert.Equal(code, codeEvenement); Assert.False(joueur.EstConnecte);
} }
[Fact]
public void JoueurQuandJouerCodeSansBranchement()
{
Joueur joueur = new Joueur("Pauline");
Code code = new Code(4);
code.AjouterJeton(new Jeton(Couleur.ROUGE));
code.AjouterJeton(new Jeton(Couleur.BLANC));
code.AjouterJeton(new Jeton(Couleur.BLEU));
code.AjouterJeton(new Jeton(Couleur.NOIR));
Assert.Null(Record.Exception(() => joueur.Code(code)));
}
} }
} }

@ -1,4 +1,5 @@
using CoreLibrary.Manager; using CoreLibrary.Manageurs;
using CoreLibrary.Persistance;
using Xunit; using Xunit;
namespace UnitTesting namespace UnitTesting
@ -8,18 +9,10 @@ namespace UnitTesting
[Fact] [Fact]
public void TestConstruteur() public void TestConstruteur()
{ {
Manager manager = new Manager(new Stub()); IPersistance persistance = new PersistanceJSON();
Assert.NotNull(manager.Joueurs); Manageur manageur = new Manageur(persistance);
Assert.NotEmpty(manager.Joueurs); Assert.NotNull(manageur.Joueurs);
} Assert.NotEmpty(manageur.Joueurs);
[Fact]
public void TestDispose()
{
Stub stub = new Stub();
Manager manager = new Manager(stub);
manager.Dispose();
Assert.True(stub.EstEnregistre);
} }
} }
} }

@ -1,16 +0,0 @@
using CoreLibrary.Evenements;
using Xunit;
namespace UnitTesting
{
public class NouveauJoueurEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
NouveauJoueurEventArgs evenement = new NouveauJoueurEventArgs("Céleste");
Assert.Equal("Céleste", evenement.Nom);
}
}
}

@ -1,5 +1,5 @@
using CoreLibrary.Core; using CoreLibrary.Core;
using CoreLibrary.Events; using CoreLibrary.Evenements;
using CoreLibrary.Joueurs; using CoreLibrary.Joueurs;
using Xunit; using Xunit;

@ -0,0 +1,26 @@
using CoreLibrary.Core;
using CoreLibrary.Evenements;
using Xunit;
namespace UnitTesting
{
public class PartieDemanderJoueurJouerEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
int tour = 2;
string nom = "MonJoueur";
Plateau plateau = new Plateau(3, 4);
Code code = new Code(4);
bool estJoueur = true;
PartieDemanderJoueurJouerEventArgs evenement = new PartieDemanderJoueurJouerEventArgs(tour, nom, plateau, code, estJoueur);
Assert.Equal(tour, evenement.Tour);
Assert.Equal(nom, evenement.Nom);
Assert.Equal(plateau, evenement.Plateau);
Assert.Equal(code, evenement.Code);
Assert.Equal(estJoueur, evenement.EstJoueur);
}
}
}

@ -1,83 +0,0 @@
using CoreLibrary.Exceptions;
using System.Reflection;
using System.Runtime.Serialization;
using Xunit;
namespace UnitTesting
{
public class PartieNonCommenceeExceptionUT
{
[Fact]
public void ExceptionDefaut()
{
Assert.ThrowsAsync<PartieNonCommenceeException>(() => throw new PartieNonCommenceeException());
}
[Fact]
public void ExceptionMessage()
{
string message = "Mon super gros problème.";
Assert.ThrowsAsync<PartieNonCommenceeException>(() => throw new PartieNonCommenceeException(message));
try
{
throw new PartieNonCommenceeException(message);
}
catch(PartieNonCommenceeException e)
{
Assert.Equal(message, e.Message);
}
}
[Fact]
public void ExceptionMessageEtException()
{
string message = "Mon super gros problème.";
string message2 = "Pas de chance...";
InvalidOperationException parent = new InvalidOperationException(message2);
Assert.ThrowsAsync<PartieNonCommenceeException>(() => throw new PartieNonCommenceeException(message, parent));
try
{
throw new PartieNonCommenceeException(message, parent);
}
catch (PartieNonCommenceeException e)
{
Assert.Equal(message, e.Message);
Assert.NotNull(e.InnerException);
Assert.IsType<InvalidOperationException>(e.InnerException);
Assert.Equal(message2, e.InnerException.Message);
}
}
[Fact]
public void ExceptionSerialisation()
{
PartieNonCommenceeException exception = new PartieNonCommenceeException();
#pragma warning disable SYSLIB0050
SerializationInfo info = new SerializationInfo(typeof(PartieNonCommenceeException), new FormatterConverter());
StreamingContext contexte = new StreamingContext(StreamingContextStates.All);
#pragma warning restore SYSLIB0050
#pragma warning disable SYSLIB0051
exception.GetObjectData(info, contexte);
#pragma warning restore SYSLIB0051
Assert.Equal(exception.Message, info.GetString("Message"));
#pragma warning disable SYSLIB0050
PartieNonCommenceeException exceptionSerialisee =
(PartieNonCommenceeException)FormatterServices.GetUninitializedObject(typeof(PartieNonCommenceeException));
#pragma warning restore SYSLIB0050
ConstructorInfo? constructeur = typeof(PartieNonCommenceeException).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, [typeof(SerializationInfo), typeof(StreamingContext)], null);
Assert.NotNull(constructeur);
constructeur.Invoke(exceptionSerialisee, [info, contexte]);
Assert.Equal(exception.Message, exceptionSerialisee.Message);
}
}
}

@ -0,0 +1,20 @@

using CoreLibrary.Evenements;
using Xunit;
namespace UnitTesting
{
public class PartiePartieTermineeEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
IReadOnlyList<string> gagnants = new List<string>(["joueur1", "joueur2"]);
IReadOnlyList<string> perdants = new List<string>(["joueur3"]);
PartiePartieTermineeEventArgs evenement = new PartiePartieTermineeEventArgs(gagnants, perdants);
Assert.Equal(gagnants, evenement.Gagnants);
Assert.Equal(perdants, evenement.Perdants);
}
}
}

@ -0,0 +1,19 @@

using CoreLibrary.Evenements;
using Xunit;
namespace UnitTesting
{
public class PartiePasserLaMainEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
string joueur = "MonJoueur";
PartiePasserLaMainEventArgs evenement = new PartiePasserLaMainEventArgs(joueur);
Assert.Equal(joueur, evenement.Joueur);
}
}
}

@ -1,24 +0,0 @@
using CoreLibrary.Joueurs;
using CoreLibrary.Core;
using CoreLibrary.Events;
using Xunit;
namespace UnitTesting
{
public class PartieTermineeEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
Plateau plateau = new Plateau(4, 12);
Joueur[] gagnants = [new Joueur("Pauline"), new Joueur("Camille")];
Joueur[] perdants = [new Joueur("Céleste")];
PartieTermineeEventArgs evenement = new PartieTermineeEventArgs(gagnants, perdants);
Assert.Equal(gagnants, evenement.Gagnants);
Assert.Equal(perdants, evenement.Perdants);
}
}
}

@ -0,0 +1,19 @@
using CoreLibrary.Core;
using CoreLibrary.Evenements;
using Xunit;
namespace UnitTesting
{
public class PlateauAjouterCodeEventArgsUT
{
[Fact]
public void TestConstructeurValide()
{
Plateau plateau = new Plateau(4,3);
PlateauAjouterCodeEventArgs evenement = new PlateauAjouterCodeEventArgs(plateau);
Assert.Equal(plateau, evenement.Plateau);
}
}
}

@ -12,7 +12,6 @@ namespace UnitTesting
{ {
Plateau plateau = new Plateau(4,12); Plateau plateau = new Plateau(4,12);
Assert.NotNull(plateau); Assert.NotNull(plateau);
Assert.Equal(1, plateau.Tour);
Assert.False(plateau.Victoire); Assert.False(plateau.Victoire);
} }
@ -27,12 +26,16 @@ namespace UnitTesting
public void TestEstCompletTrue() public void TestEstCompletTrue()
{ {
Plateau plateau = new Plateau(4, 3); Plateau plateau = new Plateau(4, 3);
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC), new Jeton(Couleur.JAUNE)]); Jeton[] jetons = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Blanc), new Jeton(Couleur.Jaune)];
Code code = new Code(4);
code.AjouterJeton(jetons[0]);
code.AjouterJeton(jetons[1]);
code.AjouterJeton(jetons[2]);
plateau.AjouterCode(code); plateau.AjouterCode(code);
plateau.AjouterCode(code); plateau.AjouterCode(code);
plateau.AjouterCode(code); plateau.AjouterCode(code);
bool estComplet = plateau.EstComplet(); bool estComplet = plateau.Complet;
Assert.True(estComplet); Assert.True(estComplet);
} }
@ -41,32 +44,30 @@ namespace UnitTesting
public void TestEstCompletFalse() public void TestEstCompletFalse()
{ {
Plateau plateau = new Plateau(4, 3); Plateau plateau = new Plateau(4, 3);
Code code = new Code([new Jeton(Couleur.ROUGE), new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC), new Jeton(Couleur.JAUNE)]); Jeton[] jetons = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Blanc), new Jeton(Couleur.Jaune)];
Code code = new Code(4);
code.AjouterJeton(jetons[0]);
code.AjouterJeton(jetons[1]);
plateau.AjouterCode(code); plateau.AjouterCode(code);
plateau.AjouterCode(code); plateau.AjouterCode(code);
bool estComplet = plateau.EstComplet(); bool estComplet = plateau.Complet;
Assert.False(estComplet); Assert.False(estComplet);
} }
[Fact]
public void TestAjouterCodeValide()
{
Plateau plateau = new Plateau(4, 10);
Code code = new Code([new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC), new Jeton(Couleur.JAUNE), new Jeton(Couleur.BLANC)]);
plateau.AjouterCode(code);
Assert.Equal(2, plateau.Tour);
}
[Fact] [Fact]
public void TestAjouterCodeTailleIncorrecte() public void TestAjouterCodeTailleIncorrecte()
{ {
Plateau plateau = new Plateau(4, 10); Plateau plateau = new Plateau(4, 10);
Code code = new Code([new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC), new Jeton(Couleur.JAUNE), new Jeton(Couleur.BLANC), new Jeton(Couleur.JAUNE)]); Jeton[] jetons = [new Jeton(Couleur.Rouge), new Jeton(Couleur.Bleu), new Jeton(Couleur.Blanc), new Jeton(Couleur.Jaune), new Jeton(Couleur.Bleu)];
Code code = new Code(4);
code.AjouterJeton(jetons[0]);
code.AjouterJeton(jetons[1]);
code.AjouterJeton(jetons[2]);
code.AjouterJeton(jetons[3]);
code.AjouterJeton(jetons[4]);
Assert.Throws<CodeInvalideException>(() => plateau.AjouterCode(code)); Assert.Throws<CodeInvalideException>(() => plateau.AjouterCode(code));
} }
@ -95,175 +96,5 @@ namespace UnitTesting
plateau.AjouterCode(codeSecret); plateau.AjouterCode(codeSecret);
Assert.True(plateau.Victoire); Assert.True(plateau.Victoire);
} }
[Fact]
public void TestEstBonCodeTailleException()
{
Plateau plateau = new Plateau(3, 5);
Code code = new Code(4);
Assert.Throws<CodeInvalideException>(() => plateau.EstBonCode(code));
}
[Fact]
public void TestEstBonCodeIncomplet()
{
Plateau plateau = new Plateau(3, 5);
Code code = new Code(3);
Assert.Throws<CodeIncompletException>(() => plateau.EstBonCode(code));
}
[Fact]
public void TestEstBonCodeTrue()
{
Plateau plateau = new Plateau(4, 10);
Type type = typeof(Plateau);
FieldInfo? fieldInfo = type.GetField("codeSecret", BindingFlags.NonPublic | BindingFlags.Instance);
Assert.NotNull(fieldInfo);
Code? codeSecret = (Code?)fieldInfo.GetValue(plateau);
Assert.NotNull(codeSecret);
Assert.True(plateau.EstBonCode(codeSecret));
}
[Fact]
public void TestEstBonCodeFalse()
{
Plateau plateau = new Plateau(2, 10);
Type type = typeof(Plateau);
FieldInfo? fieldInfo = type.GetField("codeSecret", BindingFlags.NonPublic | BindingFlags.Instance);
Assert.NotNull(fieldInfo);
Code? codeSecret = (Code?)fieldInfo.GetValue(plateau);
Assert.NotNull(codeSecret);
Jeton[] jetons = codeSecret.Jetons.Where(jeton => jeton.HasValue).Select(jeton => jeton!.Value).ToArray();
int i = 0;
int j = 1;
while (jetons[i].Couleur == jetons[j].Couleur)
{
++i;
++j;
if (j == jetons.Length)
{
plateau = new Plateau(2, 10);
codeSecret = (Code?)fieldInfo.GetValue(plateau);
Assert.NotNull(codeSecret);
jetons = codeSecret.Jetons.Where(jeton => jeton.HasValue).Select(jeton => jeton!.Value).ToArray();
i = 0;
j = 1;
}
}
Jeton tmp = jetons[0];
jetons[0] = jetons[1];
jetons[1] = tmp;
Code code = new Code(jetons);
Assert.False(plateau.EstBonCode(code));
}
[Fact]
public void TestEstBonCodeAucunIndicateur()
{
List<Couleur> couleurs = new List<Couleur>((Couleur[])Enum.GetValues(typeof(Couleur)));
Plateau plateau = new Plateau(4, 10);
Type type = typeof(Plateau);
FieldInfo? fieldInfo = type.GetField("codeSecret", BindingFlags.NonPublic | BindingFlags.Instance);
Assert.NotNull(fieldInfo);
Code? codeSecret = (Code?)fieldInfo.GetValue(plateau);
Assert.NotNull(codeSecret);
Jeton[] jetons = codeSecret.Jetons.Where(jeton => jeton.HasValue).Select(jeton => jeton!.Value).ToArray();
for (int i=0; i<jetons.Length; ++i)
{
Couleur couleurJeton = jetons[i].Couleur;
couleurs.Remove(couleurJeton);
}
Code code = new Code(
[
new Jeton(couleurs[0]),
new Jeton(couleurs[0]),
new Jeton(couleurs[0]),
new Jeton(couleurs[0])
]
);
Assert.False(plateau.EstBonCode(code));
}
[Fact]
public void TestGrilleValide()
{
Plateau plateau = new Plateau(4, 3);
Code code1 = new Code([new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC), new Jeton(Couleur.JAUNE), new Jeton(Couleur.BLANC)]);
Code code2 = new Code([new Jeton(Couleur.VERT), new Jeton(Couleur.JAUNE), new Jeton(Couleur.ROUGE), new Jeton(Couleur.NOIR)]);
plateau.AjouterCode(code1);
plateau.AjouterCode(code2);
IEnumerable<IEnumerable<Jeton?>> grille = plateau.Grille();
Assert.Equal(4, grille.First().Count());
Assert.Empty(grille.Last());
Assert.Equal(code1.Jetons, grille.ElementAt(0));
Assert.Equal(code2.Jetons, grille.ElementAt(1));
}
[Fact]
public void TestGrilleVide()
{
Plateau plateau = new Plateau(4, 3);
IEnumerable<IEnumerable<Jeton?>> grille = plateau.Grille();
foreach (IEnumerable<Jeton?> tour in grille)
{
Assert.All(tour, jeton => Assert.Null(jeton));
}
}
[Fact]
public void TestIndicateursVide()
{
Plateau plateau = new Plateau(4, 5);
foreach(Indicateur[] indicateur in plateau.Indicateurs())
{
Assert.Null(indicateur);
}
}
[Fact]
public void TestIndicateursAjouterDeuxCodes()
{
Plateau plateau = new Plateau(4, 5);
Code code1 = new Code([new Jeton(Couleur.BLEU), new Jeton(Couleur.BLANC), new Jeton(Couleur.JAUNE), new Jeton(Couleur.BLANC)]);
Code code2 = new Code([new Jeton(Couleur.VERT), new Jeton(Couleur.JAUNE), new Jeton(Couleur.ROUGE), new Jeton(Couleur.NOIR)]);
plateau.AjouterCode(code1);
plateau.AjouterCode(code2);
Assert.NotNull(plateau.Indicateurs().ElementAt(0));
Assert.NotNull(plateau.Indicateurs().ElementAt(1));
Assert.Null(plateau.Indicateurs().ElementAt(2));
Assert.Null(plateau.Indicateurs().ElementAt(3));
Assert.Null(plateau.Indicateurs().ElementAt(4));
}
} }
} }

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