From aa9f7d4c9e24e48443bdb1bc8db39d48eff675d8 Mon Sep 17 00:00:00 2001 From: Nicolas BLONDEAU Date: Thu, 4 May 2023 11:44:08 +0200 Subject: [PATCH] :tada: Update tests -> Fonctionnent + update du constructeur de Monstre pour passer les tests --- Sources/Modèle/Modèle.csproj | 4 ++ Sources/Modèle/User.cs | 22 ++++++-- Sources/Tests/User_UT.cs | 98 +++++++++++++++++++++------------- 3 files changed, 82 insertions(+), 42 deletions(-) diff --git a/Sources/Modèle/Modèle.csproj b/Sources/Modèle/Modèle.csproj index e0d99d9..59f302d 100644 --- a/Sources/Modèle/Modèle.csproj +++ b/Sources/Modèle/Modèle.csproj @@ -6,4 +6,8 @@ enable + + + + \ No newline at end of file diff --git a/Sources/Modèle/User.cs b/Sources/Modèle/User.cs index 2af4b4d..dd191d1 100644 --- a/Sources/Modèle/User.cs +++ b/Sources/Modèle/User.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; +using Xunit; namespace Modèle { @@ -22,14 +23,27 @@ namespace Modèle public User(string pseudo, string nom, string prenom, string mdp) { + if (string.IsNullOrWhiteSpace(pseudo) || string.IsNullOrWhiteSpace(nom) || string.IsNullOrWhiteSpace(prenom) || string.IsNullOrWhiteSpace(mdp)) + { + throw new ArgumentException("Un User doit avoir un pseudo, un nom, un prénom et un mot de passe au minimum !"); + } + + //Essaye de convertir les paramètres du constructeur (excepté le mot de passe) en int, renvoie true si c'est possible + bool isPseudoNumeric = int.TryParse(pseudo, out _); + bool isNomNumeric = int.TryParse(nom, out _); + bool isPrenomNumeric = int.TryParse(prenom, out _); + + //Si une des variables est convertissable en int, alors c'est une chaine de caractère uniquement composée de nombres + if ( isPseudoNumeric || isNomNumeric || isPrenomNumeric ) + { + //Alors on renvoie une exception appelée "FormatException" + throw new FormatException("Un User ne peux pas avoir de pseudo/nom/prénom composé uniquement de nombres !"); + } + Pseudo = pseudo; Nom = nom; Prenom = prenom; Mdp = mdp; - if (string.IsNullOrWhiteSpace(pseudo) || string.IsNullOrWhiteSpace(nom) || string.IsNullOrWhiteSpace(prenom) || string.IsNullOrWhiteSpace(mdp)) - { - throw new ArgumentException("Un User doit avoir un pseudo, un nom, un prénom et un mot de passe au minimum!"); - } } public User(string pseudo, string nom, string prenom, string mdp, List monstresVus) diff --git a/Sources/Tests/User_UT.cs b/Sources/Tests/User_UT.cs index 25ac1ea..caa775e 100644 --- a/Sources/Tests/User_UT.cs +++ b/Sources/Tests/User_UT.cs @@ -7,47 +7,32 @@ namespace Tests { [Theory] - [MemberData(nameof(DataWithoutList))] - public void TestConstructorWithoutList(string pseudo, string nom, string prenom, string mdp) - { - Assert.Throws(() => new User(pseudo, nom, prenom, mdp)); - /*User u = new User(pseudo, nom, prenom, mdp); - Assert.Equal(pseudo, u.Pseudo); - Assert.Equal(nom, u.Nom); - Assert.Equal(prenom, u.Prenom); - Assert.True(u.verifyPssw(mdp));*/ + [MemberData(nameof(ValidData_NoList))] + public void TestConstructorWithValidData_NoList(string pseudo, string nom, string prenom, string mdp) + { + User u = new User(pseudo, nom, prenom, mdp); + Assert.Equal(pseudo, u.Pseudo); + Assert.Equal(nom, u.Nom); + Assert.Equal(prenom, u.Prenom); + Assert.True(u.verifyPssw(mdp)); } - public static IEnumerable DataWithoutList => - new List - { - //Test de toutes les possibilités - new object[] { "", "", "", "" }, - new object[] { "Pseudo", "", "", "" }, - new object[] { "", "Nom", "", "" }, - new object[] { "Pseudo", "Nom", "", "" }, - new object[] { "", "", "Prenom", "" }, - new object[] { "Pseudo", "", "Prenom", "" }, - new object[] { "", "Nom", "Prenom", "" }, - new object[] { "Prenom", "Nom", "Prenom", "" }, - new object[] { "", "", "", "Mdp" }, - new object[] { "Pseudo", "", "", "Mdp" }, - new object[] { "", "Nom", "", "Mdp" }, - new object[] { "Pseudo", "Nom", "", "Mdp" }, - new object[] { "", "", "Prenom", "Mdp" }, - new object[] { "Pseudo", "", "Prenom", "Mdp" }, - new object[] { "", "Nom", "Prenom", "Mdp" }, - new object[] { "Pseudo", "Nom", "Prenom", "Mdp" }, - - //Puis quelques tests avec des ints au lieu de strings - new object[] { 0, "Nom", "Prenom", "Mdp" }, - new object[] { "Pseudo", 0, "Prenom", "Mdp" }, - new object[] { "Pseudo", "Nom", 0, "Mdp" }, - new object[] { "Pseudo", "Nom", "Prenom", 0 }, - new object[] { 1, 12, 123, 1234} - }; + [Theory] + [MemberData(nameof(InvalidData_NoList))] + public void TestConstructorWithNumbers_NoList(string pseudo, string nom, string prenom, string mdp) + { + Assert.Throws(() => new User(pseudo, nom, prenom, mdp)); + } [Theory] + [MemberData(nameof(MissingData_NoList))] + public void TestConstructorWithMissingData_NoList(string pseudo, string nom, string prenom, string mdp) + { + Assert.Throws(() => new User(pseudo, nom, prenom, mdp)); + } + + + /*[Theory] [MemberData(nameof(DataWithList))] public void TestConstructorWithList(string pseudo, string nom, string prenom, string mdp, List monstresVus) { @@ -92,6 +77,43 @@ namespace Tests new object[] { "Pseudo", "Nom", 0, "Mdp", new List() }, new object[] { "Pseudo", "Nom", "Prenom", 0, new List() }, new object[] { 1, 12, 123, 1234, 12345 } - }; + };*/ + + + + //Jeu de données valide + public static IEnumerable ValidData_NoList => new List{ + new object[] { "Pseudo", "Nom", "Prenom", "Mdp123456" }, + new object[] { "Pseudo", "Nom", "Prenom", 123456 } + }; + + //Jeu de données invalide car paramètres seulement composés de nombres + public static IEnumerable InvalidData_NoList => new List{ + new object[] { 5, "Nom", "Prenom", "Mdp" }, + new object[] { "Pseudo", 12, "Prenom", "Mdp" }, + new object[] { "Pseudo", "Nom", 22, "Mdp" }, + new object[] { 1, 12, 123, 1234 } + }; + + //Jeu de données avec paramètres manquants + public static IEnumerable MissingData_NoList => new List{ + + //Test de toutes les possibilités + new object[] { "", "", "", "" }, + new object[] { "Pseudo", "", "", "" }, + new object[] { "", "Nom", "", "" }, + new object[] { "Pseudo", "Nom", "", "" }, + new object[] { "", "", "Prenom", "" }, + new object[] { "Pseudo", "", "Prenom", "" }, + new object[] { "", "Nom", "Prenom", "" }, + new object[] { "Prenom", "Nom", "Prenom", "" }, + new object[] { "", "", "", "Mdp" }, + new object[] { "Pseudo", "", "", "Mdp" }, + new object[] { "", "Nom", "", "Mdp" }, + new object[] { "Pseudo", "Nom", "", "Mdp" }, + new object[] { "", "", "Prenom", "Mdp" }, + new object[] { "Pseudo", "", "Prenom", "Mdp" }, + new object[] { "", "Nom", "Prenom", "Mdp" } + }; } } \ No newline at end of file