10 Commits

Author SHA1 Message Date
987db5ce7c test Bibliotheque addLivre 2025-10-03 13:10:13 +02:00
31b5eca6c3 test Bibliotheque addLivre 2025-10-03 11:56:08 +02:00
c762aac862 fusion avec Salomé, Steve et Emile pour les tests unitaires 2025-10-03 09:21:27 +02:00
a606a72476 Merge branch 'MalcuitEmile' into developpement
# Conflicts:
#	src/test/java/com/mycompany/bibliotheque/LivreValideTest.java
2025-10-03 08:43:45 +02:00
9f0f1ae00e Merge branch 'developpement' of https://gitea.lyc-lecastel.fr/delphine.thevenot/2026TestsBibliotheque into MalcuitEmile 2025-10-02 22:20:24 +02:00
1f44c6ee69 rajout méthode testIsContenuTitreValid à compléter 2025-10-02 21:50:36 +02:00
3f63db1a92 Merge branch 'MalcuitEmile' into developpement
Ajout partie Emile isValidIsbn
doit avoir 13 chiffres (pas de lettres, pas de caractères spéciaux)
2025-10-02 21:43:56 +02:00
emile.malcuit
9593ca5fab test unitaire 13 carractère isbn 2025-09-26 11:20:29 +02:00
6e8f63e2c0 Actualiser .gitignore 2025-09-26 10:36:52 +02:00
emile.malcuit
a7b45071cc Init branch emile 2025-09-26 10:19:30 +02:00
13 changed files with 300 additions and 148 deletions

4
.gitignore vendored
View File

@@ -1 +1,5 @@
/target/
<<<<<<< HEAD
=======
*.xml
>>>>>>> 6e8f63e2c0b4f89a6f46070511e8ce4223af4bb7

View File

@@ -0,0 +1,81 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque.Controle;
/**
* Classe de contrôle de la classe Livre
* @author dthev
*/
public class LivreValide {
// 1. ISBN : exactement 13 chiffres
public static boolean isValidIsbn(String isbn) {
// TODO Emile: implémenter la validation
boolean valide = true;
if(isbn.length() == 13){
int i = 0;
while (i < 13 && valide) {
if(!Character.isDigit(isbn.charAt(i))){
valide = false;
}else{
i++;
}
}
}else{
valide = false;
}
return valide;
}
// 2. Titre : pas de balises HTML/JS (<script>, <img>, etc.)
public static boolean isValidTitre(String Titre) {
// TODO Salomon: implémenter la validation
boolean test = true;
int i = 0;
while (i < Titre.length() && test) {
if(Titre.charAt(i) == '<' || Titre.charAt(i) == '>'){
test = false;
}else{
i++;
}
}
return test;
}
// 3. Auteur : non vide et pas de chiffres ou caractères spéciaux
public static boolean isValidAuteur(String auteur) {
//verification que auteur n'est pas vide ou null
if (auteur == null || auteur.isBlank()) {
return false;
}
//ajout d'un pattern pour avoir uniquement des minuscules/majuscules
String pattern = "^[a-zA-Z -]+$";
//verification boolean que le nom d'auteur corresponde au patterne
return auteur.matches(pattern);
}
// 4. Titre : longueur maximale 200 caractères
public static boolean isLongueurTitreValid(String titre) {
// TODO Morgann: implémenter la validation
boolean valide = false;
if(titre.length()<=200 && titre != "" && titre != null){
valide = true;
}
return valide;
}
// 5. Titre : non null et au moins 2 caractères
public static boolean isContenuTitreValide(String titre) {
// TODO Steve: implémenter la validation
if (titre == null) {
return false;
}
boolean contenuValide = titre.matches(".*[a-zA-Z].*[a-zA-Z].*");
return contenuValide;
}
}

View File

@@ -1,45 +0,0 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque.Contrôle;
/**
* Classe de contrôle de la classe Livre
* @author dthev
*/
public class LivreValide {
// 1. ISBN : exactement 13 chiffres
public static boolean isValidIsbn(String isbn) {
// TODO Emile: implémenter la validation
return false;
}
// 2. Titre : pas de balises HTML/JS (<script>, <img>, etc.)
public static boolean isValidTitre(String Titre) {
// TODO: implémenter la validation
return false;
}
// 3. Auteur : non vide et pas de chiffres ou caractères spéciaux
public static boolean isValidAuteur(String auteur) {
// TODO: implémenter la validation
return false;
}
// 4. Titre : longueur maximale 200 caractères
public static boolean isLongueurTitreValid(String titre) {
// TODO Morgann: implémenter la validation
boolean valide = false;
if(titre.length()<=200 && titre != "" && titre != null){
valide = true;
}
return valide;
}
// 5. Titre : non null et au moins 2 caractères
public static boolean isContenuTitreValide(String titre) {
// TODO Steve: implémenter la validation
return false;
}
}

View File

@@ -10,10 +10,11 @@ package com.mycompany.bibliotheque;
*/
import com.mycompany.bibliotheque.Métier.Bibliotheque;
import com.mycompany.bibliotheque.Métier.Emprunt;
import com.mycompany.bibliotheque.Métier.Utilisateur;
import com.mycompany.bibliotheque.Métier.Livre;
import com.mycompany.bibliotheque.Metier.Utilisateur;
import com.mycompany.bibliotheque.Metier.Bibliotheque;
import com.mycompany.bibliotheque.Metier.Emprunt;
import com.mycompany.bibliotheque.Metier.Utilisateur;
import com.mycompany.bibliotheque.Metier.Livre;
import java.util.Scanner;
public class GestionBibliotheque {

View File

@@ -0,0 +1,51 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque.Metier;
import com.mycompany.bibliotheque.Controle.LivreValide;
import java.util.ArrayList;
import java.util.List;
/**
* Classe métier
* @author dthev
*/
public class Bibliotheque {
private List<Livre> lesLivres = new ArrayList<>();
// 5. ISBN doit être unique
public boolean addLivre(Livre b) {
//ajoute b si valide et si n'existe pas - à écrire
String issues = "";
if (!LivreValide.isValidIsbn(b.getIsbn())) issues += "1 ";
if (!LivreValide.isValidTitre(b.getTitre())) issues += "2 ";
if (!LivreValide.isValidAuteur(b.getAuteur())) issues += "3 ";
if (!LivreValide.isLongueurTitreValid(b.getTitre())) issues += "4 ";
if (!LivreValide.isContenuTitreValide(b.getTitre())) issues += "5";
System.out.println(issues);
if (issues.length() < 1) {
System.out.println("valide");
for (Livre livre : this.getLesLivres()) {
if (livre.getIsbn().equals(b.getIsbn())) return false;
}
lesLivres.add(b);
return true;
} else return false;
}
public List<Livre> getLesLivres() {
return lesLivres;
}
public void setLesLivres(List<Livre> lesLivres) {
this.lesLivres = lesLivres;
}
}

View File

@@ -2,10 +2,10 @@
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque.Métier;
package com.mycompany.bibliotheque.Metier;
import com.mycompany.bibliotheque.Métier.Utilisateur;
import com.mycompany.bibliotheque.Métier.Livre;
import com.mycompany.bibliotheque.Metier.Utilisateur;
import com.mycompany.bibliotheque.Metier.Livre;
/**
*

View File

@@ -2,7 +2,7 @@
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque.Métier;
package com.mycompany.bibliotheque.Metier;
/**
*

View File

@@ -2,14 +2,14 @@
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque.Métier;
package com.mycompany.bibliotheque.Metier;
/**
*
* @author dthev
*/
import com.mycompany.bibliotheque.Métier.Livre;
import com.mycompany.bibliotheque.Metier.Livre;
import java.util.ArrayList;
import java.util.List;
@@ -32,6 +32,6 @@ public class Utilisateur {
// TODO: ajouter un emprunt si l'utilisateur a moins de 3 livres
public boolean emprunterLivre(Livre livre) {
return false; // à compléter
return false; // à compléter
}
}

View File

@@ -1,33 +0,0 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.mycompany.bibliotheque.Métier;
import java.util.ArrayList;
import java.util.List;
/**
* Classe métier
* @author dthev
*/
public class Bibliotheque {
private List<Livre> lesLivres = new ArrayList<>();
// 5. ISBN doit être unique
public boolean addLivre(Livre b) {
//ajoute b si valide et si n'existe pas - à écrire
lesLivres.add(b);
return false;
}
public List<Livre> getLesLivres() {
return lesLivres;
}
public void setLesLivres(List<Livre> lesLivres) {
this.lesLivres = lesLivres;
}
}

View File

@@ -4,8 +4,8 @@
*/
package com.mycompany.bibliotheque;
import com.mycompany.bibliotheque.Métier.Bibliotheque;
import com.mycompany.bibliotheque.Métier.Livre;
import com.mycompany.bibliotheque.Metier.Bibliotheque;
import com.mycompany.bibliotheque.Metier.Livre;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
@@ -30,13 +30,49 @@ public class BibliothequeTest {
@Test
public void testAddLivre() {
System.out.println("addLivre");
Livre b = null;
Bibliotheque instance = new Bibliotheque();
boolean expResult = false;
boolean result = instance.addLivre(b);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
// Ajout d'un livre avec ISBN invalide
Livre livre = new Livre("Naruto", "Masashi Kishimoto", "1234ABCD567", false);
boolean ajoutLivre = instance.addLivre(livre);
System.out.println("Refus de l'ISBN invalide");
assertFalse("L'ISBN du livre n'est pas censé être valide avec lettres !", ajoutLivre);
// Ajout d'un livre avec titre invalide
livre = new Livre("<script>Dragon Ball</script>", "Akira Toriyama", "8762709652385", false);
ajoutLivre = instance.addLivre(livre);
System.out.println("Refus de titre invalide");
assertFalse("Le titre du livre n'est pas censé être valide avec des balises !", ajoutLivre);
// Ajout d'un livre avec auteur invalide
livre = new Livre("Dr. STONE", "Bo1ch1", "8762207682385", false);
ajoutLivre = instance.addLivre(livre);
System.out.println("Refus d'auteur invalide");
assertFalse("L'auteur du livre n'est pas censé être valide avec des caractères non alphabétiques !", ajoutLivre);
// Ajout d'un livre avec longueur de titre invalide
livre = new Livre("Dandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadandadan", "Yukinobu Tatsu", "1702203672985", false);
ajoutLivre = instance.addLivre(livre);
System.out.println("Refus de longueur de titre invalide");
assertFalse("Le titre n'est pas censé être valide avec une longueur excédant les 200 caractères !", ajoutLivre);
// Ajout d'un livre avec contenu de titre invalide
livre = new Livre("007", "Steve Maingana", "3712503622788", false);
ajoutLivre = instance.addLivre(livre);
System.out.println("Refus de contenu de titre invalide invalide");
assertFalse("Le titre n'est pas censé être valide sans au moins 2 caractères alphabétiques !", ajoutLivre);
// Premier ajout de livre
livre = new Livre("Frieren", "Kanehito Yamada", "6785708652385", false);
ajoutLivre = instance.addLivre(livre);
System.out.println("Premier ajout d'un même livre");
System.out.println(ajoutLivre);
assertTrue("La bibliothèque ne permet pas de doublon !", ajoutLivre);
// Second ajout du même livre
ajoutLivre = instance.addLivre(livre);
System.out.println("Refus d'ajout du même livre");
assertFalse("La bibliothèque ne permet pas de doublon !", ajoutLivre);
}
/**
@@ -65,5 +101,4 @@ public class BibliothequeTest {
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
}

View File

@@ -4,7 +4,7 @@
*/
package com.mycompany.bibliotheque;
import com.mycompany.bibliotheque.Métier.Livre;
import com.mycompany.bibliotheque.Metier.Livre;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -16,8 +16,8 @@ public void testCreationLivre() {
assertNotNull(b);
assertEquals("1984", b.getTitre());
assertEquals("George Orwell", b.getAuteur()); // corrigé
assertEquals("George Orwel", b.getAuteur()); // corrigé
assertEquals("1234567890123", b.getIsbn());
assertFalse(b.isEmprunte()); // si la méthode existe
assertFalse(b.isEmprunte()); // si la méthode existe
}
}

View File

@@ -4,7 +4,7 @@
*/
package com.mycompany.bibliotheque;
import com.mycompany.bibliotheque.Contrôle.LivreValide;
import com.mycompany.bibliotheque.Controle.LivreValide;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -29,27 +29,86 @@ public class LivreValideTest {
@Test
public void testIsValidIsbn() {
System.out.println("isValidIsbn");
String isbn = "";
boolean expResult = false;
boolean result = LivreValide.isValidIsbn(isbn);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
//Test 1 : un isbn avec moins de 13 carractères
System.out.println("Test1 : un isbn avec moins de 13 carractères");
String isbn1 = "1234568912";
boolean expResult1 = false;
boolean result1 = LivreValide.isValidIsbn(isbn1);
assertEquals("Le nombre de carractère est censé est trop petit",expResult1, result1);
assertFalse("Trop petit",LivreValide.isValidIsbn(isbn1));
System.out.println("Le test1 est validé");
System.out.println("--------------------------------------------------");
System.out.println(" ");
//Test2 : lettre dans l'isbn
System.out.println("Test2 : lettre dans l'isbn");
String isbn2 = "123456789ABC2";
boolean expResult2 = false;
boolean result2 = LivreValide.isValidIsbn(isbn2);
assertEquals("Les alphas ne sont pas autorisés", expResult2, result2);
System.out.println("Le test2 est validé");
System.out.println("--------------------------------------------------");
System.out.println(" ");
//Test3 : mauvais nombre de carratère 15
System.out.println("Test3: isbn comportant plus de 13 chiffres");
String isbn3 = "1234568912123568";
boolean expResult3 = false;
boolean result3 = LivreValide.isValidIsbn(isbn3);
assertEquals("Le nombre de carractère est censé est trop grand",expResult3, result3);
System.out.println("Le test3 est validé");
System.out.println("--------------------------------------------------");
System.out.println(" ");
//Test4 : Un isbn valide
System.out.println("Test4: Un isbn valide");
String isbn4 = "1234568912126";
boolean expResult4 = true;
boolean result4 = LivreValide.isValidIsbn(isbn4);
assertEquals("L'isbn est censé être valide",expResult4, result4);
System.out.println("Le test4 est validé");
System.out.println("--------------------------------------------------");
System.out.println(" ");
}
/**
* Test of isValidTitre method, of class LivreValide.
* @author Salomé/Emile
* @author Salomé/Emile
*/
@Test
public void testIsValidTitre() {
System.out.println("isValidTitre");
String Titre = "";
boolean expResult = false;
boolean result = LivreValide.isValidTitre(Titre);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
System.out.println("Test1 : un titre comportant un '<'");
String Titre1 = "La chat<perché";
boolean expResult1 = false;
boolean result1 = LivreValide.isValidTitre(Titre1);
assertEquals("Le chevron < n'est pas censé etre accepté",expResult1, result1);
System.out.println("Le test1 est validé");
System.out.println("--------------------------------------------------");
System.out.println(" ");
System.out.println("Test2 : un titre comportant un '>'");
String Titre2 = "La chat >perché";
boolean expResult2 = false;
boolean result2 = LivreValide.isValidTitre(Titre2);
assertEquals("Le chevron > n'est pas censé etre accepté",expResult2, result2);
System.out.println("Le test2 est validé");
System.out.println("--------------------------------------------------");
System.out.println(" ");
System.out.println("Test3 : un titre valide");
String Titre3 = "La chat perché";
boolean expResult3 = true;
boolean result3 = LivreValide.isValidTitre(Titre3);
assertEquals("Ce titre est cencé être valide",expResult3, result3);
System.out.println("Le test3 est validé");
System.out.println("--------------------------------------------------");
System.out.println(" ");
}
/**
@@ -74,32 +133,21 @@ public class LivreValideTest {
@Test
public void testIsLongueurTitreValid() {
System.out.println("isLongueurTitreValid");
//test 1 : aucune valeur saisie
System.out.println("Test avec aucune valeur saisie");
String titre1 = "";
boolean expResult1 = false;
boolean result1 = LivreValide.isLongueurTitreValid(titre1);
assertEquals(expResult1, result1);
System.out.println("Titre invalide. Aucune valeur n'a été saisie\n");
//test 2 : titre inférieur à 200
System.out.println("Test avec aucune valeur saisie");
String titre2 = "Hadal Blacksite bestiary";
boolean expResult2 = true;
boolean result2 = LivreValide.isLongueurTitreValid(titre2);
assertEquals(expResult2, result2);
System.out.println("Titre valide. Le titre a moins de 200 caractères\n");
System.out.println("Test avec un titre avec plus de 200 caractères");
String titre3 = "YOU !! You could've had everything you ever wanted... Everything I ever wanted... And you still went out of your way to take everything I had left in the process. You entitled brat. You expect me to sit idly by and keep smiling, As if nothing ever happened? Oh, I'm smiling alright... GRINNING ear to ear. Don't even start with that 'following orders' schlock. You knew what you were doing all too well. Sure took your sweet time. Enjoyed every last second of it? Good. *Chuckles* EXCELLENT, even! I'll merely return the favor. And you bet, I'll be enjoying, every last moment, of THIS!!! THE BEST PART!? I get to do this, over, and over, again. You'll come back, I'll know, and I'll be waiting... You have no one to blame but yourself. You're in a hell of your own making... And you're NEVER GETTING OUT!!! *grrgh* WHAT!!! WHAT IS IT THIS TIME!?!?";
boolean expResult3 = false;
boolean result3 = LivreValide.isLongueurTitreValid(titre3);
assertEquals(expResult3, result3);
System.out.println("Titre invalide. Titre trop long\n");
String titre = "";
boolean expResult = false;
boolean result = LivreValide.isLongueurTitreValid(titre);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
@Test
public void testIsContenuTitreValid() {
System.out.println("isLongueurTitreValid");
String titre = "";
boolean expResult = false;
boolean result = LivreValide.isLongueurTitreValid(titre);
}
/**
* Test of isTitreValid method, of class LivreValide.
* @author Steve
@@ -108,11 +156,21 @@ public class LivreValideTest {
public void testIsContenuTitreValide() {
System.out.println("isTitreValid");
String titre = "";
boolean expResult = false;
boolean result = LivreValide.isContenuTitreValide(titre);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
System.out.println();
assertFalse("Le titre ne doit pas être vide !", LivreValide.isContenuTitreValide(titre));
titre = null;
assertFalse("Le titre ne peut pas être nul !", LivreValide.isContenuTitreValide(titre));
titre = "Ti";
assertTrue("Le titre fait au moins 2 caractères alphabétiques !", LivreValide.isContenuTitreValide(titre));
titre = "T";
assertFalse("Le titre fait au moins 2 caractères alphabétiques !", LivreValide.isContenuTitreValide(titre));
titre = "1234";
assertFalse("Le titre fait au moins 2 caractères alphabétiques !", LivreValide.isContenuTitreValide(titre));
titre = "Ti2";
assertTrue("Le titre fait au moins 2 caractères alphabétiques !", LivreValide.isContenuTitreValide(titre));
titre = "*$!";
assertFalse("Le titre fait au moins 2 caractères alphabétiques !", LivreValide.isContenuTitreValide(titre));
titre = "Ti!";
assertTrue("Le titre fait au moins 2 caractères alphabétiques !", LivreValide.isContenuTitreValide(titre));
}
}

View File

@@ -4,8 +4,8 @@
*/
package com.mycompany.bibliotheque;
import com.mycompany.bibliotheque.Métier.Utilisateur;
import com.mycompany.bibliotheque.Métier.Livre;
import com.mycompany.bibliotheque.Metier.Utilisateur;
import com.mycompany.bibliotheque.Metier.Livre;
import java.util.List;
import org.junit.Before;
import org.junit.Test;