From 88fe5eb0f43c7beea046dd2cd72120c4a0093050 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9CKhaoula?=
 <“khaoula.arouissi@imt-atlantique.net”>
Date: Thu, 31 Oct 2024 00:26:21 +0100
Subject: [PATCH] =?UTF-8?q?Petri=20Net=20corrig=C3=A9=20avec=20Tests=20com?=
 =?UTF-8?q?plets=20avec=20tests=207.5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/org/petriNet/Arc.java           |  4 +
 .../java/org/petriNet/PetriNetService.java    |  7 ++
 src/main/java/org/petriNet/ReseauPetri.java   | 31 +++++++
 .../java/org/petriNet/ReseauPetriTest.java    | 91 ++++++++++++++++---
 4 files changed, 120 insertions(+), 13 deletions(-)

diff --git a/src/main/java/org/petriNet/Arc.java b/src/main/java/org/petriNet/Arc.java
index 0f04b62..f2248c3 100644
--- a/src/main/java/org/petriNet/Arc.java
+++ b/src/main/java/org/petriNet/Arc.java
@@ -44,6 +44,10 @@ public abstract class Arc {
     public Transition getTransition(){
         return this.transition;
     };
+
+    public void supprimerPlace(Place place) {
+        this.place = null;
+    }
 }
 
 
diff --git a/src/main/java/org/petriNet/PetriNetService.java b/src/main/java/org/petriNet/PetriNetService.java
index 95d8001..918fda7 100644
--- a/src/main/java/org/petriNet/PetriNetService.java
+++ b/src/main/java/org/petriNet/PetriNetService.java
@@ -7,6 +7,12 @@ public interface PetriNetService {
 	public void ajouterTransition(Transition transition);
 	
 	public void ajouterArc(Arc arc);
+
+	public void supprimerPlace(Place place);
+
+	public void supprimerTransition(Transition transition);
+
+	public void supprimerArc(Arc arc);
 	
 	public void afficherEtat();
 
@@ -18,4 +24,5 @@ public interface PetriNetService {
 	public void afficherReseau();
 
 	public void tirer_transition(String id);
+
 }
diff --git a/src/main/java/org/petriNet/ReseauPetri.java b/src/main/java/org/petriNet/ReseauPetri.java
index 214359f..4a15acf 100644
--- a/src/main/java/org/petriNet/ReseauPetri.java
+++ b/src/main/java/org/petriNet/ReseauPetri.java
@@ -102,6 +102,36 @@ public class ReseauPetri implements PetriNetService {
 		this.arcs.add(arc);
 	}
 
+	/**
+	 * Supprimer une place entraîne la suppression de tous les arcs qui y sont liés.
+	 * Supprimer une transition entraîne la suppression de tous les arcs qui y sont liés.
+	 */
+
+	@Override
+	public void supprimerPlace(Place place) {
+		this.places.remove(place);
+		// remove all arcs linked to the place
+        this.arcs.removeIf(arc -> arc.getPlace().getId() == place.getId());
+	}
+
+	@Override
+	public void supprimerTransition(Transition transition) {
+		this.transitions.remove(transition);
+		// remove all arcs linked to the transition
+		this.arcs.removeIf(arc -> arc.getTransition().getId() == transition.getId());
+	}
+
+	@Override
+	public void supprimerArc(Arc arc) {
+		this.arcs.remove(arc);
+		// remove it from the list of arcs of the transition
+		if (arc instanceof Arc_ENTRANT) {
+			arc.getTransition().getArcs_ENTRANTS().remove(arc);
+		} else if (arc instanceof Arc_SORTANT) {
+			arc.getTransition().getArcs_SORTANTS().remove(arc);
+		}
+	}
+
 	@Override
 	public void tirer_transition(String id) {
 
@@ -129,6 +159,7 @@ public class ReseauPetri implements PetriNetService {
 
 	}
 
+
 	@Override
 	public void afficherEtat() {
 		// TODO Auto-generated method stub
diff --git a/src/test/java/org/petriNet/ReseauPetriTest.java b/src/test/java/org/petriNet/ReseauPetriTest.java
index f942ba8..ae0c35b 100644
--- a/src/test/java/org/petriNet/ReseauPetriTest.java
+++ b/src/test/java/org/petriNet/ReseauPetriTest.java
@@ -8,24 +8,11 @@ import static org.junit.jupiter.api.Assertions.*;
 
 public class ReseauPetriTest {
 
-    /**
-     * Les fonctions à tester suivantes n’affichent rien. Elles créent des objets et les retournent à la
-     * fonction de test. C’est la fonction de test qui affiche afin que les testeurs puissent observer les
-     * résultats
-     */
-
     private ReseauPetri reseauPetri;
     private List<Place> places;
     private List<Transition> transitions;
     private LinkedList<Arc> arcs;
 
-    /**
-     * Créer un reseauPetri vide sans entrée. Résultat attendu : un RdP est créé vide
-     * Créer une transition. Résultat attendu : une transition est créée (sans lien)
-     * Créer une place avec nombres de jetons. Les cas : jetons ≥0, jetons < 0.
-     * Résultat attendu : une place est créée (sans lien), aucune place n’est créée ; Erreur
-     */
-
     @BeforeEach
     public void setUp() {
         reseauPetri = new ReseauPetri();
@@ -434,4 +421,82 @@ public class ReseauPetriTest {
 
     }
 
+    // Tests de supression
+    @Test
+    public void testSupprimerTransition() {
+        ReseauPetri Supp = new ReseauPetri();
+
+        Transition T1 = new Transition("T1", Supp.generateId(2));
+        Supp.ajouterTransition(T1);
+        Supp.supprimerTransition(T1);
+        Supp.afficherReseau();
+    }
+
+    @Test
+    public void testDestruction_Place(){
+        ReseauPetri Destruction = new ReseauPetri();
+
+        // créer un réseau de petri similaire à Active dans testActiverPetri_3
+        Place P1 = new Place(2, Destruction.generateId(1));
+        Destruction.ajouterPlace(P1);
+
+        Transition T1 = new Transition("T1", Destruction.generateId(2));
+
+        // Creer l'arc entrant simple à T1 de P1
+        Arc_ENTRANT arc = new Arc_entrant_simple(T1, P1, 1, Destruction.generateId(0));
+        Destruction.ajouterArc(arc);
+
+        T1.ajouterArc_ENTRANT(arc);
+        Destruction.ajouterTransition(T1);
+
+        // Supprimer la place P1
+        Destruction.supprimerPlace(P1);
+        Destruction.afficherReseau();
+
+    }
+
+    @Test
+    public void testDestruction_Transition() {
+        ReseauPetri Destruction = new ReseauPetri();
+
+        // créer un réseau de petri similaire à Active dans testActiverPetri_3
+        Place P1 = new Place(2, Destruction.generateId(1));
+        Destruction.ajouterPlace(P1);
+
+        Transition T1 = new Transition("T1", Destruction.generateId(2));
+
+        // Creer l'arc entrant simple à T1 de P1
+        Arc_ENTRANT arc = new Arc_entrant_simple(T1, P1, 1, Destruction.generateId(0));
+        Destruction.ajouterArc(arc);
+
+        T1.ajouterArc_ENTRANT(arc);
+        Destruction.ajouterTransition(T1);
+
+        // Supprimer la transition T1
+        Destruction.supprimerTransition(T1);
+        Destruction.afficherReseau();
+    }
+
+    @Test
+    public void testDestruction_Arc() {
+        ReseauPetri Destruction = new ReseauPetri();
+
+        // créer un réseau de petri similaire à Active dans testActiverPetri_3
+        Place P1 = new Place(2, Destruction.generateId(1));
+        Destruction.ajouterPlace(P1);
+
+        Transition T1 = new Transition("T1", Destruction.generateId(2));
+
+        // Creer l'arc entrant simple à T1 de P1
+        Arc_ENTRANT arc = new Arc_entrant_simple(T1, P1, 1, Destruction.generateId(0));
+        Destruction.ajouterArc(arc);
+
+        T1.ajouterArc_ENTRANT(arc);
+        Destruction.ajouterTransition(T1);
+
+        // Supprimer l'arc
+        Destruction.supprimerArc(arc);
+        Destruction.afficherReseau();
+    }
+
 }
-- 
GitLab