8 Commits

9 changed files with 237 additions and 40 deletions

4
aLire.txt Normal file
View File

@@ -0,0 +1,4 @@
dépôt gitea : https://gitea.lyc-lecastel.fr/delphine.thevenot/2026TestsBibliotheque.git
branche : developpement
multibranches, fusions difficiles, à revoir

View File

@@ -4,6 +4,10 @@
*/ */
package com.mycompany.bibliotheque.Controle; package com.mycompany.bibliotheque.Controle;
import com.mycompany.bibliotheque.Metier.Livre;
import com.mycompany.bibliotheque.Metier.Utilisateur;
import java.util.Scanner;
/** /**
* Classe de contrôle de la classe Livre * Classe de contrôle de la classe Livre
* @author dthev * @author dthev
@@ -47,12 +51,13 @@ public class LivreValide {
// 3. Auteur : non vide et pas de chiffres ou caractères spéciaux // 3. Auteur : non vide et pas de chiffres ou caractères spéciaux
public static boolean isValidAuteur(String auteur) { public static boolean isValidAuteur(String auteur) {
//verification que auteur n'est pas vide ou null
//verification que auteur n'est pas vide ou null
if (auteur == null || auteur.isBlank()) { if (auteur == null || auteur.isBlank()) {
return false; return false;
} }
//ajout d'un pattern pour avoir uniquement des minuscules/majuscules //ajout d'un pattern pour avoir uniquement des minuscules/majuscules
String pattern = "^[a-zA-Z]+$"; String pattern = "^[a-zA-Z -]+$";
//verification boolean que le nom d'auteur corresponde au patterne //verification boolean que le nom d'auteur corresponde au patterne
return auteur.matches(pattern); return auteur.matches(pattern);
} }
@@ -78,4 +83,39 @@ public class LivreValide {
return contenuValide; return contenuValide;
} }
/**
* IsDisponible()
* Vérifier livre pas déjà emprunté
* @author Emile
*/
public static boolean isDisponible (Livre leLivre){
boolean valide = true;
if(leLivre.isEmprunte()){
valide = false;
}
return valide;
};
/**
* IsDisponible()
* Vérifier livre pas déjà emprunté
* @author Morgann/Emile
*/
public static boolean retourLivre(Utilisateur user){
Scanner sc = new Scanner(System.in);
int i=0;
for(Livre unLivre:user.getEmprunts()){
i++;
System.out.println(i+". "+unLivre.getTitre());
}
System.out.print("Merci de faire votre choix : ");
int choix = sc.nextInt();
Livre leLivre = user.getEmprunts().get(choix-1);
leLivre.setEmprunte(false);
user.getEmprunts().remove(leLivre);
return leLivre.isEmprunte();
}
} }

View File

@@ -14,6 +14,7 @@ import com.mycompany.bibliotheque.Metier.Bibliotheque;
import com.mycompany.bibliotheque.Metier.Emprunt; import com.mycompany.bibliotheque.Metier.Emprunt;
import com.mycompany.bibliotheque.Metier.Utilisateur; import com.mycompany.bibliotheque.Metier.Utilisateur;
import com.mycompany.bibliotheque.Metier.Livre; import com.mycompany.bibliotheque.Metier.Livre;
import java.util.ArrayList;
import java.util.Scanner; import java.util.Scanner;
public class GestionBibliotheque { public class GestionBibliotheque {
@@ -21,8 +22,14 @@ public class GestionBibliotheque {
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
int choix=0; int choix=0;
Bibliotheque laBibli = new Bibliotheque(); Bibliotheque laBibli = new Bibliotheque();
Livre l1 = new Livre("Le secret des secrets","Dan Brown","9782709668385",true); ArrayList<Livre> mesLivres = new ArrayList<>();
Utilisateur u1 = new Utilisateur("Alice"); Utilisateur unUtilisateur = new Utilisateur("Emile", mesLivres);
Livre ll = new Livre(1,"Le secret des secrets","Dan Brown","9782709668385",true);
Livre l2 = new Livre(2,"Le secret des secrets","Dan Brown","9772709668385",true);
Livre l3 = new Livre(3,"Le secret des secrets","Dan Brown","9712709668385",true);
Livre l4 = new Livre(4,"Le secret des secrets","Dan Brown","9792709668385",true);
Livre l5 = new Livre(5,"Le secret des secrets","Dan Brown","9282709668385",false);
//Utilisateur u1 = new Utilisateur("Alice", mesLivres.add(l1));
System.out.println("Bienvenue dans la bibliothèque !"); System.out.println("Bienvenue dans la bibliothèque !");
while (choix!=4){ while (choix!=4){
@@ -34,15 +41,36 @@ public class GestionBibliotheque {
choix = sc.nextInt(); choix = sc.nextInt();
switch (choix) { switch (choix) {
case 1 : case 1 :
System.out.println("---Livre : " + l1.getTitre()); System.out.println("---Livre : " + ll.getTitre());
break; break;
case 2 : case 2 :
laBibli.addLivre(l1); laBibli.addLivre(ll);
laBibli.addLivre(l2);
laBibli.addLivre(l3);
laBibli.addLivre(l4);
laBibli.addLivre(l5);
break; break;
case 3 : case 3 :
for (Livre leLivre : laBibli.getLesLivres()) { for (Livre leLivre : laBibli.getLesLivres()) {
System.out.println("---"+leLivre.toString()); if (leLivre.isEmprunte() == true) {
System.out.println("---"+ leLivre.getNumero() + " " + leLivre.toString());
}
} }
System.out.println("Choisir un livre avec le numéro du livre souhaité");
System.out.print("Merci de faire votre choix : ");
int choixLivre = sc.nextInt();
Livre livreChoisi = laBibli.trouverLivreParNumero(choixLivre);
if (unUtilisateur.emprunterLivre(livreChoisi) == true) {
System.out.print("Validation de l'emprunt");
} else {
System.out.print("Erreur lors de l'emprunt");
}
break; break;
} }
} }

View File

@@ -4,6 +4,7 @@
*/ */
package com.mycompany.bibliotheque.Metier; package com.mycompany.bibliotheque.Metier;
import com.mycompany.bibliotheque.Controle.LivreValide;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -17,8 +18,25 @@ public class Bibliotheque {
// 5. ISBN doit être unique // 5. ISBN doit être unique
public boolean addLivre(Livre b) { public boolean addLivre(Livre b) {
//ajoute b si valide et si n'existe pas - à écrire //ajoute b si valide et si n'existe pas - à écrire
lesLivres.add(b); String issues = "";
return false; 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() { public List<Livre> getLesLivres() {
@@ -29,5 +47,12 @@ public class Bibliotheque {
this.lesLivres = lesLivres; this.lesLivres = lesLivres;
} }
public Livre trouverLivreParNumero(int numero) {
for (Livre l : lesLivres) {
if (l.getNumero() == numero) {
return l;
}
}
return null; // pas trouvé
}
} }

View File

@@ -10,6 +10,7 @@ package com.mycompany.bibliotheque.Metier;
*/ */
public class Livre { public class Livre {
private int numero;
private String titre; private String titre;
private String auteur; private String auteur;
private String isbn; // ISBN sous forme de chaîne private String isbn; // ISBN sous forme de chaîne
@@ -22,6 +23,18 @@ public class Livre {
this.emprunte = emprunte; this.emprunte = emprunte;
} }
public Livre(int numero, String titre, String auteur, String isbn, Boolean emprunte) {
this.numero = numero;
this.titre = titre;
this.auteur = auteur;
this.isbn = isbn;
this.emprunte = emprunte;
}
public int getNumero() {
return numero;
}
//getters et setters //getters et setters
public String getTitre() { public String getTitre() {
return titre; return titre;

View File

@@ -9,15 +9,14 @@ package com.mycompany.bibliotheque.Metier;
* @author dthev * @author dthev
*/ */
import com.mycompany.bibliotheque.Metier.Livre;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class Utilisateur { public class Utilisateur {
private String nom; private final String nom;
private List<Livre> emprunts; private final ArrayList<Livre> emprunts;
public Utilisateur(String nom) { public Utilisateur(String nom, ArrayList<Livre> mesLivres) {
this.nom = nom; this.nom = nom;
this.emprunts = new ArrayList<>(); this.emprunts = new ArrayList<>();
} }
@@ -30,8 +29,19 @@ public class Utilisateur {
return emprunts; return emprunts;
} }
// TODO: ajouter un emprunt si l'utilisateur a moins de 3 livres // TODO: ajouter un emprunt si l'utilisateur a moins de 3 livres
/**
* @author Medhi
* @param livre
*/
public boolean emprunterLivre(Livre livre) { public boolean emprunterLivre(Livre livre) {
return false; // à compléter if (emprunts.size() < 3) {
emprunts.add(livre);
livre.setEmprunte(false);
return true;
} else {
return false;
} }
} }
}

View File

@@ -29,14 +29,50 @@ public class BibliothequeTest {
*/ */
@Test @Test
public void testAddLivre() { public void testAddLivre() {
System.out.println("addLivre"); System.out.println("addLivre");
Livre b = null;
Bibliotheque instance = new Bibliotheque(); Bibliotheque instance = new Bibliotheque();
boolean expResult = false;
boolean result = instance.addLivre(b); // Ajout d'un livre avec ISBN invalide
assertEquals(expResult, result); Livre livre = new Livre("Naruto", "Masashi Kishimoto", "1234ABCD567", false);
// TODO review the generated test code and remove the default call to fail. boolean ajoutLivre = instance.addLivre(livre);
fail("The test case is a prototype."); 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);
} }
/** /**

View File

@@ -5,6 +5,7 @@
package com.mycompany.bibliotheque; package com.mycompany.bibliotheque;
import com.mycompany.bibliotheque.Controle.LivreValide; import com.mycompany.bibliotheque.Controle.LivreValide;
import com.mycompany.bibliotheque.Metier.Livre;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import static org.junit.Assert.*; import static org.junit.Assert.*;
@@ -113,7 +114,7 @@ public class LivreValideTest {
/** /**
* Test of isValidAuteur method, of class LivreValide. * Test of isValidAuteur method, of class LivreValide.
* @author Medhi/Steve * @author Medhi
*/ */
@Test @Test
public void testIsValidAuteur() { public void testIsValidAuteur() {
@@ -136,6 +137,16 @@ public class LivreValideTest {
boolean expResult2 = false; boolean expResult2 = false;
boolean result2 = LivreValide.isValidAuteur(auteurFalse2); boolean result2 = LivreValide.isValidAuteur(auteurFalse2);
assertEquals("Non valide car des caractères spéciaux sont présent", expResult2,result2); assertEquals("Non valide car des caractères spéciaux sont présent", expResult2,result2);
//Verification avec des espace
String auteurTrue3 = "George Orwell";
boolean result3 = LivreValide.isValidAuteur(auteurTrue3);
assertTrue("",result3);
//Verification avec -
String auteurTrue4 = "George-Orwell";
boolean result4 = LivreValide.isValidAuteur(auteurTrue4);
assertTrue("",result4);
} }
/** /**
@@ -155,7 +166,7 @@ public class LivreValideTest {
System.out.println("Titre invalide. Aucune valeur n'a été saisie\n"); System.out.println("Titre invalide. Aucune valeur n'a été saisie\n");
//test 2 : titre inférieur à 200 //test 2 : titre inférieur à 200
System.out.println("Test avec aucune valeur saisie"); System.out.println("Test avec valeur saisie OK");
String titre2 = "Hadal Blacksite bestiary"; String titre2 = "Hadal Blacksite bestiary";
boolean expResult2 = true; boolean expResult2 = true;
boolean result2 = LivreValide.isLongueurTitreValid(titre2); boolean result2 = LivreValide.isLongueurTitreValid(titre2);
@@ -171,13 +182,6 @@ public class LivreValideTest {
} }
@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. * Test of isTitreValid method, of class LivreValide.
* @author Steve * @author Steve
@@ -202,4 +206,30 @@ public class LivreValideTest {
titre = "Ti!"; titre = "Ti!";
assertTrue("Le titre fait au moins 2 caractères alphabétiques !", LivreValide.isContenuTitreValide(titre)); assertTrue("Le titre fait au moins 2 caractères alphabétiques !", LivreValide.isContenuTitreValide(titre));
} }
/**
* Test testIsDisponible()
* Vérifier livre pas déjà emprunté
* @author Emile
*/
@Test
public void testIsDisponible(){
System.out.println("isDisponible");
Livre unLivre = new Livre("Le comte de MonteCristo","Alexandre Dumas", "1234567891245", false);
System.out.println("Test1 : un livre disponible");
boolean result1 = LivreValide.isDisponible(unLivre);
assertTrue("Le chevron < n'est pas censé etre accepté", result1);
System.out.println("Le test1 est validé");
System.out.println("--------------------------------------------------");
System.out.println(" ");
unLivre.setEmprunte(true);
System.out.println("Test2 : un livre indiisponible");
boolean result2 = LivreValide.isDisponible(unLivre);
assertFalse("Le chevron < n'est pas censé etre accepté", result2);
System.out.println("Le test2 est validé");
System.out.println("--------------------------------------------------");
System.out.println(" ");
}
} }

View File

@@ -6,6 +6,7 @@ package com.mycompany.bibliotheque;
import com.mycompany.bibliotheque.Metier.Utilisateur; import com.mycompany.bibliotheque.Metier.Utilisateur;
import com.mycompany.bibliotheque.Metier.Livre; import com.mycompany.bibliotheque.Metier.Livre;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -52,19 +53,29 @@ public class UtilisateurTest {
fail("The test case is a prototype."); fail("The test case is a prototype.");
} }
/** /**
* Test of emprunterLivre method, of class Utilisateur. * Test of emprunterLivre method, of class Utilisateur.
* @author Madhi
*/ */
@Test @Test
public void testEmprunterLivre() { public void testEmprunterLivre() {
System.out.println("emprunterLivre"); System.out.println("emprunterLivre");
Livre livre = null;
Utilisateur instance = null; Livre a = new Livre("1984", "George Orwell", "1234567890123", false);
boolean expResult = false; Livre b = new Livre("1984", "Test2", "1232667890123", false);
boolean result = instance.emprunterLivre(livre); Livre c = new Livre ("1888","Test3","1232667890123",false);
assertEquals(expResult, result); Livre d = new Livre ("1263","Test4","1236267890123",false);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype."); ArrayList<Livre> mesLivres = new ArrayList<>();
Utilisateur utilisateur = new Utilisateur("Medhi", mesLivres);
boolean result = utilisateur.emprunterLivre(a);
assertTrue("L'utilisateur a trop de livres",result);
result = utilisateur.emprunterLivre(b);
result = utilisateur.emprunterLivre(c);
result = utilisateur.emprunterLivre(d);
assertFalse("L'utilisateur n'a pas encore trois emprunts ",result);
} }
} }