Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/org.eclipse.etrice.core.genmodel.fsm.tests')
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/META-INF/MANIFEST.MF4
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/build.properties3
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/CodeInheritanceExample.room104
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/output/HierInheritedFSMExample.fsmgen (renamed from tests/org.eclipse.etrice.core.genmodel.fsm.tests/output/HierInheritedFSMExample.fsmgen2)12
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.xtend2
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestCodeInheritance.xtend83
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestMultipleConnectedChoicepoint.xtend1
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.xtend22
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.java2
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/TestCodeInheritance.java141
-rw-r--r--tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.java42
11 files changed, 372 insertions, 44 deletions
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/META-INF/MANIFEST.MF
index 3edd0318d..5e5fa8256 100644
--- a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/META-INF/MANIFEST.MF
@@ -8,8 +8,8 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Require-Bundle: org.junit;bundle-version="4.12.0",
org.eclipse.osgi;bundle-version="3.11.2",
org.eclipse.core.runtime;bundle-version="3.12.0",
- org.eclipse.etrice.core.genmodel.fsm2;bundle-version="1.0.0",
org.eclipse.etrice.core.room;bundle-version="1.1.0",
- org.eclipse.etrice.core.room.tests;bundle-version="1.1.0"
+ org.eclipse.etrice.core.room.tests;bundle-version="1.1.0",
+ org.eclipse.etrice.core.genmodel.fsm;bundle-version="1.1.0"
Bundle-Activator: org.eclipse.etrice.core.genmodel.fsm.tests.FSMGenModelTestsActivator
Bundle-ActivationPolicy: lazy
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/build.properties b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/build.properties
index 34d2e4d2d..d8e2f0e92 100644
--- a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/build.properties
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/build.properties
@@ -1,4 +1,5 @@
-source.. = src/
+source.. = src/,\
+ xtend-gen/
output.. = bin/
bin.includes = META-INF/,\
.
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/CodeInheritanceExample.room b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/CodeInheritanceExample.room
new file mode 100644
index 000000000..e117cc638
--- /dev/null
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/CodeInheritanceExample.room
@@ -0,0 +1,104 @@
+RoomModel TemplateModel {
+
+ ActorClass TestActor extends Base {
+ Structure { }
+ Behavior {
+ StateMachine {
+ RefinedState BaseEntryExit {
+ entry {
+ "// derived entry"
+ }
+ }
+ RefinedState Base {
+ exit {
+ "// derived exit"
+ }
+ subgraph {
+ Transition init: initial -> state0 { }
+ State state0
+ }
+ }
+ RefinedState BaseSub {
+ entry {
+ "// derived entry"
+ }
+ }
+ }
+ }
+ }
+
+ ActorClass Base {
+ Interface {
+ Port p0: PC
+ }
+ Structure {
+ external Port p0
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> BaseEntryExit {
+ action {
+ "// base init"
+ }
+ }
+ Transition tr0: BaseEntryExit -> Base {
+ triggers {
+ <m1: p0>
+ }
+ action {
+ "// base"
+ }
+ }
+ Transition tr1: Base -> BaseSub {
+ triggers {
+ <m1: p0>
+ }
+ action {
+ "// base"
+ }
+ }
+ Transition tr2: BaseSub -> BaseEntryExitSub {
+ triggers {
+ <m1: p0>
+ }
+ action {
+ "// base"
+ }
+ }
+ State BaseEntryExit {
+ entry {
+ "// base entry"
+ }
+ exit {
+ "// base exit"
+ }
+ }
+ State Base
+ State BaseSub {
+ subgraph {
+ Transition init: initial -> state0 { }
+ State state0
+ }
+ }
+ State BaseEntryExitSub {
+ entry {
+ "// base entry"
+ }
+ exit {
+ "// base exit"
+ }
+ subgraph {
+ Transition init: initial -> state0 { }
+ State state0
+ }
+ }
+ }
+ }
+ }
+
+ ProtocolClass PC {
+ incoming {
+ Message m1()
+ }
+ }
+} \ No newline at end of file
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/output/HierInheritedFSMExample.fsmgen2 b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/output/HierInheritedFSMExample.fsmgen
index e8eee7d75..cd2dd63a9 100644
--- a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/output/HierInheritedFSMExample.fsmgen2
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/output/HierInheritedFSMExample.fsmgen
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="ASCII"?>
-<fsmgen:GraphContainer xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:fsmgen="http://www.eclipse.org/etrice/generator/fsm2">
+<fsmgen:GraphContainer xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:fsmgen="http://www.eclipse.org/etrice/generator/fsm">
<graph>
<nodes inherited="true" outgoing="//@graph/@links.1 //@graph/@links.4" incoming="//@graph/@links.0">
<subgraph>
- <nodes incoming="//@graph/@nodes.0/@subgraph/@links.0">
+ <nodes incoming="//@graph/@nodes.0/@subgraph/@links.0" inheritanceLevel="1">
<stateGraphNode href="file:/C:/Users/hrentz/EclipseInstallations/etrice-neon/git/org.eclipse.etrice/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/HierInheritedFSMExample.room#SimpleState:TestActor$state0$state0_0"/>
</nodes>
<links target="//@graph/@nodes.0/@subgraph/@nodes.0">
@@ -29,10 +29,10 @@
</nodes>
<nodes inherited="true" incoming="//@graph/@nodes.2/@subgraph/@links.1">
<subgraph>
- <nodes outgoing="//@graph/@nodes.2/@subgraph/@nodes.3/@subgraph/@links.1" incoming="//@graph/@nodes.2/@subgraph/@nodes.3/@subgraph/@links.0">
+ <nodes outgoing="//@graph/@nodes.2/@subgraph/@nodes.3/@subgraph/@links.1" incoming="//@graph/@nodes.2/@subgraph/@nodes.3/@subgraph/@links.0" inheritanceLevel="1">
<stateGraphNode href="file:/C:/Users/hrentz/EclipseInstallations/etrice-neon/git/org.eclipse.etrice/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/HierInheritedFSMExample.room#SimpleState:TestActor$state1$state1_1$state1_1_0"/>
</nodes>
- <nodes incoming="//@graph/@nodes.2/@subgraph/@nodes.3/@subgraph/@links.1">
+ <nodes incoming="//@graph/@nodes.2/@subgraph/@nodes.3/@subgraph/@links.1" inheritanceLevel="1">
<stateGraphNode href="file:/C:/Users/hrentz/EclipseInstallations/etrice-neon/git/org.eclipse.etrice/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/HierInheritedFSMExample.room#SimpleState:TestActor$state1$state1_1$state1_1_1"/>
</nodes>
<links target="//@graph/@nodes.2/@subgraph/@nodes.3/@subgraph/@nodes.0">
@@ -45,7 +45,7 @@
</subgraph>
<stateGraphNode href="file:/C:/Users/hrentz/EclipseInstallations/etrice-neon/git/org.eclipse.etrice/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/HierInheritedFSMExample.room#RefinedState:TestActor$state1$state1_1"/>
</nodes>
- <nodes outgoing="//@graph/@nodes.2/@subgraph/@links.3 //@graph/@nodes.2/@subgraph/@links.4" incoming="//@graph/@nodes.2/@subgraph/@links.2">
+ <nodes outgoing="//@graph/@nodes.2/@subgraph/@links.3 //@graph/@nodes.2/@subgraph/@links.4" incoming="//@graph/@nodes.2/@subgraph/@links.2" inheritanceLevel="1">
<stateGraphNode href="file:/C:/Users/hrentz/EclipseInstallations/etrice-neon/git/org.eclipse.etrice/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/HierInheritedFSMExample.room#SimpleState:TestActor$state1$state1_2"/>
</nodes>
<links inherited="true" target="//@graph/@nodes.2/@subgraph/@nodes.2">
@@ -67,7 +67,7 @@
</subgraph>
<stateGraphNode href="file:/C:/Users/hrentz/EclipseInstallations/etrice-neon/git/org.eclipse.etrice/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/HierInheritedFSMExample.room#RefinedState:TestActor$state1"/>
</nodes>
- <nodes outgoing="//@graph/@links.5" incoming="//@graph/@links.4">
+ <nodes outgoing="//@graph/@links.5" incoming="//@graph/@links.4" inheritanceLevel="1">
<stateGraphNode href="file:/C:/Users/hrentz/EclipseInstallations/etrice-neon/git/org.eclipse.etrice/tests/org.eclipse.etrice.core.genmodel.fsm.tests/models/HierInheritedFSMExample.room#SimpleState:TestActor$state3"/>
</nodes>
<links inherited="true" target="//@graph/@nodes.0">
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.xtend b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.xtend
index 59059dac0..e6cf80196 100644
--- a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.xtend
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.xtend
@@ -42,7 +42,7 @@ class FsmGenTestBase extends TestBase {
protected def save(GraphContainer gc, String fileName) {
val rs = new ResourceSetImpl
- val uri = URI.createFileURI("./output/" + fileName + ".fsmgen2")
+ val uri = URI.createFileURI("./output/" + fileName + ".fsmgen")
val res = rs.createResource(uri)
res.contents.add(gc)
res.save(newHashMap)
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestCodeInheritance.xtend b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestCodeInheritance.xtend
new file mode 100644
index 000000000..ace7fa309
--- /dev/null
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestCodeInheritance.xtend
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2017 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Henrik Rentz-Reichert (initial contribution)
+ *
+ *******************************************************************************/
+
+package org.eclipse.etrice.core.genmodel.fsm.tests
+
+import org.eclipse.etrice.core.fsm.fSM.RefinedState
+import org.eclipse.etrice.core.fsm.util.FSMHelpers
+import org.eclipse.etrice.core.genmodel.fsm.FsmGenChecker
+import org.eclipse.etrice.core.genmodel.fsm.NullLogger
+import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer
+import org.junit.Before
+import org.junit.Test
+
+import static org.junit.Assert.assertEquals
+import static org.junit.Assert.assertFalse
+import static org.junit.Assert.assertNotNull
+import static org.junit.Assert.assertNull
+import static org.junit.Assert.assertTrue
+
+import static extension org.eclipse.etrice.core.genmodel.fsm.FsmGenExtensions.*
+
+class TestCodeInheritance extends FsmGenTestBase {
+
+ GraphContainer gc
+
+ extension FSMHelpers fsmHelpers = new FSMHelpers
+
+ @Before
+ def void SetUp() {
+ gc = getGraphContainer("CodeInheritanceExample.room", "TestActor")
+ assertNotNull("graph context was created", gc)
+
+ val logger = new NullLogger
+ FsmGenChecker.check(gc, logger)
+ assertFalse("logger has no errors", logger.hasErrors)
+ assertFalse("diagnostician has no errors", diagnostician.isFailed)
+ }
+
+ @Test
+ def void testActionCodes_BaseEntryExit() {
+ val s = gc.graph.allStateNodes.findFirst[name.equals("BaseEntryExit")]
+ assertNotNull("state found", s)
+ assertTrue("refined state", s.stateGraphNode instanceof RefinedState)
+ val rs = s.stateGraphNode as RefinedState
+ assertEquals("entry code", "// derived entry\n", rs.entryCode.detailCode)
+ assertNull("exit code", rs.exitCode)
+ assertEquals("inherited entry", "// base entry\n", rs.inheritedEntryCode.detailCode)
+ assertEquals("inherited exit", "// base exit\n", rs.inheritedExitCode.detailCode)
+ }
+
+ @Test
+ def void testActionCodes_Base() {
+ val s = gc.graph.allStateNodes.findFirst[name.equals("Base")]
+ assertNotNull("state found", s)
+ assertTrue("refined state", s.stateGraphNode instanceof RefinedState)
+ val rs = s.stateGraphNode as RefinedState
+ assertNull("entry code", rs.entryCode)
+ assertEquals("exit code", "// derived exit\n", rs.exitCode.detailCode)
+ assertEquals("inherited entry", "", rs.inheritedEntryCode.detailCode)
+ assertEquals("inherited exit", "", rs.inheritedExitCode.detailCode)
+ }
+
+ @Test
+ def void testActionCodes_BaseSub() {
+ val s = gc.graph.allStateNodes.findFirst[name.equals("BaseSub")]
+ assertNotNull("state found", s)
+ assertTrue("refined state", s.stateGraphNode instanceof RefinedState)
+ val rs = s.stateGraphNode as RefinedState
+ assertEquals("entry code", "// derived entry\n", rs.entryCode.detailCode)
+ assertNull("exit code", rs.exitCode)
+ assertEquals("inherited entry", "", rs.inheritedEntryCode.detailCode)
+ assertEquals("inherited exit", "", rs.inheritedExitCode.detailCode)
+ }
+} \ No newline at end of file
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestMultipleConnectedChoicepoint.xtend b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestMultipleConnectedChoicepoint.xtend
index 4a991a136..613854ace 100644
--- a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestMultipleConnectedChoicepoint.xtend
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestMultipleConnectedChoicepoint.xtend
@@ -19,7 +19,6 @@ import org.eclipse.etrice.core.fsm.fSM.TriggeredTransition
import org.eclipse.etrice.core.genmodel.fsm.FsmGenChecker
import org.eclipse.etrice.core.genmodel.fsm.NullLogger
import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer
-import org.eclipse.etrice.core.naming.RoomNameProvider
import org.eclipse.etrice.core.room.DataClass
import org.eclipse.etrice.core.room.VarDecl
import org.junit.Before
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.xtend b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.xtend
index aef2cadd0..13831a137 100644
--- a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.xtend
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/src/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.xtend
@@ -12,9 +12,9 @@
package org.eclipse.etrice.core.genmodel.fsm.tests
-import org.eclipse.etrice.core.genmodel.fsm.ExtendedFsmGenBuilder
import org.eclipse.etrice.core.genmodel.fsm.FsmGenChecker
import org.eclipse.etrice.core.genmodel.fsm.NullLogger
+import org.eclipse.etrice.core.genmodel.fsm.TriggerExtensions
import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer
import org.junit.Before
import org.junit.Test
@@ -60,11 +60,11 @@ class TestTrigger extends FsmGenTestBase {
assertEquals("leave state triggers", 3, s.caughtTriggers.size)
assertEquals("1st trigger", "in3".trigger , s.caughtTriggers.get(0).trigger)
- assertEquals("1st trigger, transitions", 1, s.caughtTriggers.get(0).transitions.size)
+ assertEquals("1st trigger, transitions", 1, s.caughtTriggers.get(0).links.size)
assertEquals("2nd trigger", "in1".trigger , s.caughtTriggers.get(1).trigger)
- assertEquals("2nd trigger, transitions", 1, s.caughtTriggers.get(1).transitions.size)
+ assertEquals("2nd trigger, transitions", 1, s.caughtTriggers.get(1).links.size)
assertEquals("3rd trigger", "in2".trigger , s.caughtTriggers.get(2).trigger)
- assertEquals("3rd trigger, transitions", 1, s.caughtTriggers.get(2).transitions.size)
+ assertEquals("3rd trigger, transitions", 1, s.caughtTriggers.get(2).links.size)
}
@Test
@@ -75,9 +75,9 @@ class TestTrigger extends FsmGenTestBase {
assertEquals("leave state triggers", 2, s.caughtTriggers.size)
assertEquals("1st trigger", "in2".trigger , s.caughtTriggers.get(0).trigger)
- assertEquals("1st trigger, transitions", 1, s.caughtTriggers.get(0).transitions.size)
+ assertEquals("1st trigger, transitions", 1, s.caughtTriggers.get(0).links.size)
assertEquals("2nd trigger", "in1".trigger , s.caughtTriggers.get(1).trigger)
- assertEquals("2nd trigger, transitions", 1, s.caughtTriggers.get(1).transitions.size)
+ assertEquals("2nd trigger, transitions", 1, s.caughtTriggers.get(1).links.size)
}
@Test
@@ -89,9 +89,9 @@ class TestTrigger extends FsmGenTestBase {
assertEquals("1st trigger", "in1".trigger , s.caughtTriggers.get(0).trigger)
// note: the transition in the sub graph is unguarded and hides the top level one
- assertEquals("1st trigger, transitions", 1, s.caughtTriggers.get(0).transitions.size)
+ assertEquals("1st trigger, transitions", 1, s.caughtTriggers.get(0).links.size)
assertEquals("2nd trigger", "in2".trigger , s.caughtTriggers.get(1).trigger)
- assertEquals("2nd trigger, transitions", 1, s.caughtTriggers.get(1).transitions.size)
+ assertEquals("2nd trigger, transitions", 1, s.caughtTriggers.get(1).links.size)
}
@Test
@@ -103,12 +103,12 @@ class TestTrigger extends FsmGenTestBase {
assertEquals("1st trigger", "in1".trigger , s.caughtTriggers.get(0).trigger)
// note: the transition in the sub graph is guarded and two top level ones are also added
- assertEquals("1st trigger, transitions", 3, s.caughtTriggers.get(0).transitions.size)
+ assertEquals("1st trigger, transitions", 3, s.caughtTriggers.get(0).links.size)
assertEquals("2nd trigger", "in2".trigger , s.caughtTriggers.get(1).trigger)
- assertEquals("2nd trigger, transitions", 1, s.caughtTriggers.get(1).transitions.size)
+ assertEquals("2nd trigger, transitions", 1, s.caughtTriggers.get(1).links.size)
}
def trigger(String msg) {
- "p0" + ExtendedFsmGenBuilder.TRIGGER_SEP + msg
+ "p0" + TriggerExtensions.TRIGGER_SEP + msg
}
} \ No newline at end of file
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.java b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.java
index f2edd35ba..26cfd2976 100644
--- a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.java
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/FsmGenTestBase.java
@@ -76,7 +76,7 @@ public class FsmGenTestBase extends TestBase {
protected void save(final GraphContainer gc, final String fileName) {
try {
final ResourceSetImpl rs = new ResourceSetImpl();
- final URI uri = URI.createFileURI((("./output/" + fileName) + ".fsmgen2"));
+ final URI uri = URI.createFileURI((("./output/" + fileName) + ".fsmgen"));
final Resource res = rs.createResource(uri);
EList<EObject> _contents = res.getContents();
_contents.add(gc);
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/TestCodeInheritance.java b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/TestCodeInheritance.java
new file mode 100644
index 000000000..f55e28a00
--- /dev/null
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/TestCodeInheritance.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2017 protos software gmbh (http://www.protos.de).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * CONTRIBUTORS:
+ * Henrik Rentz-Reichert (initial contribution)
+ */
+package org.eclipse.etrice.core.genmodel.fsm.tests;
+
+import java.util.Iterator;
+import org.eclipse.etrice.core.fsm.fSM.DetailCode;
+import org.eclipse.etrice.core.fsm.fSM.RefinedState;
+import org.eclipse.etrice.core.fsm.fSM.StateGraphNode;
+import org.eclipse.etrice.core.fsm.util.FSMHelpers;
+import org.eclipse.etrice.core.genmodel.fsm.FsmGenChecker;
+import org.eclipse.etrice.core.genmodel.fsm.FsmGenExtensions;
+import org.eclipse.etrice.core.genmodel.fsm.NullLogger;
+import org.eclipse.etrice.core.genmodel.fsm.fsmgen.Graph;
+import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer;
+import org.eclipse.etrice.core.genmodel.fsm.fsmgen.Node;
+import org.eclipse.etrice.core.genmodel.fsm.tests.FsmGenTestBase;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IteratorExtensions;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+@SuppressWarnings("all")
+public class TestCodeInheritance extends FsmGenTestBase {
+ private GraphContainer gc;
+
+ @Extension
+ private FSMHelpers fsmHelpers = new FSMHelpers();
+
+ @Before
+ public void SetUp() {
+ GraphContainer _graphContainer = this.getGraphContainer("CodeInheritanceExample.room", "TestActor");
+ this.gc = _graphContainer;
+ Assert.assertNotNull("graph context was created", this.gc);
+ final NullLogger logger = new NullLogger();
+ FsmGenChecker.check(this.gc, logger);
+ boolean _hasErrors = logger.hasErrors();
+ Assert.assertFalse("logger has no errors", _hasErrors);
+ boolean _isFailed = this.diagnostician.isFailed();
+ Assert.assertFalse("diagnostician has no errors", _isFailed);
+ }
+
+ @Test
+ public void testActionCodes_BaseEntryExit() {
+ Graph _graph = this.gc.getGraph();
+ Iterator<Node> _allStateNodes = FsmGenExtensions.getAllStateNodes(_graph);
+ final Function1<Node, Boolean> _function = new Function1<Node, Boolean>() {
+ @Override
+ public Boolean apply(final Node it) {
+ String _name = FsmGenExtensions.getName(it);
+ return Boolean.valueOf(_name.equals("BaseEntryExit"));
+ }
+ };
+ final Node s = IteratorExtensions.<Node>findFirst(_allStateNodes, _function);
+ Assert.assertNotNull("state found", s);
+ StateGraphNode _stateGraphNode = s.getStateGraphNode();
+ Assert.assertTrue("refined state", (_stateGraphNode instanceof RefinedState));
+ StateGraphNode _stateGraphNode_1 = s.getStateGraphNode();
+ final RefinedState rs = ((RefinedState) _stateGraphNode_1);
+ DetailCode _entryCode = rs.getEntryCode();
+ String _detailCode = this.fsmHelpers.getDetailCode(_entryCode);
+ Assert.assertEquals("entry code", "// derived entry\n", _detailCode);
+ DetailCode _exitCode = rs.getExitCode();
+ Assert.assertNull("exit code", _exitCode);
+ DetailCode _inheritedEntryCode = this.fsmHelpers.getInheritedEntryCode(rs);
+ String _detailCode_1 = this.fsmHelpers.getDetailCode(_inheritedEntryCode);
+ Assert.assertEquals("inherited entry", "// base entry\n", _detailCode_1);
+ DetailCode _inheritedExitCode = this.fsmHelpers.getInheritedExitCode(rs);
+ String _detailCode_2 = this.fsmHelpers.getDetailCode(_inheritedExitCode);
+ Assert.assertEquals("inherited exit", "// base exit\n", _detailCode_2);
+ }
+
+ @Test
+ public void testActionCodes_Base() {
+ Graph _graph = this.gc.getGraph();
+ Iterator<Node> _allStateNodes = FsmGenExtensions.getAllStateNodes(_graph);
+ final Function1<Node, Boolean> _function = new Function1<Node, Boolean>() {
+ @Override
+ public Boolean apply(final Node it) {
+ String _name = FsmGenExtensions.getName(it);
+ return Boolean.valueOf(_name.equals("Base"));
+ }
+ };
+ final Node s = IteratorExtensions.<Node>findFirst(_allStateNodes, _function);
+ Assert.assertNotNull("state found", s);
+ StateGraphNode _stateGraphNode = s.getStateGraphNode();
+ Assert.assertTrue("refined state", (_stateGraphNode instanceof RefinedState));
+ StateGraphNode _stateGraphNode_1 = s.getStateGraphNode();
+ final RefinedState rs = ((RefinedState) _stateGraphNode_1);
+ DetailCode _entryCode = rs.getEntryCode();
+ Assert.assertNull("entry code", _entryCode);
+ DetailCode _exitCode = rs.getExitCode();
+ String _detailCode = this.fsmHelpers.getDetailCode(_exitCode);
+ Assert.assertEquals("exit code", "// derived exit\n", _detailCode);
+ DetailCode _inheritedEntryCode = this.fsmHelpers.getInheritedEntryCode(rs);
+ String _detailCode_1 = this.fsmHelpers.getDetailCode(_inheritedEntryCode);
+ Assert.assertEquals("inherited entry", "", _detailCode_1);
+ DetailCode _inheritedExitCode = this.fsmHelpers.getInheritedExitCode(rs);
+ String _detailCode_2 = this.fsmHelpers.getDetailCode(_inheritedExitCode);
+ Assert.assertEquals("inherited exit", "", _detailCode_2);
+ }
+
+ @Test
+ public void testActionCodes_BaseSub() {
+ Graph _graph = this.gc.getGraph();
+ Iterator<Node> _allStateNodes = FsmGenExtensions.getAllStateNodes(_graph);
+ final Function1<Node, Boolean> _function = new Function1<Node, Boolean>() {
+ @Override
+ public Boolean apply(final Node it) {
+ String _name = FsmGenExtensions.getName(it);
+ return Boolean.valueOf(_name.equals("BaseSub"));
+ }
+ };
+ final Node s = IteratorExtensions.<Node>findFirst(_allStateNodes, _function);
+ Assert.assertNotNull("state found", s);
+ StateGraphNode _stateGraphNode = s.getStateGraphNode();
+ Assert.assertTrue("refined state", (_stateGraphNode instanceof RefinedState));
+ StateGraphNode _stateGraphNode_1 = s.getStateGraphNode();
+ final RefinedState rs = ((RefinedState) _stateGraphNode_1);
+ DetailCode _entryCode = rs.getEntryCode();
+ String _detailCode = this.fsmHelpers.getDetailCode(_entryCode);
+ Assert.assertEquals("entry code", "// derived entry\n", _detailCode);
+ DetailCode _exitCode = rs.getExitCode();
+ Assert.assertNull("exit code", _exitCode);
+ DetailCode _inheritedEntryCode = this.fsmHelpers.getInheritedEntryCode(rs);
+ String _detailCode_1 = this.fsmHelpers.getDetailCode(_inheritedEntryCode);
+ Assert.assertEquals("inherited entry", "", _detailCode_1);
+ DetailCode _inheritedExitCode = this.fsmHelpers.getInheritedExitCode(rs);
+ String _detailCode_2 = this.fsmHelpers.getDetailCode(_inheritedExitCode);
+ Assert.assertEquals("inherited exit", "", _detailCode_2);
+ }
+}
diff --git a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.java b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.java
index bc5405230..17c5cbeaf 100644
--- a/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.java
+++ b/tests/org.eclipse.etrice.core.genmodel.fsm.tests/xtend-gen/org/eclipse/etrice/core/genmodel/fsm/tests/TestTrigger.java
@@ -12,14 +12,14 @@ package org.eclipse.etrice.core.genmodel.fsm.tests;
import java.util.Iterator;
import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.fsm.fSM.TriggeredTransition;
-import org.eclipse.etrice.core.genmodel.fsm.ExtendedFsmGenBuilder;
import org.eclipse.etrice.core.genmodel.fsm.FsmGenChecker;
import org.eclipse.etrice.core.genmodel.fsm.FsmGenExtensions;
import org.eclipse.etrice.core.genmodel.fsm.NullLogger;
+import org.eclipse.etrice.core.genmodel.fsm.TriggerExtensions;
import org.eclipse.etrice.core.genmodel.fsm.fsmgen.CommonTrigger;
import org.eclipse.etrice.core.genmodel.fsm.fsmgen.Graph;
import org.eclipse.etrice.core.genmodel.fsm.fsmgen.GraphContainer;
+import org.eclipse.etrice.core.genmodel.fsm.fsmgen.Link;
import org.eclipse.etrice.core.genmodel.fsm.fsmgen.Node;
import org.eclipse.etrice.core.genmodel.fsm.tests.FsmGenTestBase;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
@@ -103,8 +103,8 @@ public class TestTrigger extends FsmGenTestBase {
Assert.assertEquals("1st trigger", _trigger, _trigger_1);
EList<CommonTrigger> _caughtTriggers_2 = s.getCaughtTriggers();
CommonTrigger _get_1 = _caughtTriggers_2.get(0);
- EList<TriggeredTransition> _transitions = _get_1.getTransitions();
- int _size_1 = _transitions.size();
+ EList<Link> _links = _get_1.getLinks();
+ int _size_1 = _links.size();
Assert.assertEquals("1st trigger, transitions", 1, _size_1);
String _trigger_2 = this.trigger("in1");
EList<CommonTrigger> _caughtTriggers_3 = s.getCaughtTriggers();
@@ -113,8 +113,8 @@ public class TestTrigger extends FsmGenTestBase {
Assert.assertEquals("2nd trigger", _trigger_2, _trigger_3);
EList<CommonTrigger> _caughtTriggers_4 = s.getCaughtTriggers();
CommonTrigger _get_3 = _caughtTriggers_4.get(1);
- EList<TriggeredTransition> _transitions_1 = _get_3.getTransitions();
- int _size_2 = _transitions_1.size();
+ EList<Link> _links_1 = _get_3.getLinks();
+ int _size_2 = _links_1.size();
Assert.assertEquals("2nd trigger, transitions", 1, _size_2);
String _trigger_4 = this.trigger("in2");
EList<CommonTrigger> _caughtTriggers_5 = s.getCaughtTriggers();
@@ -123,8 +123,8 @@ public class TestTrigger extends FsmGenTestBase {
Assert.assertEquals("3rd trigger", _trigger_4, _trigger_5);
EList<CommonTrigger> _caughtTriggers_6 = s.getCaughtTriggers();
CommonTrigger _get_5 = _caughtTriggers_6.get(2);
- EList<TriggeredTransition> _transitions_2 = _get_5.getTransitions();
- int _size_3 = _transitions_2.size();
+ EList<Link> _links_2 = _get_5.getLinks();
+ int _size_3 = _links_2.size();
Assert.assertEquals("3rd trigger, transitions", 1, _size_3);
}
@@ -152,8 +152,8 @@ public class TestTrigger extends FsmGenTestBase {
Assert.assertEquals("1st trigger", _trigger, _trigger_1);
EList<CommonTrigger> _caughtTriggers_2 = s.getCaughtTriggers();
CommonTrigger _get_1 = _caughtTriggers_2.get(0);
- EList<TriggeredTransition> _transitions = _get_1.getTransitions();
- int _size_1 = _transitions.size();
+ EList<Link> _links = _get_1.getLinks();
+ int _size_1 = _links.size();
Assert.assertEquals("1st trigger, transitions", 1, _size_1);
String _trigger_2 = this.trigger("in1");
EList<CommonTrigger> _caughtTriggers_3 = s.getCaughtTriggers();
@@ -162,8 +162,8 @@ public class TestTrigger extends FsmGenTestBase {
Assert.assertEquals("2nd trigger", _trigger_2, _trigger_3);
EList<CommonTrigger> _caughtTriggers_4 = s.getCaughtTriggers();
CommonTrigger _get_3 = _caughtTriggers_4.get(1);
- EList<TriggeredTransition> _transitions_1 = _get_3.getTransitions();
- int _size_2 = _transitions_1.size();
+ EList<Link> _links_1 = _get_3.getLinks();
+ int _size_2 = _links_1.size();
Assert.assertEquals("2nd trigger, transitions", 1, _size_2);
}
@@ -191,8 +191,8 @@ public class TestTrigger extends FsmGenTestBase {
Assert.assertEquals("1st trigger", _trigger, _trigger_1);
EList<CommonTrigger> _caughtTriggers_2 = s.getCaughtTriggers();
CommonTrigger _get_1 = _caughtTriggers_2.get(0);
- EList<TriggeredTransition> _transitions = _get_1.getTransitions();
- int _size_1 = _transitions.size();
+ EList<Link> _links = _get_1.getLinks();
+ int _size_1 = _links.size();
Assert.assertEquals("1st trigger, transitions", 1, _size_1);
String _trigger_2 = this.trigger("in2");
EList<CommonTrigger> _caughtTriggers_3 = s.getCaughtTriggers();
@@ -201,8 +201,8 @@ public class TestTrigger extends FsmGenTestBase {
Assert.assertEquals("2nd trigger", _trigger_2, _trigger_3);
EList<CommonTrigger> _caughtTriggers_4 = s.getCaughtTriggers();
CommonTrigger _get_3 = _caughtTriggers_4.get(1);
- EList<TriggeredTransition> _transitions_1 = _get_3.getTransitions();
- int _size_2 = _transitions_1.size();
+ EList<Link> _links_1 = _get_3.getLinks();
+ int _size_2 = _links_1.size();
Assert.assertEquals("2nd trigger, transitions", 1, _size_2);
}
@@ -230,8 +230,8 @@ public class TestTrigger extends FsmGenTestBase {
Assert.assertEquals("1st trigger", _trigger, _trigger_1);
EList<CommonTrigger> _caughtTriggers_2 = s.getCaughtTriggers();
CommonTrigger _get_1 = _caughtTriggers_2.get(0);
- EList<TriggeredTransition> _transitions = _get_1.getTransitions();
- int _size_1 = _transitions.size();
+ EList<Link> _links = _get_1.getLinks();
+ int _size_1 = _links.size();
Assert.assertEquals("1st trigger, transitions", 3, _size_1);
String _trigger_2 = this.trigger("in2");
EList<CommonTrigger> _caughtTriggers_3 = s.getCaughtTriggers();
@@ -240,12 +240,12 @@ public class TestTrigger extends FsmGenTestBase {
Assert.assertEquals("2nd trigger", _trigger_2, _trigger_3);
EList<CommonTrigger> _caughtTriggers_4 = s.getCaughtTriggers();
CommonTrigger _get_3 = _caughtTriggers_4.get(1);
- EList<TriggeredTransition> _transitions_1 = _get_3.getTransitions();
- int _size_2 = _transitions_1.size();
+ EList<Link> _links_1 = _get_3.getLinks();
+ int _size_2 = _links_1.size();
Assert.assertEquals("2nd trigger, transitions", 1, _size_2);
}
public String trigger(final String msg) {
- return (("p0" + ExtendedFsmGenBuilder.TRIGGER_SEP) + msg);
+ return (("p0" + TriggerExtensions.TRIGGER_SEP) + msg);
}
}

Back to the top