Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: d9d74fbfe8b7be7789820831f83526588d47e87b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Requirements="http://www.eclipse.org/papyrus/0.7.0/SysML/Requirements" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:structure="http://DeveloperProcess/schemas/structure/_rpmLUHVxEeSZ-fQGFkyJeQ/6" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/0.7.0/SysML/Requirements http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements http://DeveloperProcess/schemas/structure/_rpmLUHVxEeSZ-fQGFkyJeQ/6 pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_rpmyYHVxEeSZ-fQGFkyJeQ">
  <uml:Model xmi:id="_BaNQYHoyEeSIvbC5EJMc1g" name="Papyrus Test Generation Framework">
    <ownedComment xmi:type="uml:Comment" xmi:id="_zHZ5wH6-EeS3hoTUHAmk0Q">
      <body>
==Framework Goals==&#xD;
* Automate the  development of test cases for Papyrus diagrams&#xD;
* Set the bases for a model-based testing approach&#xD;
* Ease the transition towards test-driven development</body>
    </ownedComment>
    <ownedComment xmi:type="uml:Comment" xmi:id="_ClqsoH7BEeS3hoTUHAmk0Q">
      <body>Currently, the framework supports the generation of unit tests for a diagram editor, taking as input an input .gmfgen. See below the generation workflow to understand how it works.</body>
    </ownedComment>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_BaNQYXoyEeSIvbC5EJMc1g">
      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_TnbC4HufEeS3hoTUHAmk0Q">
      <importedPackage xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_kWqjAMbXEeO09JBvNFZRNw"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_TnbC4XufEeS3hoTUHAmk0Q">
      <importedPackage xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_qCT3MMbXEeO09JBvNFZRNw"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_TnbC4nufEeS3hoTUHAmk0Q">
      <importedPackage xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_2LNtQMbYEeO09JBvNFZRNw"/>
    </packageImport>
    <packageImport xmi:type="uml:PackageImport" xmi:id="_VuW6MHufEeS3hoTUHAmk0Q">
      <importedPackage xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/Document.profile.uml#_D0JcUMnzEeO9CYUoXDRplw"/>
    </packageImport>
    <packagedElement xmi:type="uml:Model" xmi:id="_BaNQYnoyEeSIvbC5EJMc1g" name="Requirements">
      <packagedElement xmi:type="uml:Class" xmi:id="_8rcSwHsDEeS3hoTUHAmk0Q" name="JUnit Generation"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_ZmlMYHsEEeS3hoTUHAmk0Q" name="Functional test cases"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_aSGOkHsEEeS3hoTUHAmk0Q" name="Extensibility"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_fRgSYHsFEeS3hoTUHAmk0Q" name="Functional Coverage"/>
      <packagedElement xmi:type="uml:Class" xmi:id="_2AiPEHsFEeS3hoTUHAmk0Q" name="Code Coverage"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Model" xmi:id="_BaNQY3oyEeSIvbC5EJMc1g" name="UseCases">
      <ownedComment xmi:type="uml:Comment" xmi:id="_0f_4AH74EeS3hoTUHAmk0Q">
        <body>As a prerequisite, the tests plug-in must have already been created.  Create tests plug-in, if it doesn't exist already.
As a requirement, following the Papyrus development guidelines an Eclipse plug-in project must be created to contain the tests. Example: org.eclipse.papyrus.uml.diagram.component.tests.&#xD;
Add a dependency in the plug-in manifest to the test generation framework: org.eclipse.papyrus.tests.framework.</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="_wHPnsH77EeS3hoTUHAmk0Q">
        <body>Example: Generation for the UML Component diagram&#xD;
Here is an example (ComponentDiagramGenerateTestsWorkflow.xtend):
&lt;pre>
package org.eclipse.papyrus.uml.diagram.component.test.generation

import org.eclipse.emf.mwe2.runtime.workflow.WorkflowContextImpl
import org.eclipse.papyrus.tests.framework.mwe.GenerateTestsWorkflow
import org.eclipse.papyrus.tests.framework.gmfgenuml2utp.GMFGen2UTPModule

class ComponentDiagramGenerateTestsWorkflow {

	def static void main(String[] args) {
		val workflow = new GenerateTestsWorkflow()
		runWorkflow(workflow);
	}

	def static void runWorkflow(GenerateTestsWorkflow workflow) {
        workflow.testProjectName = 'org.eclipse.papyrus.uml.diagram.component.tests'
		workflow.gmfgenUri = workflow.resourceURI('/org.eclipse.papyrus.uml.diagram.component/model/ComponentDiagram.gmfgen')
		workflow.testSrcGenLocation = 'test-gen/'
		workflow.testModel = 'model/ComponentDiagramTest.uml'
		
        workflow.utpModuleFunction = [gmfgen, framework, utp |
            new GMFGen2UTPModule(gmfgen, framework, utp) => [
                diagramTestPackageName = 'org.eclipse.papyrus.uml.diagram.component.test'
                topContainerEditPart = 'PackageEditPart';
                topNodesToTest += #[
                    'PackageEditPart', 
                    'ModelEditPart', 
                    'ComponentEditPart', 
                    'InterfaceEditPart', 
                    'CommentEditPart', 
                    'ConstraintEditPart'
                ]
                childNodesToTest += #[
                    'ModelEditPartCN', 
                    'PackageEditPartCN',
                    'RectangleInterfaceEditPartCN', 
                    'ComponentEditPartCN', 
                    'ComponentEditPartPCN', 
                    'CommentEditPartPCN', 
                    'ConstraintEditPartPCN',
                    'InterfaceEditPartPCN'
                ]
                linksToTest += #[
                    'UsageEditPart',
                    'InterfaceRealizationEditPart',
                    'ManifestationEditPart',
                    'ComponentRealizationEditPart',
                    'AbstractionEditPart',
                    'DependencyEditPart'
                ]
                linksOwnedBySourceToTest += #[
                    'GeneralizationEditPart'
                ]
                
                elementTypesAppearanceTests += #[
                    'PackageEditPart', 
                    'ModelEditPart', 
                    'ComponentEditPart', 
                    'InterfaceEditPart', 
                    'CommentEditPart', 
                    'ConstraintEditPart'
                ]
                elementTypesDropTests += #[
                    'PackageEditPart', 
                    'ModelEditPart', 
                    'ComponentEditPart', 
                    'InterfaceEditPart', 
                    'CommentEditPart', 
                    'ConstraintEditPart'
                ]
            ]
        ]
        
		workflow.run(new WorkflowContextImpl);
	}

}
&lt;/pre>
</body>
      </ownedComment>
      <packagedElement xmi:type="uml:Abstraction" xmi:id="_BaNQZHoyEeSIvbC5EJMc1g" name="useCasesAbstraction" client="_BaNQY3oyEeSIvbC5EJMc1g" supplier="_BaNQYnoyEeSIvbC5EJMc1g"/>
      <packagedElement xmi:type="uml:Component" xmi:id="_BaNQZXoyEeSIvbC5EJMc1g" name="Papyrus Test Generation Framework" useCase="_MrfP8Hr5EeS3hoTUHAmk0Q _O7kcMHr5EeS3hoTUHAmk0Q _nVl24HsAEeS3hoTUHAmk0Q">
        <ownedUseCase xmi:type="uml:UseCase" xmi:id="_MrfP8Hr5EeS3hoTUHAmk0Q" name="Define list of element edit parts under test" subject="_BaNQZXoyEeSIvbC5EJMc1g">
          <ownedComment xmi:type="uml:Comment" xmi:id="_eN_cQH79EeS3hoTUHAmk0Q">
            <body>Configure the Guice module for your diagram editor's UTP transformation, detailing the name of the generated package of tests and the desired edit parts to test, as they are described in the gmfgen (See example below). </body>
          </ownedComment>
        </ownedUseCase>
        <ownedUseCase xmi:type="uml:UseCase" xmi:id="_O7kcMHr5EeS3hoTUHAmk0Q" name="Generate test model" subject="_BaNQZXoyEeSIvbC5EJMc1g">
          <ownedComment xmi:type="uml:Comment" xmi:id="_i0Rq4H79EeS3hoTUHAmk0Q">
            <body>Create the generation launcher (either Xtend-based or Java-based) in an appropiate package, for instance org.eclipse.papyrus.uml.diagram.component.test.generation, in a file such as ComponentDiagramGenerateTestsWorkflow.xtend. Copy the example launcher below and replace with the values for the generation parameters for your own diagram editor. The parameters are:&#xD;
gmfgenUri: URI for the input GMFGen file&#xD;
testSrcGenLocation: Folder in the project where the launcher is located where the test code will be generated, for instance test-gen.&#xD;
utpModuleFunction: injected configuration parameters for the UTP transformation, including tests package name and the various categories of edit-part to test&#xD;
testModelUri: URI where the UML-UTP intermediate model will be generated. After launching the generation, this model provides an overview of all the generated test artifacts.&#xD;
Launch the main method as a normal Java class.&#xD;
The intermediate model and the JUnit code are generated.</body>
          </ownedComment>
        </ownedUseCase>
        <ownedUseCase xmi:type="uml:UseCase" xmi:id="_nVl24HsAEeS3hoTUHAmk0Q" name="Generate JUnit test code" subject="_BaNQZXoyEeSIvbC5EJMc1g">
          <ownedComment xmi:type="uml:Comment" xmi:id="_tbo1gH7ZEeS3hoTUHAmk0Q" annotatedElement="_nVl24HsAEeS3hoTUHAmk0Q">
            <body>The generated JUnit tests extend the abstract test cases defined in the Papyrus test framework base</body>
          </ownedComment>
        </ownedUseCase>
      </packagedElement>
      <packagedElement xmi:type="uml:Actor" xmi:id="_op7MkHsAEeS3hoTUHAmk0Q" name="Papyrus Developer"/>
      <packagedElement xmi:type="uml:Association" xmi:id="_vjwyMHsAEeS3hoTUHAmk0Q" memberEnd="_vjwyMXsAEeS3hoTUHAmk0Q _vjwyNHsAEeS3hoTUHAmk0Q">
        <ownedEnd xmi:type="uml:Property" xmi:id="_vjwyMXsAEeS3hoTUHAmk0Q" name="papyrus developer" type="_op7MkHsAEeS3hoTUHAmk0Q" association="_vjwyMHsAEeS3hoTUHAmk0Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vjwyMnsAEeS3hoTUHAmk0Q" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vjwyM3sAEeS3hoTUHAmk0Q" value="1"/>
        </ownedEnd>
        <ownedEnd xmi:type="uml:Property" xmi:id="_vjwyNHsAEeS3hoTUHAmk0Q" name="define list of element edit parts under test" type="_MrfP8Hr5EeS3hoTUHAmk0Q" association="_vjwyMHsAEeS3hoTUHAmk0Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vjwyNXsAEeS3hoTUHAmk0Q" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vjwyNnsAEeS3hoTUHAmk0Q" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_0aScQHsAEeS3hoTUHAmk0Q" name="" memberEnd="_0aScQXsAEeS3hoTUHAmk0Q _0aScRHsAEeS3hoTUHAmk0Q">
        <ownedEnd xmi:type="uml:Property" xmi:id="_0aScQXsAEeS3hoTUHAmk0Q" name="papyrus developer" type="_op7MkHsAEeS3hoTUHAmk0Q" association="_0aScQHsAEeS3hoTUHAmk0Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0aScQnsAEeS3hoTUHAmk0Q" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0aScQ3sAEeS3hoTUHAmk0Q" value="1"/>
        </ownedEnd>
        <ownedEnd xmi:type="uml:Property" xmi:id="_0aScRHsAEeS3hoTUHAmk0Q" name="generate test model" type="_O7kcMHr5EeS3hoTUHAmk0Q" association="_0aScQHsAEeS3hoTUHAmk0Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0aScRXsAEeS3hoTUHAmk0Q" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0aScRnsAEeS3hoTUHAmk0Q" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_1QgSkHsAEeS3hoTUHAmk0Q" name="" memberEnd="_1QgSkXsAEeS3hoTUHAmk0Q _1QgSlHsAEeS3hoTUHAmk0Q">
        <ownedEnd xmi:type="uml:Property" xmi:id="_1QgSkXsAEeS3hoTUHAmk0Q" name="papyrus developer" type="_op7MkHsAEeS3hoTUHAmk0Q" association="_1QgSkHsAEeS3hoTUHAmk0Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1QgSknsAEeS3hoTUHAmk0Q" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1QgSk3sAEeS3hoTUHAmk0Q" value="1"/>
        </ownedEnd>
        <ownedEnd xmi:type="uml:Property" xmi:id="_1QgSlHsAEeS3hoTUHAmk0Q" name="generate junit test code" type="_nVl24HsAEeS3hoTUHAmk0Q" association="_1QgSkHsAEeS3hoTUHAmk0Q">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1QgSlXsAEeS3hoTUHAmk0Q" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1QgSlnsAEeS3hoTUHAmk0Q" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Model" xmi:id="_5RzLMH7ZEeS3hoTUHAmk0Q" name="TestFrameworkBase">
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLMX7ZEeS3hoTUHAmk0Q" name="AbstractCreateElementFromPaletteTest" isAbstract="true">
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLMn7ZEeS3hoTUHAmk0Q" general="_5RzLNn7ZEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLM37ZEeS3hoTUHAmk0Q" name="AbstractCreateLinkFromPaletteTest" isAbstract="true">
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLNH7ZEeS3hoTUHAmk0Q" general="_5RzLMX7ZEeS3hoTUHAmk0Q"/>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_5RzLNX7ZEeS3hoTUHAmk0Q" name="testCreateLinkFromPalette"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLNn7ZEeS3hoTUHAmk0Q" name="AbstractPapyrusTestCase" isAbstract="true"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLN37ZEeS3hoTUHAmk0Q" name="UMLElementTypes"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLOH7ZEeS3hoTUHAmk0Q" name="UMLPackage"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLOX7ZEeS3hoTUHAmk0Q" name="AbstractCreateLinkOwnedBySourceFromPaletteTest" isAbstract="true">
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLOn7ZEeS3hoTUHAmk0Q" general="_5RzLM37ZEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLO37ZEeS3hoTUHAmk0Q" name="AbstractCreateNodeFromPaletteTest" isAbstract="true">
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLPH7ZEeS3hoTUHAmk0Q" general="_5RzLMX7ZEeS3hoTUHAmk0Q"/>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_5RzLPX7ZEeS3hoTUHAmk0Q" name="testCreateNodeFromPalette"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLPn7ZEeS3hoTUHAmk0Q" name="AbstractAppearanceNodeTest" isAbstract="true">
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLP37ZEeS3hoTUHAmk0Q" general="_5RzLNn7ZEeS3hoTUHAmk0Q"/>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_5RzLQH7ZEeS3hoTUHAmk0Q" name="testAppearance"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLQX7ZEeS3hoTUHAmk0Q" name="AbstractDropNodeTest" isAbstract="true">
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLQn7ZEeS3hoTUHAmk0Q" general="_5RzLNn7ZEeS3hoTUHAmk0Q"/>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_5RzLQ37ZEeS3hoTUHAmk0Q" name="testToDropNode"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLRH7ZEeS3hoTUHAmk0Q" name="AbstractDeleteNodeTest" isAbstract="true">
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLRX7ZEeS3hoTUHAmk0Q" general="_5RzLNn7ZEeS3hoTUHAmk0Q"/>
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLRn7ZEeS3hoTUHAmk0Q" general="_5RzLNn7ZEeS3hoTUHAmk0Q"/>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_5RzLR37ZEeS3hoTUHAmk0Q" name="testDestroy"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLSH7ZEeS3hoTUHAmk0Q" name="AbstractEditableNodeTest" isAbstract="true">
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLSX7ZEeS3hoTUHAmk0Q" general="_5RzLNn7ZEeS3hoTUHAmk0Q"/>
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLSn7ZEeS3hoTUHAmk0Q" general="_5RzLNn7ZEeS3hoTUHAmk0Q"/>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_5RzLS37ZEeS3hoTUHAmk0Q" name="testEdition"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_5RzLTH7ZEeS3hoTUHAmk0Q" name="AbstractCreateChildLabelNodeFromPaletteTest" isAbstract="true">
          <generalization xmi:type="uml:Generalization" xmi:id="_5RzLTX7ZEeS3hoTUHAmk0Q" general="_5RzLMX7ZEeS3hoTUHAmk0Q"/>
          <ownedOperation xmi:type="uml:Operation" xmi:id="_5RzLTn7ZEeS3hoTUHAmk0Q" name="testCreateChildLabelNodeFromPaletteTest"/>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Model" xmi:id="_BaNQZnoyEeSIvbC5EJMc1g" name="Design">
      <ownedComment xmi:type="uml:Comment" xmi:id="_iH6T8HxnEeS3hoTUHAmk0Q" annotatedElement="_rNn0IHvLEeS3hoTUHAmk0Q">
        <body>This is the sequence of actions performed in the workflow to generate the tests. The input and output pins represent the inputs and outputs of every action.&#xD;
</body>
      </ownedComment>
      <ownedComment xmi:type="uml:Comment" xmi:id="_2FrE4H7CEeS3hoTUHAmk0Q" annotatedElement="_kuoXcHvLEeS3hoTUHAmk0Q">
        <body>This is the structure of launchers for the generation workflow according to each type of diagram.</body>
      </ownedComment>
      <packagedElement xmi:type="uml:Abstraction" xmi:id="_BaNQZ3oyEeSIvbC5EJMc1g" name="DesignAbstraction" client="_BaNQZnoyEeSIvbC5EJMc1g" supplier="_BaNQY3oyEeSIvbC5EJMc1g"/>
      <packagedElement xmi:type="uml:Package" xmi:id="_kuoXcHvLEeS3hoTUHAmk0Q" name="Structure">
        <packagedElement xmi:type="uml:Class" xmi:id="_3C8cUHvLEeS3hoTUHAmk0Q" name="GenerateTestsWorkflow" isAbstract="true"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C9DYHvLEeS3hoTUHAmk0Q" name="StateMachineDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C9DYXvLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C9DYnvLEeS3hoTUHAmk0Q" name="ClassDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C9DY3vLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C9DZHvLEeS3hoTUHAmk0Q" name="CommunicationDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C9DZXvLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C9qcHvLEeS3hoTUHAmk0Q" name="UseCaseDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C9qcXvLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C9qcnvLEeS3hoTUHAmk0Q" name="ActivityDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C9qc3vLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C9qdHvLEeS3hoTUHAmk0Q" name="SequenceDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C9qdXvLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C9qdnvLEeS3hoTUHAmk0Q" name="DeploymentDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C9qd3vLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C-RgHvLEeS3hoTUHAmk0Q" name="CompositeStructureDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C-RgXvLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C-RgnvLEeS3hoTUHAmk0Q" name="ComponentDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C-Rg3vLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C-RhHvLEeS3hoTUHAmk0Q" name="TimingDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C-RhXvLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_3C-4kHvLEeS3hoTUHAmk0Q" name="ProfileDiagramGenerateTestsWorkflow">
          <generalization xmi:type="uml:Generalization" xmi:id="_3C-4kXvLEeS3hoTUHAmk0Q" general="_3C8cUHvLEeS3hoTUHAmk0Q"/>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_rNn0IHvLEeS3hoTUHAmk0Q" name="Behavior">
        <packagedElement xmi:type="uml:Activity" xmi:id="_p9X3wHvMEeS3hoTUHAmk0Q" name="Papyrus Test Generation Workflow" node="_p9X3xXvMEeS3hoTUHAmk0Q _p9X3xnvMEeS3hoTUHAmk0Q _p9X3x3vMEeS3hoTUHAmk0Q _p9X3zHvMEeS3hoTUHAmk0Q _p9X313vMEeS3hoTUHAmk0Q">
          <edge xmi:type="uml:ControlFlow" xmi:id="_p9X3wXvMEeS3hoTUHAmk0Q" target="_p9X3x3vMEeS3hoTUHAmk0Q" source="_p9X3xXvMEeS3hoTUHAmk0Q"/>
          <edge xmi:type="uml:ControlFlow" xmi:id="_p9X3wnvMEeS3hoTUHAmk0Q" target="_p9X3zHvMEeS3hoTUHAmk0Q" source="_p9X3x3vMEeS3hoTUHAmk0Q"/>
          <edge xmi:type="uml:ControlFlow" xmi:id="_p9X3w3vMEeS3hoTUHAmk0Q" target="_p9X313vMEeS3hoTUHAmk0Q" source="_p9X3zHvMEeS3hoTUHAmk0Q"/>
          <edge xmi:type="uml:ControlFlow" xmi:id="_p9X3xHvMEeS3hoTUHAmk0Q" target="_p9X3xnvMEeS3hoTUHAmk0Q" source="_p9X313vMEeS3hoTUHAmk0Q"/>
          <node xmi:type="uml:InitialNode" xmi:id="_p9X3xXvMEeS3hoTUHAmk0Q" name="InitialNode" outgoing="_p9X3wXvMEeS3hoTUHAmk0Q"/>
          <node xmi:type="uml:FlowFinalNode" xmi:id="_p9X3xnvMEeS3hoTUHAmk0Q" name="FlowFinalNode" incoming="_p9X3xHvMEeS3hoTUHAmk0Q"/>
          <node xmi:type="uml:OpaqueAction" xmi:id="_p9X3x3vMEeS3hoTUHAmk0Q" name="Transform GMFGen model to UML" incoming="_p9X3wXvMEeS3hoTUHAmk0Q" outgoing="_p9X3wnvMEeS3hoTUHAmk0Q">
            <inputValue xmi:type="uml:InputPin" xmi:id="_p9X3yHvMEeS3hoTUHAmk0Q" name="[DiagramType].gmfgen">
              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_p9X3yXvMEeS3hoTUHAmk0Q" value="1"/>
            </inputValue>
            <outputValue xmi:type="uml:OutputPin" xmi:id="_p9X3ynvMEeS3hoTUHAmk0Q" name="[DiagramType].gmfgen.uml">
              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_p9X3y3vMEeS3hoTUHAmk0Q" value="1"/>
            </outputValue>
          </node>
          <node xmi:type="uml:OpaqueAction" xmi:id="_p9X3zHvMEeS3hoTUHAmk0Q" name="Generate UML-UTP Test Model" incoming="_p9X3wnvMEeS3hoTUHAmk0Q" outgoing="_p9X3w3vMEeS3hoTUHAmk0Q">
            <inputValue xmi:type="uml:InputPin" xmi:id="_p9X3zXvMEeS3hoTUHAmk0Q" name="[DiagramType].gmfgen.uml">
              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_p9X3znvMEeS3hoTUHAmk0Q" value="1"/>
            </inputValue>
            <inputValue xmi:type="uml:InputPin" xmi:id="_p9X3z3vMEeS3hoTUHAmk0Q" name="testFrameworkBase.uml">
              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_p9X30HvMEeS3hoTUHAmk0Q" value="1"/>
            </inputValue>
            <inputValue xmi:type="uml:InputPin" xmi:id="_p9X30XvMEeS3hoTUHAmk0Q" name="utp.profile.uml">
              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_p9X30nvMEeS3hoTUHAmk0Q" value="1"/>
            </inputValue>
            <inputValue xmi:type="uml:InputPin" xmi:id="_p9X303vMEeS3hoTUHAmk0Q" name="utpModuleFunction">
              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_p9X31HvMEeS3hoTUHAmk0Q" value="1"/>
            </inputValue>
            <outputValue xmi:type="uml:OutputPin" xmi:id="_p9X31XvMEeS3hoTUHAmk0Q" name="[DiagramType]TestModel.uml">
              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_p9X31nvMEeS3hoTUHAmk0Q" value="1"/>
            </outputValue>
          </node>
          <node xmi:type="uml:OpaqueAction" xmi:id="_p9X313vMEeS3hoTUHAmk0Q" name="Generate JUnit tests" incoming="_p9X3w3vMEeS3hoTUHAmk0Q" outgoing="_p9X3xHvMEeS3hoTUHAmk0Q">
            <inputValue xmi:type="uml:InputPin" xmi:id="_p9X32HvMEeS3hoTUHAmk0Q" name="[DiagramType]TestModel.uml">
              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_p9X32XvMEeS3hoTUHAmk0Q" value="1"/>
            </inputValue>
            <outputValue xmi:type="uml:OutputPin" xmi:id="_p9X32nvMEeS3hoTUHAmk0Q" name="Test[DiagramType][UseCase].java">
              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_p9X323vMEeS3hoTUHAmk0Q" value="1"/>
            </outputValue>
          </node>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_BaNQa3oyEeSIvbC5EJMc1g">
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6HNOoCG7EeWjkObMY_LmBA" source="PapyrusVersion">
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HNOoSG7EeWjkObMY_LmBA" key="Version" value="0.0.7"/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HNOoiG7EeWjkObMY_LmBA" key="Comment" value=""/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HNOoyG7EeWjkObMY_LmBA" key="Copyright" value=""/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HNOpCG7EeWjkObMY_LmBA" key="Date" value="2014-11-26"/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HNOpSG7EeWjkObMY_LmBA" key="Author" value=""/>
      </eAnnotations>
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BaNQbHoyEeSIvbC5EJMc1g" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_rplkQXVxEeSZ-fQGFkyJeQ"/>
      </eAnnotations>
      <appliedProfile xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_kWqjAMbXEeO09JBvNFZRNw"/>
    </profileApplication>
    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_BaNQbXoyEeSIvbC5EJMc1g">
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BaNQbnoyEeSIvbC5EJMc1g" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_rpmyYHVxEeSZ-fQGFkyJeQ"/>
      </eAnnotations>
      <appliedProfile xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_qCT3MMbXEeO09JBvNFZRNw"/>
    </profileApplication>
    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_BaNQb3oyEeSIvbC5EJMc1g">
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6HQR8CG7EeWjkObMY_LmBA" source="PapyrusVersion">
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HQR8SG7EeWjkObMY_LmBA" key="Version" value="0.0.7"/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HQR8iG7EeWjkObMY_LmBA" key="Comment" value=""/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HQR8yG7EeWjkObMY_LmBA" key="Copyright" value=""/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HQR9CG7EeWjkObMY_LmBA" key="Date" value="2014-11-26"/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HQR9SG7EeWjkObMY_LmBA" key="Author" value=""/>
      </eAnnotations>
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BaNQcHoyEeSIvbC5EJMc1g" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_rpnZcXVxEeSZ-fQGFkyJeQ"/>
      </eAnnotations>
      <appliedProfile xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/developerprocess.profile.uml#_2LNtQMbYEeO09JBvNFZRNw"/>
    </profileApplication>
    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_BaNQcXoyEeSIvbC5EJMc1g">
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BaNQcnoyEeSIvbC5EJMc1g" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements"/>
      </eAnnotations>
      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_OOJC4LX8EduFmqQsrNB9lw"/>
    </profileApplication>
    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_BaNQc3oyEeSIvbC5EJMc1g">
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6HSuMCG7EeWjkObMY_LmBA" source="PapyrusVersion">
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HSuMSG7EeWjkObMY_LmBA" key="Version" value="0.0.11"/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HSuMiG7EeWjkObMY_LmBA" key="Comment" value=""/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HSuMyG7EeWjkObMY_LmBA" key="Copyright" value=""/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HSuNCG7EeWjkObMY_LmBA" key="Date" value="2014-11-14"/>
        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6HSuNSG7EeWjkObMY_LmBA" key="Author" value=""/>
      </eAnnotations>
      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BaNQdHoyEeSIvbC5EJMc1g" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="pathmap://DEVELOPER_PROFILES/Document.profile.uml#_RQrLoWwBEeSIYu1Ih2FYyQ"/>
      </eAnnotations>
      <appliedProfile xmi:type="uml:Profile" href="pathmap://DEVELOPER_PROFILES/Document.profile.uml#_D0JcUMnzEeO9CYUoXDRplw"/>
    </profileApplication>
  </uml:Model>
  <structure:Project xmi:id="_BaNQdXoyEeSIvbC5EJMc1g" author="Juan Cadavid&#xD;&#xA;[juan.cadavid@cea.fr]" version="1.0" base_Model="_BaNQYHoyEeSIvbC5EJMc1g" title="Papyrus Test Generation Framework"/>
  <structure:Requirements xmi:id="_BaNQdnoyEeSIvbC5EJMc1g" base_Model="_BaNQYnoyEeSIvbC5EJMc1g"/>
  <structure:UseCases xmi:id="_BaNQd3oyEeSIvbC5EJMc1g" base_Model="_BaNQY3oyEeSIvbC5EJMc1g"/>
  <structure:Design xmi:id="_BaNQeHoyEeSIvbC5EJMc1g" base_Model="_BaNQZnoyEeSIvbC5EJMc1g"/>
  <Requirements:Requirement xmi:id="_8rgkMHsDEeS3hoTUHAmk0Q" text="The framework shall allow to generate JUnit tests for UML diagram editors, its nodes and links" id="req01" base_Class="_8rcSwHsDEeS3hoTUHAmk0Q"/>
  <Requirements:Requirement xmi:id="_ZmnooHsEEeS3hoTUHAmk0Q" text="The framework shall test functional test cases: for example creation of elements, hide, delete, edition, drop from model explorer, among many others." id="req02" base_Class="_ZmlMYHsEEeS3hoTUHAmk0Q"/>
  <Requirements:Requirement xmi:id="_aSIDwHsEEeS3hoTUHAmk0Q" text="The framework shall be extensible with new diagram editors based on GMF, and other technologies where an editor description is available as a model (such as Nattable)." id="req03" base_Class="_aSGOkHsEEeS3hoTUHAmk0Q"/>
  <Requirements:Requirement xmi:id="_fRhggHsFEeS3hoTUHAmk0Q" text="The framework shall attain complete functional coverage for a diagram editor." id="req04" base_Class="_fRgSYHsFEeS3hoTUHAmk0Q"/>
  <Requirements:Requirement xmi:id="_2AkEQHsFEeS3hoTUHAmk0Q" text="The framework shall cover all the possible code coverable by generated tests (expected to be around 80%)" id="req05" base_Class="_2AiPEHsFEeS3hoTUHAmk0Q"/>
</xmi:XMI>

Back to the top