Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2017-05-22 16:36:51 +0000
committerEd Willink2017-05-22 17:09:14 +0000
commitebdf0bc2c0d985a8bffa8eb8066428ed4e040754 (patch)
treef85072e017394651d9d5cb170a09d34d1bdafab8
parent5cc2b3fee1b517a5f04157a5a809124e80615590 (diff)
downloadorg.eclipse.qvtd-ebdf0bc2c0d985a8bffa8eb8066428ed4e040754.tar.gz
org.eclipse.qvtd-ebdf0bc2c0d985a8bffa8eb8066428ed4e040754.tar.xz
org.eclipse.qvtd-ebdf0bc2c0d985a8bffa8eb8066428ed4e040754.zip
[517072] Add JUnit test for UMLX example
-rw-r--r--examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/.gitignore1
-rw-r--r--examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/plugin.xml20
-rw-r--r--examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/src-gen/.gitignore1
-rw-r--r--examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/src/org/eclipse/qvtd/examples/umlx/hstm2fstm/HierarchicalStateMachine2FlatStateMachine.umlx99
-rw-r--r--tests/org.eclipse.qvtd.umlx.tests/META-INF/MANIFEST.MF9
-rw-r--r--tests/org.eclipse.qvtd.umlx.tests/src/org/eclipse/qvtd/umlx/tests/UMLXCompilerTests.java61
6 files changed, 123 insertions, 68 deletions
diff --git a/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/.gitignore b/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/.gitignore
index ae3c17260..fe3d0529a 100644
--- a/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/.gitignore
+++ b/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/.gitignore
@@ -1 +1,2 @@
/bin/
+/test-gen/
diff --git a/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/plugin.xml b/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/plugin.xml
new file mode 100644
index 000000000..c34c55f10
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/plugin.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2017 Willink Transformations and others.
+ ;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:
+ ; E.D.Willink - Initial API and implementation
+-->
+
+<plugin>
+ <extension
+ point="org.eclipse.core.contenttype.contentTypes">
+ </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/src-gen/.gitignore b/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/src-gen/.gitignore
new file mode 100644
index 000000000..cf1db2eed
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/src-gen/.gitignore
@@ -0,0 +1 @@
+/org/
diff --git a/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/src/org/eclipse/qvtd/examples/umlx/hstm2fstm/HierarchicalStateMachine2FlatStateMachine.umlx b/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/src/org/eclipse/qvtd/examples/umlx/hstm2fstm/HierarchicalStateMachine2FlatStateMachine.umlx
index a5dbd5cae..c20dbfb2c 100644
--- a/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/src/org/eclipse/qvtd/examples/umlx/hstm2fstm/HierarchicalStateMachine2FlatStateMachine.umlx
+++ b/examples/org.eclipse.qvtd.examples.umlx.hstm2fstm/src/org/eclipse/qvtd/examples/umlx/hstm2fstm/HierarchicalStateMachine2FlatStateMachine.umlx
@@ -12,28 +12,28 @@ TCS - initial implementation for ModelMorf
E.D.Willink - alignment with evolved specification
E.D.Willink - rename / comment
*****************************************************************************</comments>
- <ownedTxDiagrams xmi:id="T.HierarchicalStateMachine2FlatStateMachine" name="HierarchicalStateMachine2FlatStateMachine" package="org::eclipse::qvtd::xtext::umlx::tests::hstm2fstm">
+ <ownedTxDiagrams xmi:id="T.HierarchicalStateMachine2FlatStateMachine" name="HierarchicalStateMachine2FlatStateMachine" package="org::eclipse::qvtd::xtext::qvtrelation::tests::hstm2fstm">
<comments>Transform a hierarchical StateMachine into a flat StateMachine.</comments>
<ownedRelDiagrams xmi:id="R.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine" name="HierachicalStateMachine2FlatStateMachine" isTop="true">
<comments>Map each hierarchical StateMachine to a flat StateMachine</comments>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.">
- <ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...hierarchicalStateMachine..stateMachineName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier.hierarchicalStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine..stateMachineName">
- <referredEStructuralFeature xsi:type="ecore:EAttribute" href="HierarchicalStateMachine.ecore#//StateMachine/name"/>
- </ownedRelPatternEdges>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...flatStateMachine..stateMachineName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat.flatStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine..stateMachineName">
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="FlatStateMachine.ecore#//StateMachine/name"/>
</ownedRelPatternEdges>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine..stateMachineName" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...hierarchicalStateMachine..stateMachineName E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...flatStateMachine..stateMachineName" name="stateMachineName">
+ <ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...hierarchicalStateMachine..stateMachineName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier.hierarchicalStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine..stateMachineName">
+ <referredEStructuralFeature xsi:type="ecore:EAttribute" href="HierarchicalStateMachine.ecore#//StateMachine/name"/>
+ </ownedRelPatternEdges>
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine..stateMachineName" name="stateMachineName" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...flatStateMachine..stateMachineName E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...hierarchicalStateMachine..stateMachineName">
<referredEClassifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.hier">
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier.hierarchicalStateMachine" isRoot="true" name="hierarchicalStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...hierarchicalStateMachine..stateMachineName">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier.hierarchicalStateMachine" name="hierarchicalStateMachine" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...hierarchicalStateMachine..stateMachineName">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
- <ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.flat">
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat.flatStateMachine" isRoot="true" name="flatStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...flatStateMachine..stateMachineName">
+ <ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat" isEnforced="true" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.flat">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat.flatStateMachine" name="flatStateMachine" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...flatStateMachine..stateMachineName">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
@@ -42,25 +42,25 @@ E.D.Willink - rename / comment
<comments>Map each hierarchical Transition to a Flat Transition in the corresponding StateMachine
for each combination of possible leaf end states</comments>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.">
- <ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...flatTransition..transitionName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..transitionName">
- <referredEStructuralFeature xsi:type="ecore:EAttribute" href="FlatStateMachine.ecore#//Transition/name"/>
- </ownedRelPatternEdges>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...hierarchicalTransition..transitionName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..transitionName">
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="HierarchicalStateMachine.ecore#//Transition/name"/>
</ownedRelPatternEdges>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..transitionName" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...flatTransition..transitionName E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...hierarchicalTransition..transitionName" name="transitionName">
+ <ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...flatTransition..transitionName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..transitionName">
+ <referredEStructuralFeature xsi:type="ecore:EAttribute" href="FlatStateMachine.ecore#//Transition/name"/>
+ </ownedRelPatternEdges>
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..transitionName" name="transitionName" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...hierarchicalTransition..transitionName E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...flatTransition..transitionName">
<referredEClassifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..leafFromState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatFromState.leafFromState~.leafState" name="leafFromState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..leafFromState" name="leafFromState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatFromState.leafFromState~.leafState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..leafToState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatToState.leafToState~.leafState" name="leafToState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..leafToState" name="leafToState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatToState.leafToState~.leafState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="X.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..735140798">
+ <ownedRelPatternNodes xmi:id="X.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..null">
<initExpressionLines>this.getLeafStates(hierarchicalFromState)->includes(leafFromState)</initExpressionLines>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="X.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..1258632478">
+ <ownedRelPatternNodes xmi:id="_V65T4D79Eeeb3uIvElgAOw">
<initExpressionLines>this.getLeafStates(hierarchicalToState)->includes(leafToState)</initExpressionLines>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
@@ -74,20 +74,20 @@ for each combination of possible leaf end states</comments>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalToState" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalToState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="HierarchicalStateMachine.ecore#//Transition/toState"/>
</ownedRelPatternEdges>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalTransition" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalStateMachine..hierarchicalTransition" isRoot="true" name="hierarchicalTransition" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalFromState E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...hierarchicalTransition..transitionName E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalToState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalTransition" name="hierarchicalTransition" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalStateMachine..hierarchicalTransition" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalFromState E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...hierarchicalTransition..transitionName E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalToState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//Transition"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalFromState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalFromState" name="hierarchicalFromState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalFromState" name="hierarchicalFromState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalFromState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.HierachicalStateMachine2FlatStateMachine.hierarchicalStateMachine" name="hierarchicalStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalStateMachine..hierarchicalTransition">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalStateMachine" name="hierarchicalStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.HierachicalStateMachine2FlatStateMachine.hierarchicalStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalStateMachine..hierarchicalTransition">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalToState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalToState" name="hierarchicalToState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalToState" name="hierarchicalToState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalToState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
- <ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.flat">
+ <ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat" isEnforced="true" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.flat">
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatFromState" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatFromState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="FlatStateMachine.ecore#//Transition/fromState"/>
</ownedRelPatternEdges>
@@ -97,16 +97,16 @@ for each combination of possible leaf end states</comments>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatToState" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatToState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="FlatStateMachine.ecore#//Transition/toState"/>
</ownedRelPatternEdges>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatStateMachine..flatTransition" isRoot="true" name="flatTransition" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatFromState E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...flatTransition..transitionName E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatToState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" name="flatTransition" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatStateMachine..flatTransition" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatFromState E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...flatTransition..transitionName E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatToState">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//Transition"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatFromState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatFromState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatFromState.leafFromState~.flatState" name="flatFromState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatFromState" name="flatFromState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatFromState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatFromState.leafFromState~.flatState">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.HierachicalStateMachine2FlatStateMachine.flatStateMachine" name="flatStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatStateMachine..flatTransition">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatStateMachine" name="flatStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.HierachicalStateMachine2FlatStateMachine.flatStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatStateMachine..flatTransition">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatToState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatToState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatToState.leafToState~.flatState" name="flatToState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatToState" name="flatToState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatToState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatToState.leafToState~.flatState">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
@@ -132,7 +132,7 @@ for each combination of possible leaf end states</comments>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...leafState..stateName" source="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.leafState" target="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState..stateName">
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="HierarchicalStateMachine.ecore#//State/name"/>
</ownedRelPatternEdges>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState..stateName" incoming="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...flatState..stateName E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...leafState..stateName" name="stateName">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState..stateName" name="stateName" incoming="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...flatState..stateName E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...leafState..stateName">
<referredEClassifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
@@ -140,24 +140,24 @@ for each combination of possible leaf end states</comments>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier..hierarchicalStateMachine..leafState" source="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.hierarchicalStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.leafState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="HierarchicalStateMachine.ecore#//StateMachine/ownedStates"/>
</ownedRelPatternEdges>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.leafState" incoming="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier..hierarchicalStateMachine..leafState" isRoot="true" name="leafState" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...leafState..stateName">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.leafState" name="leafState" incoming="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier..hierarchicalStateMachine..leafState" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...leafState..stateName">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.hierarchicalStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine.hierarchicalStateMachine" name="hierarchicalStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier..hierarchicalStateMachine..leafState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.hierarchicalStateMachine" name="hierarchicalStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine.hierarchicalStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier..hierarchicalStateMachine..leafState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="X.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.645304190">
+ <ownedRelPatternNodes xmi:id="X.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.null">
<initExpressionLines>leafState.nestedStates->isEmpty()</initExpressionLines>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
- <ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.flat">
+ <ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat" isEnforced="true" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.flat">
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat..flatStateMachine..flatState" source="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="FlatStateMachine.ecore#//StateMachine/ownedStates"/>
</ownedRelPatternEdges>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatState" incoming="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat..flatStateMachine..flatState" isRoot="true" name="flatState" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...flatState..stateName">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatState" name="flatState" incoming="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat..flatStateMachine..flatState" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...flatState..stateName">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
- <ownedRelPatternNodes xsi:type="umlx:RelPatternNode" xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine.flatStateMachine" name="flatStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat..flatStateMachine..flatState">
+ <ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatStateMachine" name="flatStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine.flatStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat..flatStateMachine..flatState">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
@@ -166,21 +166,14 @@ for each combination of possible leaf end states</comments>
<ownedRelInvocationEdges xmi:id="A.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine.flatStateMachine" invokingRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatStateMachine" referredRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat.flatStateMachine"/>
</ownedRelInvocationNodes>
</ownedRelDiagrams>
- <ownedTxImportNodes xmi:id="I.HierarchicalStateMachine2FlatStateMachine.hierMM" name="hierMM" uri="HierarchicalStateMachine.ecore#/">
- <comments>*****************************************************************************
-Copyright (c) 2007,2008 Tata Consultancy Services and others.
-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:
-TCS - initial implementation for ModelMorf
-E.D.Willink - alignment with evolved specification
-E.D.Willink - rename / comment
-*****************************************************************************</comments>
- </ownedTxImportNodes>
- <ownedTxImportNodes xmi:id="I.HierarchicalStateMachine2FlatStateMachine.flatMM" name="flatMM" uri="FlatStateMachine.ecore#/"/>
+ <ownedTxPackageNodes xmi:id="U.HierarchicalStateMachine2FlatStateMachine.HierarchicalStateMachine">
+ <importAliases>hierMM</importAliases>
+ <referredEPackage href="HierarchicalStateMachine.ecore#/"/>
+ </ownedTxPackageNodes>
+ <ownedTxPackageNodes xmi:id="U.HierarchicalStateMachine2FlatStateMachine.FlatStateMachine">
+ <importAliases>flatMM</importAliases>
+ <referredEPackage href="FlatStateMachine.ecore#/"/>
+ </ownedTxPackageNodes>
<ownedTxQueryNodes xmi:id="Q.HierarchicalStateMachine2FlatStateMachine.getLeafStates..hierarchicalState" name="getLeafStates" isMany="true">
<comments>Return the leafStates of a given hierarchicalState.</comments>
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
@@ -189,15 +182,7 @@ E.D.Willink - rename / comment
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedTxParameterNodes>
</ownedTxQueryNodes>
- <ownedTxTypedModelNodes xmi:id="Tp.HierarchicalStateMachine2FlatStateMachine.hier" name="hier" check="true">
- <ownedTxPackageNodes xmi:id="U.HierarchicalStateMachine2FlatStateMachine.hier.HierarchicalStateMachine">
- <referredEPackage href="HierarchicalStateMachine.ecore#/"/>
- </ownedTxPackageNodes>
- </ownedTxTypedModelNodes>
- <ownedTxTypedModelNodes xmi:id="Tp.HierarchicalStateMachine2FlatStateMachine.flat" name="flat" check="true" enforce="true">
- <ownedTxPackageNodes xmi:id="U.HierarchicalStateMachine2FlatStateMachine.flat.FlatStateMachine">
- <referredEPackage href="FlatStateMachine.ecore#/"/>
- </ownedTxPackageNodes>
- </ownedTxTypedModelNodes>
+ <ownedTxTypedModelNodes xmi:id="Tp.HierarchicalStateMachine2FlatStateMachine.hier" name="hier" check="true" usedTxPackageNodes="U.HierarchicalStateMachine2FlatStateMachine.HierarchicalStateMachine"/>
+ <ownedTxTypedModelNodes xmi:id="Tp.HierarchicalStateMachine2FlatStateMachine.flat" name="flat" check="true" enforce="true" usedTxPackageNodes="U.HierarchicalStateMachine2FlatStateMachine.FlatStateMachine"/>
</ownedTxDiagrams>
</umlx:UMLXModel>
diff --git a/tests/org.eclipse.qvtd.umlx.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.qvtd.umlx.tests/META-INF/MANIFEST.MF
index c05187019..cfb4709e8 100644
--- a/tests/org.eclipse.qvtd.umlx.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.qvtd.umlx.tests/META-INF/MANIFEST.MF
@@ -5,9 +5,10 @@ Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.qvtd.umlx.tests;singleton:=true
Bundle-Version: 0.14.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.eclipse.qvtd.compiler,
- org.eclipse.qvtd.umlx,
- org.eclipse.qvtd.xtext.qvtcore.tests,
- org.eclipse.qvtd.xtext.qvtrelation.tests
+Require-Bundle: org.eclipse.qvtd.compiler;bundle-version="[0.14.0,1.0.0)",
+ org.eclipse.qvtd.umlx;bundle-version="[0.14.0,1.0.0)",
+ org.eclipse.qvtd.xtext.qvtcore.tests;bundle-version="[0.14.0,1.0.0)",
+ org.eclipse.qvtd.xtext.qvtrelation.tests;bundle-version="[0.14.0,1.0.0)",
+ org.eclipse.qvtd.examples.umlx.hstm2fstm;bundle-version="[0.14.0,1.0.0)"
Bundle-Localization: plugin
Export-Package: org.eclipse.qvtd.umlx.tests
diff --git a/tests/org.eclipse.qvtd.umlx.tests/src/org/eclipse/qvtd/umlx/tests/UMLXCompilerTests.java b/tests/org.eclipse.qvtd.umlx.tests/src/org/eclipse/qvtd/umlx/tests/UMLXCompilerTests.java
index e4730adee..dc5bd7455 100644
--- a/tests/org.eclipse.qvtd.umlx.tests/src/org/eclipse/qvtd/umlx/tests/UMLXCompilerTests.java
+++ b/tests/org.eclipse.qvtd.umlx.tests/src/org/eclipse/qvtd/umlx/tests/UMLXCompilerTests.java
@@ -60,8 +60,6 @@ public class UMLXCompilerTests extends LoadTestCase
{
private static final @NonNull String PROJECT_NAME = "org.eclipse.qvtd.umlx.tests";
private static final @NonNull URI TESTS_BASE_URI = URI.createPlatformResourceURI("/" + PROJECT_NAME + "/bin/" + PROJECT_NAME.replace(".", "/"), true);
- private static URI TESTS_JAVA_SRC_URI = URI.createPlatformResourceURI("/" + PROJECT_NAME +"/test-gen", true);
- private static URI TESTS_JAVA_BIN_URI = URI.createPlatformResourceURI("/" + PROJECT_NAME + "/bin", true);
protected static class MyQVT extends AbstractTestQVT
{
@@ -101,10 +99,23 @@ public class UMLXCompilerTests extends LoadTestCase
private final @NonNull Map<@NonNull Class<? extends Region>, @NonNull Integer> regionClass2count = new HashMap<>();
public MyQVT(@NonNull String testFolderName, @NonNull EPackage... eInstances) {
- super(TESTS_BASE_URI, PROJECT_NAME, testFolderName);
+ this(TESTS_BASE_URI, PROJECT_NAME, testFolderName, "samples", eInstances);
+ }
+
+ public MyQVT(@NonNull URI testsBaseURI, @NonNull String projectName, @Nullable String testFolderName, @Nullable String samplesFolderName, @NonNull EPackage... eInstances) {
+ super(testsBaseURI, projectName, testFolderName, samplesFolderName);
installEPackages(eInstances);
+ /* //
+ // http://www.eclipse.org/emf/2002/Ecore is referenced by just about any model load
+ // Ecore.core is referenced from Ecore.genmodel that is used by the CG to coordinate Ecore objects with their Java classes
+ // therefore suppress diagnostics about confusing usage.
+ //
+ URI ecoreURI = URI.createURI(EcorePackage.eNS_URI);
+ getProjectManager().getPackageDescriptor(ecoreURI).configure(getResourceSet(), StandaloneProjectMap.LoadFirstStrategy.INSTANCE,
+ StandaloneProjectMap.MapToFirstConflictHandler.INSTANCE); */
}
+
public void addUsedGenPackage(@NonNull String resourcePath, @Nullable String fragment) {
if (usedGenPackages == null) {
usedGenPackages = new ArrayList<>();
@@ -130,16 +141,18 @@ public class UMLXCompilerTests extends LoadTestCase
return doCompile(testFileName, outputName, createCompilerChainOptions(basePrefix));
}
- protected @NonNull Map<@NonNull String, @Nullable Map<CompilerChain.@NonNull Key<Object>, @Nullable Object>> createBuildCompilerChainOptions(String testName, boolean isIncremental) {
+ protected @NonNull Map<@NonNull String, @Nullable Map<CompilerChain.@NonNull Key<Object>, @Nullable Object>> createBuildCompilerChainOptions(String modelsSubPackageName, boolean isIncremental) {
+ URI testsJavaSrcURI = URI.createPlatformResourceURI("/" + projectName +"/test-gen", true);
+ URI testsJavaBinURI = URI.createPlatformResourceURI("/" + projectName + "/bin", true);
Map<@NonNull String, @Nullable String> genModelOptions = new HashMap<>();
- genModelOptions.put(CompilerChain.GENMODEL_BASE_PREFIX, PROJECT_NAME + "." + testName);
+ genModelOptions.put(CompilerChain.GENMODEL_BASE_PREFIX, projectName + "." + modelsSubPackageName);
genModelOptions.put(CompilerChain.GENMODEL_COPYRIGHT_TEXT, "Copyright (c) 2015, 2016 Willink Transformations and others.\n;All rights reserved. This program and the accompanying materials\n;are made available under the terms of the Eclipse Public License v1.0\n;which accompanies this distribution, and is available at\n;http://www.eclipse.org/legal/epl-v10.html\n;\n;Contributors:\n; E.D.Willink - Initial API and implementation");
Map<@NonNull String, @Nullable Map<CompilerChain.@NonNull Key<Object>, @Nullable Object>> options = new HashMap<>();
QVTrCompilerChain.setOption(options, CompilerChain.DEFAULT_STEP, CompilerChain.DEBUG_KEY, true);
QVTrCompilerChain.setOption(options, CompilerChain.DEFAULT_STEP, CompilerChain.SAVE_OPTIONS_KEY, TestsXMLUtil.defaultSavingOptions);
- QVTrCompilerChain.setOption(options, CompilerChain.JAVA_STEP, CompilerChain.URI_KEY, TESTS_JAVA_SRC_URI);
+ QVTrCompilerChain.setOption(options, CompilerChain.JAVA_STEP, CompilerChain.URI_KEY, testsJavaSrcURI);
QVTrCompilerChain.setOption(options, CompilerChain.JAVA_STEP, CompilerChain.JAVA_INCREMENTAL_KEY, isIncremental);
- QVTrCompilerChain.setOption(options, CompilerChain.CLASS_STEP, CompilerChain.URI_KEY, TESTS_JAVA_BIN_URI);
+ QVTrCompilerChain.setOption(options, CompilerChain.CLASS_STEP, CompilerChain.URI_KEY, testsJavaBinURI);
QVTrCompilerChain.setOption(options, CompilerChain.GENMODEL_STEP, CompilerChain.GENMODEL_USED_GENPACKAGES_KEY, usedGenPackages);
QVTrCompilerChain.setOption(options, CompilerChain.GENMODEL_STEP, CompilerChain.GENMODEL_OPTIONS_KEY, genModelOptions);
return options;
@@ -267,4 +280,38 @@ public class UMLXCompilerTests extends LoadTestCase
myQVT.removeRegisteredPackage("org.eclipse.qvtd.umlx.tests.forward2reverse.PForward2Reverse.PForward2ReversePackage", exceptionThrown);
}
}
+
+ @Test
+ public void testUMLXCompiler_HierarchicalStateMachine2FlatStateMachine_example_CG() throws Exception {
+ // Splitter.RESULT.setState(true);
+ // Splitter.STAGES.setState(true);
+ // Scheduler.DEBUG_GRAPHS.setState(true);
+ // AbstractTransformer.EXCEPTIONS.setState(true);
+ // AbstractTransformer.INVOCATIONS.setState(true);
+ // QVTm2QVTp.PARTITIONING.setState(true);
+ // QVTr2QVTc.VARIABLES.setState(true);
+ // boolean exceptionThrown = true;
+ URI testsBaseURI = URI.createPlatformResourceURI("/org.eclipse.qvtd.examples.umlx.hstm2fstm/bin/org/eclipse/qvtd/examples/umlx/hstm2fstm/", true);
+ String projectName = "org.eclipse.qvtd.examples.umlx.hstm2fstm";
+ MyQVT myQVT = new MyQVT(testsBaseURI, projectName, null, null);
+ // MyQVT myQVT = new MyQVT("forward2reverse");
+ try {
+ Class<? extends Transformer> txClass = myQVT.buildTransformation("models",
+ "HierarchicalStateMachine2FlatStateMachine.umlx", "flat",
+ "http://www.eclipse.org/qvtd/examples/umlx/hstm2fstm/HierarchicalStateMachine2FlatStateMachine", false);//,
+ // "FlatStateMachine.FlatStateMachinePackage", "HierarchicalStateMachine.HierarchicalStateMachinePackage");
+ myQVT.assertRegionCount(BasicMappingRegionImpl.class, 0);
+ myQVT.assertRegionCount(EarlyMerger.EarlyMergedMappingRegion.class, 0);
+ myQVT.assertRegionCount(LateConsumerMerger.LateMergedMappingRegion.class, 1);
+ myQVT.assertRegionCount(MicroMappingRegionImpl.class, 7);
+ myQVT.createGeneratedExecutor(txClass);
+ myQVT.loadInput("hier", "in/hier.xmi");
+ myQVT.executeTransformation();
+ myQVT.saveOutput("flat", "out/generated_CG.xmi", "out/expected.xmi", null);//FlatStateMachineNormalizer.INSTANCE);
+ // exceptionThrown = false;
+ }
+ finally {
+ myQVT.dispose();
+ }
+ }
}

Back to the top