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