diff --git a/ENSIM/Java/POOtpnote/.idea/compiler.xml b/ENSIM/Java/POOtpnote/.idea/compiler.xml
new file mode 100644
index 0000000..d0058de
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/POOtpnote/.idea/misc.xml b/ENSIM/Java/POOtpnote/.idea/misc.xml
new file mode 100644
index 0000000..4b661a5
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/POOtpnote/.idea/uiDesigner.xml b/ENSIM/Java/POOtpnote/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/POOtpnote/.idea/vcs.xml b/ENSIM/Java/POOtpnote/.idea/vcs.xml
new file mode 100644
index 0000000..c2365ab
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/POOtpnote/.idea/workspace.xml b/ENSIM/Java/POOtpnote/.idea/workspace.xml
new file mode 100644
index 0000000..48b818e
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/.idea/workspace.xml
@@ -0,0 +1,661 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ trans
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1543588041957
+
+
+ 1543588041957
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/POOtpnote/POOtpnote.iml b/ENSIM/Java/POOtpnote/POOtpnote.iml
new file mode 100644
index 0000000..78b2cc5
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/POOtpnote.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/POOtpnote/pom.xml b/ENSIM/Java/POOtpnote/pom.xml
new file mode 100644
index 0000000..df540bb
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/pom.xml
@@ -0,0 +1,26 @@
+
+
+ 4.0.0
+
+ fr.ensim.POO-tpnote
+ POO-tpnote
+ 1.0-SNAPSHOT
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.3.2
+ test
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
+
\ No newline at end of file
diff --git a/ENSIM/Java/POOtpnote/src/main/java/entity/Administrateur.java b/ENSIM/Java/POOtpnote/src/main/java/entity/Administrateur.java
new file mode 100644
index 0000000..14282f9
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/entity/Administrateur.java
@@ -0,0 +1,120 @@
+package entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Administrateur extends Employe {
+
+ public Administrateur(Agence agence, Entreprise entreprise)
+ {
+ super(agence, entreprise);
+ }
+
+ //TODO Expliquer le fonctionnement de la méthode en détail
+ public boolean attribuerMateriel(Empruntable empruntable, Emprunteur emprunteur)
+ {
+ if(empruntable.isLimitationPretAuxAgence())
+ {
+ if(emprunteur instanceof Agence || emprunteur instanceof Entreprise)
+ {
+ return validerTransfertMateriel(empruntable, emprunteur);
+ }
+ else
+ {
+ System.out.println("Matériel réservé");
+ }
+ }
+ else
+ {
+ return validerTransfertMateriel(empruntable, emprunteur);
+ }
+
+ return false;
+ }
+
+ private boolean validerTransfertMateriel(Empruntable empruntable, Emprunteur emprunteur)
+ {
+ entreprise.perdreMateriel(empruntable);
+ return emprunteur.ajouterAuStock(empruntable);
+ }
+
+ public boolean recupererMateriel(Empruntable empruntable, Emprunteur emprunteur)
+ {
+ if(emprunteur.perdreMateriel(empruntable))
+ {
+ return entreprise.ajouterAuStock(empruntable);
+ }
+
+ return false;
+ }
+
+ public List stockEntreprise()
+ {
+ return entreprise.listeMateriel();
+ }
+
+ public List stockAgence()
+ {
+ return agence.listeMateriel();
+ }
+
+ //TODO Détailler cette méthode
+ public void transfererMateriel(Emprunteur emprunteurSend, Empruntable empruntable, Emprunteur emprunteurReceive)
+ {
+ if(emprunteurSend.listeMateriel().contains(empruntable))
+ {
+ if(attribuerMateriel(empruntable, emprunteurReceive))
+ {
+ emprunteurSend.perdreMateriel(empruntable);
+ }
+ }
+ }
+
+ //TODO Détailler pourquoi passer parmis les employés de l'agence ET de l'entreprise (SS2I)
+ //TODO Peut-être passer par toutes les agences de l'entreprise ?
+ public void supprimerMateriel(Empruntable empruntable)
+ {
+ entreprise.perdreMateriel(empruntable);
+ agence.perdreMateriel(empruntable);
+
+ for(Employe employe : agence.getEmployes())
+ {
+ employe.perdreMateriel(empruntable);
+ }
+
+ for(Employe employe : entreprise.listeEmployes())
+ {
+ employe.perdreMateriel(empruntable);
+ }
+ }
+
+ public void supprimerMaterielDefectueuxEntreprise()
+ {
+ supprimerMaterielDefectueuxDe(entreprise);
+ }
+
+ public void supprimerMaterielDefectueuxAgence()
+ {
+ supprimerMaterielDefectueuxDe(agence);
+ }
+
+ public void supprimerMaterielDefectueuxAgence(Agence agence)
+ {
+ supprimerMaterielDefectueuxDe(agence);
+ }
+
+ private void supprimerMaterielDefectueuxDe(Emprunteur emprunteur)
+ {
+ int index = 0;
+
+ while(index < emprunteur.listeMateriel().size())
+ {
+ if(emprunteur.listeMateriel().get(index).isDefectueux())
+ {
+ emprunteur.perdreMateriel(emprunteur.listeMateriel().get(index));
+ }
+
+ index++;
+ }
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/entity/Agence.java b/ENSIM/Java/POOtpnote/src/main/java/entity/Agence.java
new file mode 100644
index 0000000..dfc0243
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/entity/Agence.java
@@ -0,0 +1,34 @@
+package entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Agence extends Emprunteur {
+
+ private List employes;
+ private String nom;
+
+ public Agence(String nom)
+ {
+ this.nom = nom;
+ employes = new ArrayList();
+ }
+
+ public List getEmployes() {
+ return employes;
+ }
+
+ //TODO Détailler l'ajout de l'ENSEMBLE des stocks
+ @Override
+ public List listeMateriel()
+ {
+ List stock = super.listeMateriel();
+
+ for(Employe employe : employes)
+ {
+ stock.addAll(employe.listeMateriel());
+ }
+
+ return stock;
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/entity/Employe.java b/ENSIM/Java/POOtpnote/src/main/java/entity/Employe.java
new file mode 100644
index 0000000..489c27f
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/entity/Employe.java
@@ -0,0 +1,13 @@
+package entity;
+
+public class Employe extends Emprunteur {
+
+ protected Agence agence;
+ protected Entreprise entreprise;
+
+ public Employe(Agence agence, Entreprise entreprise)
+ {
+ this.agence = agence;
+ this.entreprise = entreprise;
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/entity/Empruntable.java b/ENSIM/Java/POOtpnote/src/main/java/entity/Empruntable.java
new file mode 100644
index 0000000..9a9989e
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/entity/Empruntable.java
@@ -0,0 +1,33 @@
+package entity;
+
+//TODO Préciser pourquoi un package entity a été créé (héritage du matériel)
+public class Empruntable {
+
+ private boolean limitationPretAuxAgence;
+ private boolean defectueux;
+
+ public Empruntable() {}
+
+ public Empruntable(boolean limitationPretAuxAgence)
+ {
+ this.limitationPretAuxAgence = limitationPretAuxAgence;
+ }
+
+ public void declarerDefectueux()
+ {
+ defectueux = true;
+ }
+
+ public boolean isDefectueux()
+ {
+ return defectueux;
+ }
+
+ public boolean isLimitationPretAuxAgence() {
+ return limitationPretAuxAgence;
+ }
+
+ public void setLimitationPretAuxAgence(boolean limitationPretAuxAgence) {
+ this.limitationPretAuxAgence = limitationPretAuxAgence;
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/entity/Emprunteur.java b/ENSIM/Java/POOtpnote/src/main/java/entity/Emprunteur.java
new file mode 100644
index 0000000..966b0cb
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/entity/Emprunteur.java
@@ -0,0 +1,30 @@
+package entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Emprunteur {
+
+ private List stock;
+
+ public Emprunteur()
+ {
+ stock = new ArrayList();
+ }
+
+ //TODO Amélioration de la méthode, préciser pourquoi utiliser un boolean plutôt qu'un void
+ public boolean ajouterAuStock(Empruntable empruntable)
+ {
+ return stock.add(empruntable);
+ }
+
+ public List listeMateriel()
+ {
+ return stock;
+ }
+
+ public boolean perdreMateriel(Empruntable empruntable)
+ {
+ return stock.remove(empruntable);
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/entity/Entreprise.java b/ENSIM/Java/POOtpnote/src/main/java/entity/Entreprise.java
new file mode 100644
index 0000000..87d7ace
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/entity/Entreprise.java
@@ -0,0 +1,47 @@
+package entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Entreprise extends Emprunteur {
+
+ private List agences;
+ private List employes;
+ private String nomEntreprise;
+
+ public Entreprise(String nomEntreprise)
+ {
+ this.nomEntreprise = nomEntreprise;
+
+ agences = new ArrayList();
+ employes = new ArrayList();
+ }
+
+ public List listeEmployes() {
+ return employes;
+ }
+
+ public List getAgences()
+ {
+ return agences;
+ }
+
+ //TODO Détailler l'ajout de l'ENSEMBLE des stocks
+ @Override
+ public List listeMateriel()
+ {
+ List stock = super.listeMateriel();
+
+ for(Employe employe : employes)
+ {
+ stock.addAll(employe.listeMateriel());
+ }
+
+ for(Agence agence : agences)
+ {
+ stock.addAll(agence.listeMateriel());
+ }
+
+ return stock;
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/CasqueAvecMicro.java b/ENSIM/Java/POOtpnote/src/main/java/material/CasqueAvecMicro.java
new file mode 100644
index 0000000..6d99053
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/CasqueAvecMicro.java
@@ -0,0 +1,13 @@
+package material;
+
+import entity.Empruntable;
+
+public class CasqueAvecMicro extends Empruntable {
+
+ public CasqueAvecMicro() {}
+
+ public CasqueAvecMicro(boolean defectueux) {
+ super(defectueux);
+ }
+
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/Clavier.java b/ENSIM/Java/POOtpnote/src/main/java/material/Clavier.java
new file mode 100644
index 0000000..6217844
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/Clavier.java
@@ -0,0 +1,13 @@
+package material;
+
+import entity.Empruntable;
+
+public class Clavier extends Empruntable {
+
+ public Clavier() {}
+
+ public Clavier(boolean defectueux) {
+ super(defectueux);
+ }
+
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/Ecran.java b/ENSIM/Java/POOtpnote/src/main/java/material/Ecran.java
new file mode 100644
index 0000000..8c114cf
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/Ecran.java
@@ -0,0 +1,13 @@
+package material;
+
+import entity.Empruntable;
+
+public class Ecran extends Empruntable {
+
+ public Ecran() {}
+
+ public Ecran(boolean defectueux) {
+ super(defectueux);
+ }
+
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/Imprimante.java b/ENSIM/Java/POOtpnote/src/main/java/material/Imprimante.java
new file mode 100644
index 0000000..1d7d5b4
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/Imprimante.java
@@ -0,0 +1,11 @@
+package material;
+
+import entity.Empruntable;
+
+public class Imprimante extends Empruntable {
+
+ public Imprimante()
+ {
+ super(true);
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/PCPortable.java b/ENSIM/Java/POOtpnote/src/main/java/material/PCPortable.java
new file mode 100644
index 0000000..a29eb87
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/PCPortable.java
@@ -0,0 +1,13 @@
+package material;
+
+import entity.Empruntable;
+
+public class PCPortable extends Empruntable {
+
+ public PCPortable() {}
+
+ public PCPortable(boolean defectueux) {
+ super(defectueux);
+ }
+
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/Router.java b/ENSIM/Java/POOtpnote/src/main/java/material/Router.java
new file mode 100644
index 0000000..eb757c7
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/Router.java
@@ -0,0 +1,11 @@
+package material;
+
+import entity.Empruntable;
+
+public class Router extends Empruntable {
+
+ public Router()
+ {
+ super(true);
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/Souris.java b/ENSIM/Java/POOtpnote/src/main/java/material/Souris.java
new file mode 100644
index 0000000..30ced01
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/Souris.java
@@ -0,0 +1,13 @@
+package material;
+
+import entity.Empruntable;
+
+public class Souris extends Empruntable {
+
+ public Souris() {}
+
+ public Souris(boolean defectueux) {
+ super(defectueux);
+ }
+
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/TELPortable.java b/ENSIM/Java/POOtpnote/src/main/java/material/TELPortable.java
new file mode 100644
index 0000000..fd2bd96
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/TELPortable.java
@@ -0,0 +1,13 @@
+package material;
+
+import entity.Empruntable;
+
+public class TELPortable extends Empruntable {
+
+ public TELPortable() {}
+
+ public TELPortable(boolean defectueux) {
+ super(defectueux);
+ }
+
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/UC.java b/ENSIM/Java/POOtpnote/src/main/java/material/UC.java
new file mode 100644
index 0000000..81428f7
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/UC.java
@@ -0,0 +1,13 @@
+package material;
+
+import entity.Empruntable;
+
+public class UC extends Empruntable {
+
+ public UC() {}
+
+ public UC(boolean defectueux) {
+ super(defectueux);
+ }
+
+}
diff --git a/ENSIM/Java/POOtpnote/src/main/java/material/VideoProjecteur.java b/ENSIM/Java/POOtpnote/src/main/java/material/VideoProjecteur.java
new file mode 100644
index 0000000..c4cdafd
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/main/java/material/VideoProjecteur.java
@@ -0,0 +1,12 @@
+package material;
+
+import entity.Empruntable;
+
+public class VideoProjecteur extends Empruntable {
+
+ public VideoProjecteur()
+ {
+ super(true);
+ }
+
+}
diff --git a/ENSIM/Java/POOtpnote/src/test/java/AdministrateurTest.java b/ENSIM/Java/POOtpnote/src/test/java/AdministrateurTest.java
new file mode 100644
index 0000000..c271a9b
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/test/java/AdministrateurTest.java
@@ -0,0 +1,169 @@
+// Vos imports
+
+import entity.*;
+import material.Clavier;
+import material.Ecran;
+import material.Souris;
+import material.UC;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class AdministrateurTest {
+ Entreprise e;
+ Agence a1, a2;
+ Empruntable e1, e2, e3, e4, e5, e6;
+ Employe admin, emp1, emp2, emp3, emp4;
+
+ @Before
+ public void setUp() throws Exception {
+
+ e = new Entreprise("Super Entreprise de l'ENSIM");
+ a1 = new Agence("Agence du Sud");
+ a2 = new Agence("Agence du Nord");
+
+ e.getAgences().add(a1);
+ e.getAgences().add(a2);
+
+ e1 = new UC(true);
+ e2 = new Ecran();
+ e3 = new Souris();
+ e4 = new Clavier();
+ e5 = new Clavier();
+ e6 = new Ecran();
+
+ /*
+ e.ajouterAuStock(e1);
+ e.ajouterAuStock(e2);
+ e.ajouterAuStock(e3);
+ e.ajouterAuStock(e4);
+ e.ajouterAuStock(e5);
+ e.ajouterAuStock(e6);
+ */
+
+
+ admin = new Administrateur(a1, e);
+ emp1 = new Employe(a1, e);
+ emp2 = new Employe(a1, e);
+ emp3 = new Employe(a2, e);
+ emp4 = new Employe(a2, e);
+
+ a1.getEmployes().add(admin);
+ a1.getEmployes().add(emp1);
+ a1.getEmployes().add(emp2);
+
+ a2.getEmployes().add(emp3);
+ a2.getEmployes().add(emp4);
+ /*
+ e5.declarerDefectueux();
+ e6.declarerDefectueux();
+ */
+ }
+
+ @Test
+ public void attribuerMateriel() {
+
+ int stockActuel = admin.listeMateriel().size();
+ ((Administrateur) admin).attribuerMateriel(new Ecran(), admin);
+
+ Assert.assertEquals("attribuerMateriel: fail", stockActuel + 1, admin.listeMateriel().size());
+ }
+
+
+ //TODO Détailler modification par rapport au stock entreprise/administrateur (passage d'un stockage chez l'admin à un stockage dans l'entreprise)
+ @Test
+ public void recupererMateriel() {
+ int stockActuel = admin.listeMateriel().size();
+ emp1.listeMateriel().add(e1);
+ ((Administrateur) admin).recupererMateriel(e1, emp1);
+
+ Assert.assertEquals("recupererMateriel: fail", stockActuel + 1, ((Administrateur) admin).stockEntreprise().size());
+ }
+
+ @Test
+ public void stockEntreprise() {
+ e.listeMateriel().add(e1);
+ int stockEntreprise = ((Administrateur) admin).stockEntreprise().size();
+ Assert.assertEquals("stock entreprise: fail", 1, stockEntreprise);
+ }
+
+ @Test
+ public void stockAgence() {
+ a1.listeMateriel().add(e1);
+ int stockAgence = ((Administrateur) admin).stockAgence().size();
+ Assert.assertEquals("stock agence de l'admin: fail", 1, stockAgence);
+ }
+
+ @Test
+ public void transfererMateriel_envoyeurNaPasObjetTransfere() {
+ int stockEmp2 = emp2.listeMateriel().size();
+ ((Administrateur) admin).transfererMateriel(emp1, e2, emp2);
+ Assert.assertEquals("transfererMateriel (envoyeur n'a pas l'objet transféré): fail", stockEmp2, emp2.listeMateriel().size());
+ }
+
+ @Test
+ public void transfererMateriel_envoyeurAObjectMaisReserveAgence() {
+ int stockEmp2 = emp2.listeMateriel().size();
+ a1.listeMateriel().add(e1);
+
+ ((Administrateur) admin).transfererMateriel(a1, e1, emp2);
+ Assert.assertEquals("transfererMateriel (envoyeur a l'objet mais transfert réservé agences): fail", stockEmp2, emp2.listeMateriel().size());
+ }
+
+ @Test
+ public void transfererMateriel_OK() {
+ int stockEmp2 = emp2.listeMateriel().size();
+ emp1.listeMateriel().add(e2);
+ ((Administrateur) admin).transfererMateriel(emp1, e2, emp2);
+ Assert.assertEquals("transfererMateriel (transfert OK): fail", stockEmp2 + 1, emp2.listeMateriel().size());
+ }
+
+
+ @Test
+ public void supprimerMaterielDefectueuxEntreprise_sansMaterielDefectueux() {
+ e.listeMateriel().add(e4);
+ e.listeMateriel().add(e5);
+
+ int stockE = e.listeMateriel().size();
+ ((Administrateur) admin).supprimerMaterielDefectueuxEntreprise();
+ Assert.assertEquals("supprimerMaterielDefectueuxEntreprise_sansMaterielDefectueux: fail", stockE, e.listeMateriel().size());
+ }
+
+ @Test
+ public void supprimerMaterielDefectueuxEntreprise_avecMaterielDefectueux() {
+ e.listeMateriel().add(e4);
+ e.listeMateriel().add(e5);
+ e5.declarerDefectueux();
+
+ int stockE = e.listeMateriel().size();
+ ((Administrateur) admin).supprimerMaterielDefectueuxEntreprise();
+ Assert.assertEquals("supprimerMaterielDefectueuxEntreprise_avecMaterielDefectueux: fail", stockE - 1, e.listeMateriel().size());
+ for (Empruntable e : e.listeMateriel()) {
+ Assert.assertEquals("supprimerMaterielDefectueuxEntreprise_avecMaterielDefectueux: fail car il reste un Empruntable defectueux", false, e.isDefectueux());
+ }
+ }
+
+ @Test
+ public void supprimerMaterielDefectueuxAgence_sansMaterielDefectueux() {
+ a1.listeMateriel().add(e4);
+ a1.listeMateriel().add(e5);
+
+ int stockA1 = a1.listeMateriel().size();
+ ((Administrateur) admin).supprimerMaterielDefectueuxAgence();
+ Assert.assertEquals("supprimerMaterielDefectueuxAgence_sansMaterielDefectueux: fail", stockA1, a1.listeMateriel().size());
+ }
+
+ @Test
+ public void supprimerMaterielDefectueuxAgence_avecMaterielDefectueux() {
+ a1.listeMateriel().add(e4);
+ a1.listeMateriel().add(e5);
+ e5.declarerDefectueux();
+
+ int stockA1 = a1.listeMateriel().size();
+ ((Administrateur) admin).supprimerMaterielDefectueuxAgence();
+ Assert.assertEquals("supprimerMaterielDefectueuxAgence_avecMaterielDefectueux: fail", stockA1 - 1, a1.listeMateriel().size());
+ for (Empruntable e : a1.listeMateriel()) {
+ Assert.assertEquals("supprimerMaterielDefectueuxAgence_avecMaterielDefectueux: fail car il reste un Empruntable defectueux", false, e.isDefectueux());
+ }
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/src/test/java/EmprunteurTest.java b/ENSIM/Java/POOtpnote/src/test/java/EmprunteurTest.java
new file mode 100644
index 0000000..5bbd730
--- /dev/null
+++ b/ENSIM/Java/POOtpnote/src/test/java/EmprunteurTest.java
@@ -0,0 +1,54 @@
+// Vos imports ici
+
+import entity.Empruntable;
+import entity.Emprunteur;
+import material.UC;
+import org.junit.Assert;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+
+//TODO Ajouter Log4J
+
+public class EmprunteurTest {
+ static Emprunteur e1;
+
+ //TODO Passage de @Before à @BeforeAll + passage de la méthode en static
+ @BeforeAll
+ public static void setUp() {
+ e1 = new Emprunteur();
+ }
+
+ @Test
+ public void ajouterAuStock() {
+ int stock = e1.listeMateriel().size();
+ e1.ajouterAuStock(new UC());
+
+ Assert.assertEquals("ajouterAuStock: fail", stock+1, e1.listeMateriel().size());
+ }
+
+ //TODO Expliquer la modifification du test unitaire
+ @Test
+ public void listeMateriel() {
+ //e1.stock = new ArrayList();
+ int stock = e1.listeMateriel().size();
+ //e1.stock.add(new UC());
+ e1.ajouterAuStock(new UC());
+
+ int newStock = e1.listeMateriel().size();
+
+ Assert.assertEquals("listeMateriel: fail", stock+1, newStock);
+ }
+
+ @Test
+ public void perdreMateriel() {
+ Empruntable emprunt1 = new UC();
+ e1.listeMateriel().add(emprunt1);
+
+ boolean result = e1.perdreMateriel(emprunt1);
+
+ Assert.assertEquals("perdreMateriel: méthode fail", true, result);
+ Assert.assertEquals("perdreMateriel: taille fail", 0, e1.listeMateriel().size());
+ }
+}
diff --git a/ENSIM/Java/POOtpnote/target/classes/entity/Administrateur.class b/ENSIM/Java/POOtpnote/target/classes/entity/Administrateur.class
new file mode 100644
index 0000000..a31c9e2
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/entity/Administrateur.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/entity/Agence.class b/ENSIM/Java/POOtpnote/target/classes/entity/Agence.class
new file mode 100644
index 0000000..9790296
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/entity/Agence.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/entity/Employe.class b/ENSIM/Java/POOtpnote/target/classes/entity/Employe.class
new file mode 100644
index 0000000..4a56c75
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/entity/Employe.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/entity/Empruntable.class b/ENSIM/Java/POOtpnote/target/classes/entity/Empruntable.class
new file mode 100644
index 0000000..968b5a3
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/entity/Empruntable.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/entity/Emprunteur.class b/ENSIM/Java/POOtpnote/target/classes/entity/Emprunteur.class
new file mode 100644
index 0000000..5b2ba61
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/entity/Emprunteur.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/entity/Entreprise.class b/ENSIM/Java/POOtpnote/target/classes/entity/Entreprise.class
new file mode 100644
index 0000000..e926082
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/entity/Entreprise.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/CasqueAvecMicro.class b/ENSIM/Java/POOtpnote/target/classes/material/CasqueAvecMicro.class
new file mode 100644
index 0000000..ccb5f05
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/CasqueAvecMicro.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/Clavier.class b/ENSIM/Java/POOtpnote/target/classes/material/Clavier.class
new file mode 100644
index 0000000..724a888
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/Clavier.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/Ecran.class b/ENSIM/Java/POOtpnote/target/classes/material/Ecran.class
new file mode 100644
index 0000000..f02c962
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/Ecran.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/Imprimante.class b/ENSIM/Java/POOtpnote/target/classes/material/Imprimante.class
new file mode 100644
index 0000000..d0fba9b
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/Imprimante.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/PCPortable.class b/ENSIM/Java/POOtpnote/target/classes/material/PCPortable.class
new file mode 100644
index 0000000..c7c239a
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/PCPortable.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/Router.class b/ENSIM/Java/POOtpnote/target/classes/material/Router.class
new file mode 100644
index 0000000..d45c499
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/Router.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/Souris.class b/ENSIM/Java/POOtpnote/target/classes/material/Souris.class
new file mode 100644
index 0000000..2ad754c
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/Souris.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/TELPortable.class b/ENSIM/Java/POOtpnote/target/classes/material/TELPortable.class
new file mode 100644
index 0000000..506177c
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/TELPortable.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/UC.class b/ENSIM/Java/POOtpnote/target/classes/material/UC.class
new file mode 100644
index 0000000..2089681
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/UC.class differ
diff --git a/ENSIM/Java/POOtpnote/target/classes/material/VideoProjecteur.class b/ENSIM/Java/POOtpnote/target/classes/material/VideoProjecteur.class
new file mode 100644
index 0000000..bf4dc9c
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/classes/material/VideoProjecteur.class differ
diff --git a/ENSIM/Java/POOtpnote/target/test-classes/AdministrateurTest.class b/ENSIM/Java/POOtpnote/target/test-classes/AdministrateurTest.class
new file mode 100644
index 0000000..2d03ca6
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/test-classes/AdministrateurTest.class differ
diff --git a/ENSIM/Java/POOtpnote/target/test-classes/EmprunteurTest.class b/ENSIM/Java/POOtpnote/target/test-classes/EmprunteurTest.class
new file mode 100644
index 0000000..890fcd8
Binary files /dev/null and b/ENSIM/Java/POOtpnote/target/test-classes/EmprunteurTest.class differ