Skip to content

Package: ControlGenerator_PTest

ControlGenerator_PTest

nameinstructionbranchcomplexitylinemethod
ControlGenerator_PTest()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
addControls_segments_WithBottomUpPath()
M: 0 C: 49
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
addControls_segments_WithContainer()
M: 0 C: 47
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
addControls_segments_WithNonViewOrContainer()
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
addControls_segments_WithView()
M: 0 C: 43
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
assertControl(VContainedElement, EClass, EStructuralFeature)
M: 0 C: 53
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 15
100%
M: 0 C: 1
100%
assertSegmentControl(VContainedElement, EClass, EStructuralFeature)
M: 1 C: 94
99%
M: 1 C: 3
75%
M: 1 C: 2
67%
M: 0 C: 23
100%
M: 0 C: 1
100%
before()
M: 0 C: 32
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 7
100%
M: 0 C: 1
100%
testAddControlsWithBottomUpPath()
M: 0 C: 49
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
testAddControlsWithContainer()
M: 0 C: 47
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
testAddControlsWithNonViewOrContainer()
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
testAddControlsWithView()
M: 0 C: 43
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
testGenerateAllControls()
M: 0 C: 92
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 21
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2014 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: * Johannes Faltermeier - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.view.internal.editor.handler;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.junit.Assert.assertFalse;
18: import static org.junit.Assert.assertNotNull;
19: import static org.junit.Assert.assertSame;
20: import static org.junit.Assert.assertTrue;
21:
22: import java.io.File;
23: import java.io.IOException;
24: import java.util.Iterator;
25: import java.util.LinkedHashSet;
26: import java.util.Set;
27:
28: import org.eclipse.emf.common.util.EList;
29: import org.eclipse.emf.common.util.URI;
30: import org.eclipse.emf.ecore.EClass;
31: import org.eclipse.emf.ecore.EReference;
32: import org.eclipse.emf.ecore.EStructuralFeature;
33: import org.eclipse.emf.ecore.resource.Resource;
34: import org.eclipse.emf.ecore.resource.ResourceSet;
35: import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
36: import org.eclipse.emf.ecp.view.spi.group.model.VGroup;
37: import org.eclipse.emf.ecp.view.spi.group.model.VGroupFactory;
38: import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
39: import org.eclipse.emf.ecp.view.spi.model.VControl;
40: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReferenceSegment;
41: import org.eclipse.emf.ecp.view.spi.model.VElement;
42: import org.eclipse.emf.ecp.view.spi.model.VFeatureDomainModelReferenceSegment;
43: import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
44: import org.eclipse.emf.ecp.view.spi.model.VView;
45: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
46: import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
47: import org.eclipse.emf.emfstore.bowling.BowlingPackage;
48: import org.junit.Before;
49: import org.junit.Test;
50:
51: public class ControlGenerator_PTest {
52:
53:         private EClass rootEClass;
54:         private VElement elementToFill;
55:         private Set<EStructuralFeature> features;
56:
57:         @Before
58:         public void before() {
59:                 rootEClass = BowlingPackage.eINSTANCE.getFan();
60:                 elementToFill = VViewFactory.eINSTANCE.createView();
61:                 features = new LinkedHashSet<EStructuralFeature>();
62:                 features.add(BowlingPackage.eINSTANCE.getFan_Name());
63:                 features.add(BowlingPackage.eINSTANCE.getFan_Gender());
64:                 features.add(BowlingPackage.eINSTANCE.getFan_FavouriteMerchandise());
65:         }
66:
67:         @Test
68:         public void testAddControlsWithNonViewOrContainer() {
69:                 // setup
70:                 elementToFill = VViewFactory.eINSTANCE.createControl();
71:                 // act
72:                 ControlGenerator.addControls(rootEClass, elementToFill, features, false);
73:                 // assert no exceptions
74:         }
75:
76:         @Test
77:         public void testAddControlsWithView() {
78:                 // setup
79:                 final VView view = (VView) elementToFill;
80:                 // act
81:                 ControlGenerator.addControls(rootEClass, view, features, false);
82:                 // assert
83:                 assertEquals(features.size(), view.getChildren().size());
84:                 int i = 0;
85:                 final Iterator<EStructuralFeature> iterator = features.iterator();
86:•                while (iterator.hasNext()) {
87:                         assertControl(view.getChildren().get(i++), rootEClass, iterator.next());
88:                 }
89:         }
90:
91:         @Test
92:         public void testAddControlsWithContainer() {
93:                 // setup
94:                 elementToFill = VGroupFactory.eINSTANCE.createGroup();
95:                 final VGroup group = (VGroup) elementToFill;
96:                 // act
97:                 ControlGenerator.addControls(rootEClass, group, features, false);
98:                 // assert
99:                 assertEquals(features.size(), group.getChildren().size());
100:                 int i = 0;
101:                 final Iterator<EStructuralFeature> iterator = features.iterator();
102:•                while (iterator.hasNext()) {
103:                         assertControl(group.getChildren().get(i++), rootEClass, iterator.next());
104:                 }
105:         }
106:
107:         @Test
108:         public void testAddControlsWithBottomUpPath() {
109:                 // setup
110:                 final VView view = (VView) elementToFill;
111:                 features.add(BowlingPackage.eINSTANCE.getMerchandise_Name());
112:                 // act
113:                 ControlGenerator.addControls(rootEClass, view, features, false);
114:                 // assert
115:                 assertEquals(features.size(), view.getChildren().size());
116:                 int i = 0;
117:                 final Iterator<EStructuralFeature> iterator = features.iterator();
118:•                while (iterator.hasNext()) {
119:                         assertControl(view.getChildren().get(i++), rootEClass, iterator.next());
120:                 }
121:         }
122:
123:         @Test
124:         public void addControls_segments_WithNonViewOrContainer() {
125:                 // setup
126:                 elementToFill = VViewFactory.eINSTANCE.createControl();
127:                 // act
128:                 ControlGenerator.addControls(rootEClass, elementToFill, features, true);
129:                 // assert no exceptions
130:         }
131:
132:         @Test
133:         public void addControls_segments_WithView() {
134:                 // setup
135:                 final VView view = (VView) elementToFill;
136:                 // act
137:                 ControlGenerator.addControls(rootEClass, view, features, true);
138:                 // assert
139:                 assertEquals(features.size(), view.getChildren().size());
140:                 int i = 0;
141:                 final Iterator<EStructuralFeature> iterator = features.iterator();
142:•                while (iterator.hasNext()) {
143:                         assertSegmentControl(view.getChildren().get(i++), rootEClass, iterator.next());
144:                 }
145:         }
146:
147:         @Test
148:         public void addControls_segments_WithContainer() {
149:                 // setup
150:                 elementToFill = VGroupFactory.eINSTANCE.createGroup();
151:                 final VGroup group = (VGroup) elementToFill;
152:                 // act
153:                 ControlGenerator.addControls(rootEClass, group, features, true);
154:                 // assert
155:                 assertEquals(features.size(), group.getChildren().size());
156:                 int i = 0;
157:                 final Iterator<EStructuralFeature> iterator = features.iterator();
158:•                while (iterator.hasNext()) {
159:                         assertSegmentControl(group.getChildren().get(i++), rootEClass, iterator.next());
160:                 }
161:         }
162:
163:         @Test
164:         public void addControls_segments_WithBottomUpPath() {
165:                 // setup
166:                 final VView view = (VView) elementToFill;
167:                 features.add(BowlingPackage.eINSTANCE.getMerchandise_Name());
168:                 // act
169:                 ControlGenerator.addControls(rootEClass, view, features, true);
170:                 // assert
171:                 assertEquals(features.size(), view.getChildren().size());
172:                 int i = 0;
173:                 final Iterator<EStructuralFeature> iterator = features.iterator();
174:•                while (iterator.hasNext()) {
175:                         assertSegmentControl(view.getChildren().get(i++), rootEClass, iterator.next());
176:                 }
177:         }
178:
179:         @Test
180:         public void testGenerateAllControls() throws IOException {
181:                 // setup
182:                 VView view = (VView) elementToFill;
183:                 view.setRootEClass(rootEClass);
184:                 final File file = File.createTempFile("view", ".view");
185:                 final URI uri = URI.createFileURI(file.getAbsolutePath());
186:                 final ResourceSet resourceSet = new ResourceSetImpl();
187:                 final Resource resource = resourceSet.createResource(uri);
188:                 resource.getContents().add(view);
189:                 resource.save(null);
190:                 // act
191:                 ControlGenerator.generateAllControls(view);
192:                 // assert
193:                 final Resource resource2 = resourceSet.createResource(uri);
194:                 resource2.load(null);
195:                 view = (VView) resource2.getContents().get(0);
196:                 features.clear();
197:                 features.addAll(rootEClass.getEAllStructuralFeatures());
198:                 assertEquals(features.size(), view.getChildren().size());
199:                 int i = 0;
200:                 final Iterator<EStructuralFeature> iterator = features.iterator();
201:•                while (iterator.hasNext()) {
202:                         assertControl(view.getChildren().get(i++), rootEClass, iterator.next());
203:                 }
204:                 // clean up
205:                 file.delete();
206:         }
207:
208:         private static void assertControl(VContainedElement element, EClass eClass, EStructuralFeature feature) {
209:                 assertNotNull(element);
210:                 assertTrue(element instanceof VControl);
211:                 final VControl control = (VControl) element;
212:                 assertNotNull(control.getDomainModelReference());
213:                 assertTrue(control.getDomainModelReference() instanceof VFeaturePathDomainModelReference);
214:                 final VFeaturePathDomainModelReference reference = (VFeaturePathDomainModelReference) control
215:                         .getDomainModelReference();
216:                 assertEquals(feature, reference.getDomainModelEFeature());
217:
218:                 EClass currentEClass = eClass;
219:                 final EList<EReference> domainModelEReferencePath = reference.getDomainModelEReferencePath();
220:•                for (final EReference pathRef : domainModelEReferencePath) {
221:                         assertTrue(currentEClass.getEReferences().contains(pathRef));
222:                         currentEClass = pathRef.getEReferenceType();
223:                 }
224:                 assertTrue(currentEClass.getEStructuralFeatures().contains(feature));
225:         }
226:
227:         private static void assertSegmentControl(VContainedElement element, EClass eClass, EStructuralFeature feature) {
228:                 assertNotNull(element);
229:                 assertTrue(element instanceof VControl);
230:                 final VControl control = (VControl) element;
231:                 assertNotNull(control.getDomainModelReference());
232:•                assertTrue(control.getDomainModelReference().eClass() == VViewPackage.Literals.DOMAIN_MODEL_REFERENCE);
233:
234:                 final EList<VDomainModelReferenceSegment> segments = control.getDomainModelReference().getSegments();
235:                 assertFalse(segments.isEmpty());
236:
237:                 final VDomainModelReferenceSegment lastSegment = segments.get(segments.size() - 1);
238:                 assertSame(VViewPackage.Literals.FEATURE_DOMAIN_MODEL_REFERENCE_SEGMENT, lastSegment.eClass());
239:                 final String domainModelFeature = VFeatureDomainModelReferenceSegment.class.cast(lastSegment)
240:                         .getDomainModelFeature();
241:                 assertEquals(feature.getName(), domainModelFeature);
242:
243:                 EClass currentEClass = eClass;
244:•                for (int i = 0; i < segments.size() - 1; i++) {
245:                         assertSame(VViewPackage.Literals.FEATURE_DOMAIN_MODEL_REFERENCE_SEGMENT, segments.get(i).eClass());
246:                         final VFeatureDomainModelReferenceSegment segment = (VFeatureDomainModelReferenceSegment) segments.get(i);
247:
248:                         final EStructuralFeature structuralFeature = currentEClass
249:                                 .getEStructuralFeature(segment.getDomainModelFeature());
250:                         assertNotNull(structuralFeature);
251:                         assertTrue(structuralFeature instanceof EReference);
252:                         currentEClass = EReference.class.cast(structuralFeature).getEReferenceType();
253:                 }
254:                 assertTrue(currentEClass.getEStructuralFeatures().contains(feature));
255:         }
256: }