1   package de.uni_leipzig.wifa.iwi.mr3.dao.neo4j.impl;
2   
3   import static org.easymock.EasyMock.createMock;
4   import static org.easymock.EasyMock.expect;
5   import static org.easymock.EasyMock.replay;
6   import static org.easymock.EasyMock.reset;
7   import static org.easymock.EasyMock.verify;
8   
9   import java.util.HashMap;
10  import java.util.Iterator;
11  import java.util.Map;
12  
13  import org.eclipse.emf.common.util.EList;
14  import org.eclipse.emf.ecore.EClassifier;
15  import org.eclipse.emf.ecore.EGenericType;
16  import org.eclipse.emf.ecore.EObject;
17  import org.eclipse.emf.ecore.EPackage;
18  import org.eclipse.emf.ecore.EcorePackage;
19  import org.eclipse.emf.ecore.resource.Resource;
20  import org.junit.After;
21  import org.junit.Before;
22  import org.junit.Ignore;
23  import org.junit.Test;
24  import org.neo4j.api.core.Direction;
25  import org.neo4j.api.core.NeoService;
26  import org.neo4j.api.core.Node;
27  import org.neo4j.api.core.Relationship;
28  import org.neo4j.api.core.ReturnableEvaluator;
29  import org.neo4j.api.core.StopEvaluator;
30  import org.neo4j.api.core.Traverser;
31  import org.neo4j.api.core.Traverser.Order;
32  
33  import de.uni_leipzig.wifa.iwi.mr3.dao.Constants;
34  import de.uni_leipzig.wifa.iwi.mr3.dao.neo4j.EcoreRelationshipType;
35  
36  /**
37   * Test.
38   */
39  public class PhaseTwoSaveProcessorEGenericsTest
40  {
41    /** Test object (to). */
42    private AbstractNeoSaveProcessor to;
43  
44    private Map<EObject, Object> registry;
45    /** and the Mocks. */
46    private NeoService neoMock;
47    private Resource resMock;
48    private Iterable<Relationship> refIterableMock;
49    private Iterator<Relationship> refIteratorMock;
50    private Iterable<Relationship> subRefIterableMock;
51    private Iterator<Relationship> subRefIteratorMock;
52    private Iterator<Node> metaEcoreSubNodesIteratorMock;
53    private Node refNodeMock;
54    private Node subRefNodeMock;
55    private Node metaEcoreNodeMock;
56    private Node metaElementNodeMock;
57    private Node aEmptyNodeMock;
58    private Relationship ref2SubrefRelMock;
59    private Relationship aEmptyRelMock;
60    private Relationship metaEcoreRelMock;
61    private Traverser metaEcoreSubNodesTraverserMock;
62    private NeoHelper neoHelper;
63  
64    /**
65     * @see junit.framework.TestCase#setUp()
66     */
67    @Before
68    public void setUp()
69    {
70      // Create all needed Mocks
71      // if neccessary, overwrite them in the testmethods
72      metaElementNodeMock = createMock("metaElementNode", Node.class);
73      replay(metaElementNodeMock);
74  
75      // Play the ecore metamodel
76      metaEcoreSubNodesIteratorMock = createMock(Iterator.class);
77      expect(metaEcoreSubNodesIteratorMock.hasNext()).andReturn(true);
78      expect(metaEcoreSubNodesIteratorMock.next()).andReturn(metaElementNodeMock);
79      replay(metaEcoreSubNodesIteratorMock);
80  
81      metaEcoreSubNodesTraverserMock = createMock(Traverser.class);
82      expect(metaEcoreSubNodesTraverserMock.iterator()).andReturn(metaEcoreSubNodesIteratorMock);
83      replay(metaEcoreSubNodesTraverserMock);
84  
85      metaEcoreNodeMock = createMock("metaEcoreNode", Node.class);
86      expect(metaEcoreNodeMock.getProperty(Constants.PROPERTY_NS_URI)).andReturn(EcorePackage.eNS_URI);
87      expect(
88          metaEcoreNodeMock.traverse(Order.BREADTH_FIRST, StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL_BUT_START_NODE,
89              EcoreRelationshipType.CONTAINS, Direction.OUTGOING)).andReturn(metaEcoreSubNodesTraverserMock);
90      replay(metaEcoreNodeMock);
91  
92      metaEcoreRelMock = createMock(Relationship.class);
93      expect(metaEcoreRelMock.getEndNode()).andReturn(metaEcoreNodeMock);
94      replay(metaEcoreRelMock);
95  
96      aEmptyNodeMock = createMock("aEmptyNodeMock", Node.class);
97      expect(aEmptyNodeMock.getProperty(Constants.PROPERTY_NS_URI)).andReturn("http://empty.model.com");
98      replay(aEmptyNodeMock);
99  
100     aEmptyRelMock = createMock(Relationship.class);
101     expect(aEmptyRelMock.getEndNode()).andReturn(aEmptyNodeMock);
102     replay(aEmptyRelMock);
103 
104     subRefIteratorMock = createMock(Iterator.class);
105     expect(subRefIteratorMock.hasNext()).andReturn(true);
106     expect(subRefIteratorMock.next()).andReturn(aEmptyRelMock);
107     expect(subRefIteratorMock.hasNext()).andReturn(true);
108     expect(subRefIteratorMock.next()).andReturn(metaEcoreRelMock);
109     replay(subRefIteratorMock);
110 
111     subRefIterableMock = createMock(Iterable.class);
112     expect(subRefIterableMock.iterator()).andReturn(subRefIteratorMock);
113     replay(subRefIterableMock);
114 
115     subRefNodeMock = createMock("subRefNode", Node.class);
116     expect(subRefNodeMock.getRelationships(Direction.OUTGOING)).andReturn(subRefIterableMock);
117     replay(subRefNodeMock);
118 
119     ref2SubrefRelMock = createMock(Relationship.class);
120     expect(ref2SubrefRelMock.getEndNode()).andReturn(subRefNodeMock);
121     replay(ref2SubrefRelMock);
122 
123     refIteratorMock = createMock(Iterator.class);
124     expect(refIteratorMock.hasNext()).andReturn(true);
125     expect(refIteratorMock.next()).andReturn(ref2SubrefRelMock);
126     replay(refIteratorMock);
127 
128     refIterableMock = createMock(Iterable.class);
129     expect(refIterableMock.iterator()).andReturn(refIteratorMock);
130     replay(refIterableMock);
131 
132     refNodeMock = createMock("refNode", Node.class);
133     expect(refNodeMock.getRelationships(EcoreRelationshipType.RESOURCES, Direction.OUTGOING)).andReturn(refIterableMock);
134     replay(refNodeMock);
135 
136     // Create a little Map as registry
137     registry = new HashMap<EObject, Object>();
138 
139     // This acts as neoService
140     neoMock = createMock(NeoService.class);
141     expect(neoMock.getReferenceNode()).andReturn(refNodeMock);
142     replay(neoMock);
143 
144     // This is the Resource
145     resMock = createMock(Resource.class);
146     replay(resMock);
147 
148     neoHelper = new NeoHelper();
149     neoHelper.setNeo(neoMock);
150     // initialize the PhaseOneProcessor
151     to = new PhaseTwoSaveProcessor();
152     to.setHelper(neoHelper);
153   }
154 
155   /**
156    * @see junit.framework.TestCase#tearDown()
157    */
158   @After
159   public void tearDown()
160   {
161     verify(metaElementNodeMock);
162     verify(metaEcoreSubNodesIteratorMock);
163     verify(metaEcoreSubNodesTraverserMock);
164     verify(metaEcoreNodeMock);
165     verify(metaEcoreRelMock);
166     verify(aEmptyNodeMock);
167     verify(aEmptyRelMock);
168     verify(subRefIteratorMock);
169     verify(subRefIterableMock);
170     verify(subRefNodeMock);
171     verify(ref2SubrefRelMock);
172     verify(refIteratorMock);
173     verify(refIterableMock);
174     verify(refNodeMock);
175     verify(neoMock);
176     verify(resMock);
177   }
178 
179   /**
180    * Test method for
181    * {@link de.uni_leipzig.wifa.iwi.mr3.dao.neo4j.impl.impl.PhaseTwoSaveProcessor#process(org.eclipse.emf.ecore.EGenericType)}
182    * .
183    */
184   @Test
185   public void testProcessEGenericType()
186   {
187     final EClassifier eClassifierMock1 = createMock(EClassifier.class);
188     final Node eClassifierNodeMock1 = createMock("eClassifierNode", Node.class);
189     expect(eClassifierNodeMock1.hasRelationship(EcoreRelationshipType.CONTAINS, Direction.INCOMING)).andReturn(false);
190     replay(eClassifierMock1, eClassifierNodeMock1);
191     registry.put(eClassifierMock1, eClassifierNodeMock1);
192 
193     final EGenericType eGenericTypeMock1 = createMock(EGenericType.class);
194     final Node eGenericTypeNodeMock1 = createMock("eGenericTypeNode", Node.class);
195     replay(eGenericTypeMock1, eGenericTypeNodeMock1);
196     registry.put(eGenericTypeMock1, eGenericTypeNodeMock1);
197 
198     final EGenericType eTypeGenericTypeMock1 = createMock(EGenericType.class);
199 
200     final Node eTypeGenericTypeNodeMock1 = createMock("eTypeGenericTypeNode", Node.class);
201     replay(eTypeGenericTypeMock1, eTypeGenericTypeNodeMock1);
202     registry.put(eTypeGenericTypeMock1, eTypeGenericTypeNodeMock1);
203 
204     final EGenericType eTypeGenericTypeMock2 = createMock(EGenericType.class);
205 
206     final Node eTypeGenericTypeNodeMock2 = createMock("eTypeGenericNode", Node.class);
207     replay(eTypeGenericTypeMock2, eTypeGenericTypeNodeMock2);
208     registry.put(eTypeGenericTypeMock2, eTypeGenericTypeNodeMock2);
209 
210     reset(metaElementNodeMock);
211     expect(metaElementNodeMock.hasProperty(Constants.PROPERTY_NAME)).andReturn(true);
212     expect(metaElementNodeMock.getProperty(Constants.PROPERTY_NAME)).andReturn(
213         EGenericType.class.getSimpleName().contains(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY.getName())
214             ? EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY.getName() : EGenericType.class.getSimpleName());
215     expect(metaElementNodeMock.createRelationshipTo(eGenericTypeNodeMock1, EcoreRelationshipType.INSTANCE)).andReturn(null);
216     replay(metaElementNodeMock);
217 
218     final Iterator<EGenericType> eGenericTypeIteratorMock = createMock(Iterator.class);
219     expect(eGenericTypeIteratorMock.hasNext()).andReturn(true);
220     expect(eGenericTypeIteratorMock.next()).andReturn(eTypeGenericTypeMock1);
221     expect(eGenericTypeIteratorMock.hasNext()).andReturn(true);
222     expect(eGenericTypeIteratorMock.next()).andReturn(eTypeGenericTypeMock2);
223     expect(eGenericTypeIteratorMock.hasNext()).andReturn(false);
224     replay(eGenericTypeIteratorMock);
225 
226     final EList<EGenericType> eGenericTypeListMock = createMock(EList.class);
227     expect(eGenericTypeListMock.iterator()).andReturn(eGenericTypeIteratorMock);
228     replay(eGenericTypeListMock);
229 
230     reset(eGenericTypeMock1);
231     expect(eGenericTypeMock1.getETypeArguments()).andReturn(eGenericTypeListMock);
232     expect(eGenericTypeMock1.getEClassifier()).andReturn(eClassifierMock1);
233     replay(eGenericTypeMock1);
234 
235     reset(eGenericTypeNodeMock1);
236     expect(eGenericTypeNodeMock1.createRelationshipTo(eTypeGenericTypeNodeMock1, EcoreRelationshipType.GENERIC_TYPE_ARGUMENT))
237         .andReturn(null);
238     expect(eGenericTypeNodeMock1.createRelationshipTo(eTypeGenericTypeNodeMock2, EcoreRelationshipType.GENERIC_TYPE_ARGUMENT))
239         .andReturn(null);
240     expect(eGenericTypeNodeMock1.createRelationshipTo(eClassifierNodeMock1, EcoreRelationshipType.TYPE)).andReturn(null);
241     expect(eGenericTypeNodeMock1.hasRelationship(EcoreRelationshipType.CONTAINS, Direction.INCOMING)).andReturn(false);
242     expect(eGenericTypeNodeMock1.createRelationshipTo(eClassifierNodeMock1, EcoreRelationshipType.DEPENDS)).andReturn(null);
243     replay(eGenericTypeNodeMock1);
244 
245     to.process(eGenericTypeMock1, registry);
246 
247     // and verify local mocks
248     verify(eClassifierMock1, eClassifierNodeMock1);
249     verify(eGenericTypeNodeMock1, eGenericTypeMock1, eGenericTypeIteratorMock, eGenericTypeListMock);
250 
251   }
252 
253   /**
254    * Test method for
255    * {@link de.uni_leipzig.wifa.iwi.mr3.dao.neo4j.impl.impl.PhaseTwoSaveProcessor#process(org.eclipse.emf.ecore.EGenericType)}
256    * . With no classifier
257    */
258   @Test
259   public void testProcessEGenericTypeNoClassifier()
260   {
261     final EGenericType eGenericTypeMock1 = createMock(EGenericType.class);
262     final Node eGenericTypeNodeMock1 = createMock(Node.class);
263     replay(eGenericTypeMock1, eGenericTypeNodeMock1);
264     registry.put(eGenericTypeMock1, eGenericTypeNodeMock1);
265 
266     final EGenericType eTypeGenericTypeMock1 = createMock(EGenericType.class);
267     final Node eTypeGenericTypeNodeMock1 = createMock(Node.class);
268     replay(eTypeGenericTypeMock1, eTypeGenericTypeNodeMock1);
269     registry.put(eTypeGenericTypeMock1, eTypeGenericTypeNodeMock1);
270 
271     final EGenericType eTypeGenericTypeMock2 = createMock(EGenericType.class);
272     final Node eTypeGenericTypeNodeMock2 = createMock(Node.class);
273     replay(eTypeGenericTypeMock2, eTypeGenericTypeNodeMock2);
274     registry.put(eTypeGenericTypeMock2, eTypeGenericTypeNodeMock2);
275 
276     reset(metaElementNodeMock);
277     expect(metaElementNodeMock.hasProperty(Constants.PROPERTY_NAME)).andReturn(true);
278     expect(metaElementNodeMock.getProperty(Constants.PROPERTY_NAME)).andReturn(
279         EGenericType.class.getSimpleName().contains(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY.getName())
280             ? EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY.getName() : EGenericType.class.getSimpleName());
281     expect(metaElementNodeMock.createRelationshipTo(eGenericTypeNodeMock1, EcoreRelationshipType.INSTANCE)).andReturn(null);
282     replay(metaElementNodeMock);
283 
284     final Iterator<EGenericType> eGenericTypeIteratorMock = createMock(Iterator.class);
285     expect(eGenericTypeIteratorMock.hasNext()).andReturn(true);
286     expect(eGenericTypeIteratorMock.next()).andReturn(eTypeGenericTypeMock1);
287     expect(eGenericTypeIteratorMock.hasNext()).andReturn(true);
288     expect(eGenericTypeIteratorMock.next()).andReturn(eTypeGenericTypeMock2);
289     expect(eGenericTypeIteratorMock.hasNext()).andReturn(false);
290     replay(eGenericTypeIteratorMock);
291 
292     final EList<EGenericType> eGenericTypeListMock = createMock(EList.class);
293     expect(eGenericTypeListMock.iterator()).andReturn(eGenericTypeIteratorMock);
294     replay(eGenericTypeListMock);
295 
296     reset(eGenericTypeMock1);
297     expect(eGenericTypeMock1.getETypeArguments()).andReturn(eGenericTypeListMock);
298     expect(eGenericTypeMock1.getEClassifier()).andReturn(null);
299     replay(eGenericTypeMock1);
300 
301     reset(eGenericTypeNodeMock1);
302     expect(eGenericTypeNodeMock1.createRelationshipTo(eTypeGenericTypeNodeMock1, EcoreRelationshipType.GENERIC_TYPE_ARGUMENT))
303         .andReturn(null);
304     expect(eGenericTypeNodeMock1.createRelationshipTo(eTypeGenericTypeNodeMock2, EcoreRelationshipType.GENERIC_TYPE_ARGUMENT))
305         .andReturn(null);
306     replay(eGenericTypeNodeMock1);
307 
308     to.process(eGenericTypeMock1, registry);
309 
310     // and verify local mocks
311     verify(eGenericTypeNodeMock1, eGenericTypeMock1, eGenericTypeIteratorMock, eGenericTypeListMock);
312 
313   }
314 
315   /**
316    * Test method for
317    * {@link de.uni_leipzig.wifa.iwi.mr3.dao.neo4j.impl.impl.PhaseTwoSaveProcessor#process(org.eclipse.emf.ecore.EGenericType)}
318    * . The classifier is not in the registry. The containing epackage is the
319    * model.
320    */
321   @Ignore
322   @Test
323   public void testProcessEGenericType1()
324   {
325     final String modelUri = "http://model.org/testmodel";
326     final String modelName = "testmodel";
327 
328     final Traverser ePackageModelNodeTraverserMock = createMock(Traverser.class);
329     replay(ePackageModelNodeTraverserMock);
330 
331     final EPackage ePackageMock1 = createMock(EPackage.class);
332     // This is the main package, so return null
333     expect(ePackageMock1.eContainer()).andReturn(null);
334     expect(ePackageMock1.getNsURI()).andReturn(modelUri);
335 
336     // continued few lines later
337     final Node eClassifierNodeMock1 = createMock(Node.class);
338     replay(eClassifierNodeMock1);
339 
340     final Node ePackageNodeMock1 = createMock(Node.class);
341     // expect(ePackageNodeMock1.createRelationshipTo(eClassifierNodeMock1,
342     // EcoreRelationshipType.TYPE)).andReturn(null);
343 
344     // expect(ePackageNodeMock1.traverse(Order.BREADTH_FIRST,
345     // StopEvaluator.DEPTH_ONE, ReturnableEvaluator.ALL_BUT_START_NODE,
346     // EcoreRelationshipType.CONTAINS,
347     // Direction.OUTGOING)).andReturn(ePackageModelNodeTraverserMock);
348     replay(ePackageMock1, ePackageNodeMock1);
349     registry.put(ePackageMock1, ePackageNodeMock1);
350 
351     final EClassifier eClassifierMock1 = createMock(EClassifier.class);
352     // find containing Package
353     expect(eClassifierMock1.getEPackage()).andReturn(ePackageMock1);
354     expect(eClassifierMock1.getName()).andReturn(modelName);
355     replay(eClassifierMock1);
356 
357     // determineNode() should fail
358     // registry.put(eClassifierMock1, eClassifierNodeMock1);
359 
360     final EGenericType eTypeGenericTypeMock1 = createMock(EGenericType.class);
361     final Node eTypeGenericTypeNodeMock1 = createMock(Node.class);
362     replay(eTypeGenericTypeMock1, eTypeGenericTypeNodeMock1);
363     registry.put(eTypeGenericTypeMock1, eTypeGenericTypeNodeMock1);
364 
365     final EGenericType eTypeGenericTypeMock2 = createMock(EGenericType.class);
366     final Node eTypeGenericTypeNodeMock2 = createMock(Node.class);
367     replay(eTypeGenericTypeMock2, eTypeGenericTypeNodeMock2);
368     registry.put(eTypeGenericTypeMock2, eTypeGenericTypeNodeMock2);
369 
370     final Iterator<EGenericType> eGenericTypeIteratorMock = createMock(Iterator.class);
371     expect(eGenericTypeIteratorMock.hasNext()).andReturn(true);
372     expect(eGenericTypeIteratorMock.next()).andReturn(eTypeGenericTypeMock1);
373     expect(eGenericTypeIteratorMock.hasNext()).andReturn(true);
374     expect(eGenericTypeIteratorMock.next()).andReturn(eTypeGenericTypeMock2);
375     expect(eGenericTypeIteratorMock.hasNext()).andReturn(false);
376     replay(eGenericTypeIteratorMock);
377 
378     final EList<EGenericType> eGenericTypeListMock = createMock(EList.class);
379     expect(eGenericTypeListMock.iterator()).andReturn(eGenericTypeIteratorMock);
380     replay(eGenericTypeListMock);
381 
382     final EGenericType eGenericTypeMock1 = createMock(EGenericType.class);
383     expect(eGenericTypeMock1.getETypeArguments()).andReturn(eGenericTypeListMock);
384     expect(eGenericTypeMock1.getEClassifier()).andReturn(eClassifierMock1);
385 
386     replay(eGenericTypeMock1);
387 
388     final Node eGenericTypeNodeMock1 = createMock(Node.class);
389     expect(eGenericTypeNodeMock1.createRelationshipTo(eTypeGenericTypeNodeMock1, EcoreRelationshipType.GENERIC_TYPE_ARGUMENT))
390         .andReturn(null);
391     expect(eGenericTypeNodeMock1.createRelationshipTo(eTypeGenericTypeNodeMock2, EcoreRelationshipType.GENERIC_TYPE_ARGUMENT))
392         .andReturn(null);
393     expect(eGenericTypeNodeMock1.createRelationshipTo(eClassifierNodeMock1, EcoreRelationshipType.TYPE)).andReturn(null);
394     replay(eGenericTypeNodeMock1);
395     registry.put(eGenericTypeMock1, eGenericTypeNodeMock1);
396 
397     // Play the testmodel
398     final Node aEmptyElementNodeMock = createMock(Node.class);
399     expect(aEmptyElementNodeMock.hasProperty(Constants.PROPERTY_NAME)).andReturn(true);
400     expect(aEmptyElementNodeMock.getProperty(Constants.PROPERTY_NAME)).andReturn(modelName);
401     expect(aEmptyElementNodeMock.getSingleRelationship(EcoreRelationshipType.INSTANCE, Direction.INCOMING)).andReturn(null);
402     replay(aEmptyElementNodeMock);
403 
404     final Iterator<Node> aEmptySubNodesTraverserIteratorMock = createMock(Iterator.class);
405     expect(aEmptySubNodesTraverserIteratorMock.hasNext()).andReturn(true);
406     expect(aEmptySubNodesTraverserIteratorMock.next()).andReturn(aEmptyElementNodeMock);
407     replay(aEmptySubNodesTraverserIteratorMock);
408 
409     final Traverser aEmptySubNodesTraverserMock = createMock(Traverser.class);
410     expect(aEmptySubNodesTraverserMock.iterator()).andReturn(aEmptySubNodesTraverserIteratorMock);
411     replay(aEmptySubNodesTraverserMock);
412 
413     // Play the ecore metamodel
414 
415     reset(metaElementNodeMock);
416     expect(metaElementNodeMock.hasProperty(Constants.PROPERTY_NAME)).andReturn(true);
417     expect(metaElementNodeMock.getProperty(Constants.PROPERTY_NAME)).andReturn(
418         EGenericType.class.getSimpleName().contains(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY.getName())
419             ? EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY.getName() : EGenericType.class.getSimpleName());
420     expect(metaElementNodeMock.createRelationshipTo(eGenericTypeNodeMock1, EcoreRelationshipType.INSTANCE)).andReturn(null);
421     replay(metaElementNodeMock);
422 
423     reset(metaEcoreSubNodesIteratorMock);
424     expect(metaEcoreSubNodesIteratorMock.hasNext()).andReturn(true);
425     expect(metaEcoreSubNodesIteratorMock.next()).andReturn(metaElementNodeMock);
426     // expect(metaEcoreSubNodesIteratorMock.hasNext()).andReturn(true);
427     //
428     expect(metaEcoreSubNodesIteratorMock.next()).andReturn(metaElementNodeMock);
429     replay(metaEcoreSubNodesIteratorMock);
430 
431     reset(metaEcoreSubNodesTraverserMock);
432     expect(metaEcoreSubNodesTraverserMock.iterator()).andReturn(metaEcoreSubNodesIteratorMock);
433     //
434     expect(metaEcoreSubNodesTraverserMock.iterator()).andReturn(metaEcoreSubNodesIteratorMock);
435     replay(metaEcoreSubNodesTraverserMock);
436 
437     reset(metaEcoreNodeMock);
438     expect(metaEcoreNodeMock.getProperty(Constants.PROPERTY_NS_URI)).andReturn(EcorePackage.eNS_URI);
439     expect(
440         metaEcoreNodeMock.traverse(Order.BREADTH_FIRST, StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL_BUT_START_NODE,
441             EcoreRelationshipType.CONTAINS, Direction.OUTGOING)).andReturn(metaEcoreSubNodesTraverserMock);
442     //
443     expect(metaEcoreNodeMock.getProperty(Constants.PROPERTY_NS_URI)).andReturn(modelUri);
444     // expect(
445     // metaEcoreNodeMock.traverse(Order.BREADTH_FIRST,
446     // StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL_BUT_START_NODE,
447     // EcoreRelationshipType.CONTAINS,
448     // Direction.OUTGOING)).andReturn(metaEcoreSubNodesTraverserMock);
449     replay(metaEcoreNodeMock);
450 
451     reset(metaEcoreRelMock);
452     expect(metaEcoreRelMock.getEndNode()).andReturn(metaEcoreNodeMock);
453     replay(metaEcoreRelMock);
454 
455     reset(aEmptyNodeMock);
456     expect(aEmptyNodeMock.getProperty(Constants.PROPERTY_NS_URI)).andReturn(modelUri);
457     expect(aEmptyNodeMock.getProperty(Constants.PROPERTY_NS_URI)).andReturn(modelUri);
458     expect(
459         aEmptyNodeMock.traverse(Order.BREADTH_FIRST, StopEvaluator.DEPTH_ONE, ReturnableEvaluator.ALL_BUT_START_NODE,
460             EcoreRelationshipType.CONTAINS, Direction.OUTGOING)).andReturn(aEmptySubNodesTraverserMock);
461 
462     replay(aEmptyNodeMock);
463 
464     reset(aEmptyRelMock);
465     expect(aEmptyRelMock.getEndNode()).andReturn(aEmptyNodeMock);
466     expect(aEmptyRelMock.getEndNode()).andReturn(aEmptyNodeMock);
467     replay(aEmptyRelMock);
468 
469     reset(subRefIteratorMock);
470     expect(subRefIteratorMock.hasNext()).andReturn(true);
471     expect(subRefIteratorMock.next()).andReturn(aEmptyRelMock);
472     expect(subRefIteratorMock.hasNext()).andReturn(true);
473     expect(subRefIteratorMock.next()).andReturn(metaEcoreRelMock);
474     expect(subRefIteratorMock.hasNext()).andReturn(true);
475     expect(subRefIteratorMock.next()).andReturn(aEmptyRelMock);
476     replay(subRefIteratorMock);
477 
478     reset(subRefIterableMock);
479     expect(subRefIterableMock.iterator()).andReturn(subRefIteratorMock);
480     expect(subRefIterableMock.iterator()).andReturn(subRefIteratorMock);
481     replay(subRefIterableMock);
482 
483     reset(subRefNodeMock);
484     expect(subRefNodeMock.getRelationships(Direction.OUTGOING)).andReturn(subRefIterableMock);
485     expect(subRefNodeMock.getRelationships(Direction.OUTGOING)).andReturn(subRefIterableMock);
486     replay(subRefNodeMock);
487 
488     reset(ref2SubrefRelMock);
489     expect(ref2SubrefRelMock.getEndNode()).andReturn(subRefNodeMock);
490     expect(ref2SubrefRelMock.getEndNode()).andReturn(subRefNodeMock);
491     replay(ref2SubrefRelMock);
492 
493     reset(refIteratorMock);
494     expect(refIteratorMock.hasNext()).andReturn(true);
495     expect(refIteratorMock.next()).andReturn(ref2SubrefRelMock);
496     expect(refIteratorMock.hasNext()).andReturn(true);
497     expect(refIteratorMock.next()).andReturn(ref2SubrefRelMock);
498     replay(refIteratorMock);
499 
500     reset(refIterableMock);
501     expect(refIterableMock.iterator()).andReturn(refIteratorMock);
502     expect(refIterableMock.iterator()).andReturn(refIteratorMock);
503     replay(refIterableMock);
504 
505     reset(refNodeMock);
506     expect(refNodeMock.getRelationships(EcoreRelationshipType.RESOURCES, Direction.OUTGOING)).andReturn(refIterableMock);
507     expect(refNodeMock.getRelationships(EcoreRelationshipType.RESOURCES, Direction.OUTGOING)).andReturn(refIterableMock);
508     replay(refNodeMock);
509 
510     reset(neoMock);
511     expect(neoMock.getReferenceNode()).andReturn(refNodeMock);
512     expect(neoMock.getReferenceNode()).andReturn(refNodeMock);
513     replay(neoMock);
514 
515     // run the test
516     // TODO: reactivate the test
517     // try
518     // {
519     // to.process(eGenericTypeMock1);
520     // }
521     // catch (final MRException e)
522     // {
523     // fail("No errore awaited here.");
524     // }
525     // and verify local mocks
526     verify(ePackageMock1);
527     verify(ePackageModelNodeTraverserMock);
528     verify(ePackageNodeMock1);
529     verify(aEmptySubNodesTraverserMock);
530     verify(aEmptyElementNodeMock);
531     verify(eClassifierMock1, eClassifierNodeMock1);
532     verify(eGenericTypeNodeMock1, eGenericTypeMock1, eGenericTypeIteratorMock, eGenericTypeListMock);
533 
534   }
535 }