diff --git a/src/main/java/avatartranslator/mutation/RmActionOnSignalMutation.java b/src/main/java/avatartranslator/mutation/RmActionOnSignalMutation.java index e334fbe4f61ed843ffda4cb052c6b8da3a059bc9..2aa0cbeb862ad0ce207ac90859060e887980918c 100644 --- a/src/main/java/avatartranslator/mutation/RmActionOnSignalMutation.java +++ b/src/main/java/avatartranslator/mutation/RmActionOnSignalMutation.java @@ -40,6 +40,9 @@ package avatartranslator.mutation; import avatartranslator.*; +import java.util.LinkedList; +import java.util.List; + /** * Class MdRandomMutation * Creation: 28/06/2022 @@ -65,6 +68,25 @@ public class RmActionOnSignalMutation extends ActionOnSignalMutation implements if (aaos == null) { throw new ApplyMutationException("no such action on signal in block " + getBlockName()); } + List<AvatarStateMachineElement> asmElements = asm.getListOfElements(); + List<AvatarStateMachineElement> asmElementsToRemove = new LinkedList<>(); + //adding to the asmElementsToRemove list the transitions leading to the action on signal operator + for (AvatarStateMachineElement element : asmElements) { + if (element.getNexts().contains(aaos)) { + for (AvatarStateMachineElement element2 : asmElements) { + if (element2.getNexts().contains(element)) { + element2.removeNext(element); + } + } + asmElementsToRemove.add(element); + } + //adding to the asmElementsToRemove list the transitions starting from the action on signal operator + asmElementsToRemove.addAll(aaos.getNexts()); + } + //removing the incoming and outgoing transitions from the Avatar specification + for (AvatarStateMachineElement element : asmElementsToRemove){ + asm.removeElement(element); + } asm.removeElement(aaos); } diff --git a/src/main/java/avatartranslator/mutation/RmStateMutation.java b/src/main/java/avatartranslator/mutation/RmStateMutation.java index 22c77e466bececad9b1a1f85654958f881bf8721..7fbfd4e1e8451b00c517149753c81c3d626a8f2b 100644 --- a/src/main/java/avatartranslator/mutation/RmStateMutation.java +++ b/src/main/java/avatartranslator/mutation/RmStateMutation.java @@ -63,6 +63,7 @@ public class RmStateMutation extends StateMutation implements RmMutation { AvatarStateMachine asm = getAvatarStateMachine(_avspec); List<AvatarStateMachineElement> asmElements = asm.getListOfElements(); List<AvatarStateMachineElement> asmElementsToRemove = new LinkedList<>(); + //adding to the asmElementsToRemove list the transitions leading to the state for (AvatarStateMachineElement element : asmElements) { if (element.getNexts().contains(state)) { for (AvatarStateMachineElement element2 : asmElements) { @@ -72,13 +73,10 @@ public class RmStateMutation extends StateMutation implements RmMutation { } asmElementsToRemove.add(element); } - if (element == state) { - for (AvatarStateMachineElement element3 : state.getNexts()) { - asmElementsToRemove.add(element3); - } - } + //adding to the asmElementsToRemove list the transitions starting from the state + asmElementsToRemove.addAll(state.getNexts()); } - System.out.println(asmElementsToRemove.toString()); + //removing the incoming and outgoing transitions from the Avatar specification for (AvatarStateMachineElement element : asmElementsToRemove){ asm.removeElement(element); }