Skip to content

Package: DynamicContainmentTreeSWTBot_PTest$2

DynamicContainmentTreeSWTBot_PTest$2

nameinstructionbranchcomplexitylinemethod
run()
M: 0 C: 72
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
{...}
M: 0 C: 9
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others.
3: *
4: * All rights reserved. This program and the accompanying materials
5: * are made available under the terms of the Eclipse Public License 2.0
6: * which accompanies this distribution, and is available at
7: * https://www.eclipse.org/legal/epl-2.0/
8: *
9: * SPDX-License-Identifier: EPL-2.0
10: *
11: * Contributors:
12: * Edgar Mueller - initial API and implementation
13: */
14: package org.eclipse.emf.ecp.view.ui.editor.test;
15:
16: import java.util.Arrays;
17:
18: import org.eclipse.emf.ecore.EObject;
19: import org.eclipse.emf.ecore.EReference;
20: import org.eclipse.emf.ecore.EStructuralFeature;
21: import org.eclipse.emf.ecore.util.EcoreUtil;
22: import org.eclipse.emf.ecp.view.dynamictree.model.DomainIntermediate;
23: import org.eclipse.emf.ecp.view.dynamictree.model.DomainRoot;
24: import org.eclipse.emf.ecp.view.dynamictree.model.DynamicContainmentItem;
25: import org.eclipse.emf.ecp.view.dynamictree.model.DynamicContainmentTree;
26: import org.eclipse.emf.ecp.view.dynamictree.model.DynamicContainmentTreeDomainModelReference;
27: import org.eclipse.emf.ecp.view.dynamictree.model.ModelFactory;
28: import org.eclipse.emf.ecp.view.dynamictree.model.ModelPackage;
29: import org.eclipse.emf.ecp.view.dynamictree.model.TestElement;
30: import org.eclipse.emf.ecp.view.dynamictree.model.TestElementContainer;
31: import org.eclipse.emf.ecp.view.spi.categorization.model.VCategorization;
32: import org.eclipse.emf.ecp.view.spi.categorization.model.VCategorizationElement;
33: import org.eclipse.emf.ecp.view.spi.categorization.model.VCategorizationFactory;
34: import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
35: import org.eclipse.emf.ecp.view.spi.model.VControl;
36: import org.eclipse.emf.ecp.view.spi.model.VElement;
37: import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
38: import org.eclipse.emf.ecp.view.spi.model.VView;
39: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
40: import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
41: import org.eclipse.swtbot.swt.finder.results.VoidResult;
42: import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
43:
44: public class DynamicContainmentTreeSWTBot_PTest extends ECPCommonSWTBotTest {
45:
46:         // private Node<DynamicContainmentTree> node;
47:
48:         private static final String ELEMENT_CONTAINER_ID = "111";
49:         private static final String ELEMENT_ID = "222";
50:         private static final String TEST_ELEMENT_NAME = "foo";
51:         private static final String TEST_ELEMENT_NAME_2 = "bar";
52:         private DynamicContainmentTree tree;
53:
54:         @Override
55:         public VView createView() {
56:
57:                 tree = ModelFactory.eINSTANCE.createDynamicContainmentTree();
58:                 tree.getPathToRoot().add(ModelPackage.eINSTANCE.getDomainRoot_Intermediate());
59:                 tree.getPathToRoot().add(ModelPackage.eINSTANCE.getDomainIntermediate_TestElementContainer());
60:                 tree.setChildReference(ModelPackage.eINSTANCE.getTestElementContainer_TestElements());
61:
62:                 // used for validation
63:                 final VControl childNameControl = VViewFactory.eINSTANCE.createControl();
64:
65:                 final DynamicContainmentTreeDomainModelReference reference = ModelFactory.eINSTANCE
66:                         .createDynamicContainmentTreeDomainModelReference();
67:                 final VFeaturePathDomainModelReference rootRef = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
68:
69:                 rootRef.getDomainModelEReferencePath().addAll(tree.getPathToRoot());
70:                 rootRef.setDomainModelEFeature(ModelPackage.eINSTANCE.getTestElementContainer_TestElements());
71:
72:                 reference.setPathFromRoot(rootRef);
73:                 reference.setPathFromBase(createFeaturePathDomainModelReference(ModelPackage.eINSTANCE.getTestElement_Name()));
74:
75:                 childNameControl.setDomainModelReference(reference);
76:                 tree.setChildComposite(childNameControl);
77:
78:                 final VControl viewControl = VViewFactory.eINSTANCE.createControl();
79:                 final VFeaturePathDomainModelReference modelRef = createFeaturePathDomainModelReference(
80:                         ModelPackage.eINSTANCE.getTestElementContainer_Id(),
81:                         ModelPackage.eINSTANCE.getDomainRoot_Intermediate(),
82:                         ModelPackage.eINSTANCE.getDomainIntermediate_TestElementContainer());
83:                 viewControl.setDomainModelReference(modelRef);
84:                 tree.setComposite(viewControl);
85:
86:                 final VView view = VViewFactory.eINSTANCE.createView();
87:                 view.setRootEClass(ModelPackage.eINSTANCE.getDomainRoot());
88:
89:                 final VCategorization categorization = VCategorizationFactory.eINSTANCE.createCategorization();
90:                 categorization.setName("quux");
91:                 categorization.getCategorizations().add(tree);
92:                 final VCategorizationElement element = VCategorizationFactory.eINSTANCE.createCategorizationElement();
93:                 element.getCategorizations().add(categorization);
94:                 view.getChildren().add(element);
95:                 // final ResourceSet rs = new ResourceSetImpl();
96:                 // final Resource createResource = rs.createResource(URI
97:                 // .createFileURI("C:/Users/Eugen/Workspaces/workspace_ecp/_viewmodelTest/dynamicView.viewmodel"));
98:                 // createResource.getContents().add(view);
99:                 // try {
100:                 // createResource.save(null);
101:                 // } catch (final IOException ex) {
102:                 // ex.printStackTrace();
103:                 // }
104:
105:                 return view;
106:
107:         }
108:
109:         private VFeaturePathDomainModelReference createFeaturePathDomainModelReference(EStructuralFeature feature,
110:                 EReference... references) {
111:                 final VFeaturePathDomainModelReference result = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
112:                 result.setDomainModelEFeature(feature);
113:                 result.getDomainModelEReferencePath().addAll(Arrays.asList(references));
114:                 return result;
115:         }
116:
117:         public static DynamicContainmentItem addItem(String id, VElement viewModelParent, EObject virtualParent) {
118:
119:                 // EObject virtualParent = (EObject) virtualParentNode.getLabelObject();
120:
121:                 final TestElement newValue = ModelFactory.eINSTANCE.createTestElement();
122:                 newValue.setParentId((String) virtualParent.eGet(virtualParent
123:                         .eClass().getEStructuralFeature("id")));
124:                 newValue.setId(id);
125:                 ((TestElementContainer) virtualParent).getTestElements().add(newValue);
126:                 VElement renderable = null;
127:                 DynamicContainmentTree tree = null;
128:                 // List<VAction> actions = null;
129:
130:                 if (!TestElementContainer.class.isInstance(virtualParent)) {
131:                         virtualParent = virtualParent.eContainer();
132:                         final DynamicContainmentItem item = (DynamicContainmentItem) viewModelParent;
133:
134:                         EObject parent = item.eContainer();
135:                         while (!DynamicContainmentTree.class.isInstance(parent)) {
136:                                 parent = parent.eContainer();
137:                         }
138:                         tree = (DynamicContainmentTree) parent;
139:                 }
140:
141:                 if (tree == null) {
142:                         tree = (DynamicContainmentTree) viewModelParent;
143:                 }
144:                 // actions = tree.getActions();
145:                 renderable = tree.getChildComposite();
146:
147:                 // final ECPControlContext childContext = virtualParentNode.getControlContext()
148:                 // .createSubContext(newValue);
149:                 final DynamicContainmentItem pi = ModelFactory.eINSTANCE.createDynamicContainmentItem();
150:                 pi.setComposite((VContainedElement) EcoreUtil.copy(renderable));
151:                 pi.setDomainModel(newValue);
152:                 pi.setBaseItemIndex(((TestElementContainer) virtualParent).getTestElements().indexOf(newValue));
153:                 // resolveDomainReferences(pi, newValue);
154:                 if (DynamicContainmentItem.class.isInstance(viewModelParent)) {
155:                         final DynamicContainmentItem parent = (DynamicContainmentItem) viewModelParent;
156:                         parent.getItems().add(pi);
157:                 } else {
158:                         tree.getItems().add(pi);
159:                 }
160:                 // final Node<?> n = NodeBuilders.INSTANCE.build(pi, childContext);
161:
162:                 // virtualParentNode.addChild(n);
163:                 // n.setLabelObject(newValue);
164:                 // n.setActions(actions);
165:
166:                 // return n;
167:                 return pi;
168:         }
169:
170:         /**
171:          * {@inheritDoc}
172:          *
173:          * @see org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest#createDomainObject()
174:          */
175:         @Override
176:         public EObject createDomainObject() {
177:                 final DomainRoot root = ModelFactory.eINSTANCE.createDomainRoot();
178:                 final DomainIntermediate intermediate = ModelFactory.eINSTANCE.createDomainIntermediate();
179:                 root.setIntermediate(intermediate);
180:
181:                 final TestElementContainer elementContainer = ModelFactory.eINSTANCE.createTestElementContainer();
182:                 elementContainer.setId(ELEMENT_CONTAINER_ID);
183:                 intermediate.setTestElementContainer(elementContainer);
184:
185:                 final TestElement testElement = ModelFactory.eINSTANCE.createTestElement();
186:                 testElement.setId(ELEMENT_ID);
187:                 testElement.setName(TEST_ELEMENT_NAME);
188:                 testElement.setParentId(ELEMENT_CONTAINER_ID);
189:                 elementContainer.getTestElements().add(testElement);
190:                 return root;
191:         }
192:
193:         /**
194:          * {@inheritDoc}
195:          *
196:          * @see org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest#logic()
197:          */
198:         @Override
199:         public void logic() {
200:
201:                 // final Node<?> childNodenode2 = getViewNode().getChildren().get(0).getChildren().get(0);
202:                 // node = (Node<DynamicContainmentTree>) childNodenode2.getChildren().get(0);
203:
204:                 final String id = "123";
205:                 UIThreadRunnable.syncExec(new VoidResult() {
206:                         @Override
207:                         public void run() {
208:                                 addItem(id, tree, tree.getDomainModel());
209:                         }
210:                 });
211:
212:                 final Object labelObjectOfLastChild = tree.getItems().get(tree.getItems().size() - 1).getDomainModel();
213:                 assertTrue(TestElement.class.isInstance(labelObjectOfLastChild));
214:
215:                 final TestElement testElement = (TestElement) labelObjectOfLastChild;
216:
217:                 UIThreadRunnable.syncExec(new VoidResult() {
218:
219:                         @Override
220:                         public void run() {
221:                                 // causes UI update
222:                                 testElement.setName(TEST_ELEMENT_NAME_2);
223:                                 bot.tree().getAllItems()[0].getItems()[0].expand();
224:                                 final SWTBotTreeItem swtBotTreeItem = bot.tree().getAllItems()[0].getItems()[0].getItems()[0];
225:                                 bot.tree().select(swtBotTreeItem);
226:                                 assertEquals("foo", bot.text().getText());
227:
228:                                 bot.tree().getAllItems()[0].getItems()[0].getItems()[1].select();
229:                                 assertEquals("bar", bot.text().getText());
230:                         }
231:                 });
232:
233:         }
234: }