diff options
Diffstat (limited to 'tests/org.eclipse.etrice.core.genmodel.fsm.tests')
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); } } |