Skip to content

Package: DomainModelReferenceSelector_PTest

DomainModelReferenceSelector_PTest

nameinstructionbranchcomplexitylinemethod
DomainModelReferenceSelector_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%
isApplicable_segments_noRootEClass()
M: 0 C: 74
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 20
100%
M: 0 C: 1
100%
isApplicable_segments_sameRootEClass_differentDmr()
M: 0 C: 78
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
isApplicable_segments_sameRootEClass_equalDmr()
M: 0 C: 77
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
isApplicable_segments_subRootEClass()
M: 0 C: 78
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
isApplicable_segments_superRootEClass_differentDmr()
M: 0 C: 78
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
isApplicable_segments_superRootEClass_equalDmr()
M: 0 C: 77
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
isApplicable_segments_unrelatedRootEClass_equalDmr()
M: 0 C: 78
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
setup()
M: 0 C: 22
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
tearDown()
M: 0 C: 11
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
testControlDomainModelReferenceCorrect()
M: 0 C: 61
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
testControlDomainModelReferenceDifferentEFeatures()
M: 0 C: 60
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 20
100%
M: 0 C: 1
100%
testControlDomainModelReferenceDifferentEObjects()
M: 63 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 20 C: 0
0%
M: 1 C: 0
0%
testControlDomainModelReferenceLong()
M: 73 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 24 C: 0
0%
M: 1 C: 0
0%
testControlWithoutDomainModelReference()
M: 0 C: 18
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
testNotAControl()
M: 0 C: 16
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 5
100%
M: 0 C: 1
100%
testSelectorDomainModelReferenceNotResolvable()
M: 0 C: 39
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 15
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: * EclipseSource Muenchen - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.view.template.service;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.mockito.Mockito.mock;
18: import static org.mockito.Mockito.when;
19:
20: import java.util.LinkedHashSet;
21: import java.util.Set;
22:
23: import org.eclipse.emf.ecore.EClass;
24: import org.eclipse.emf.ecore.EDataType;
25: import org.eclipse.emf.ecore.EEnum;
26: import org.eclipse.emf.ecore.EObject;
27: import org.eclipse.emf.ecore.EPackage;
28: import org.eclipse.emf.ecore.EStructuralFeature.Setting;
29: import org.eclipse.emf.ecore.EcoreFactory;
30: import org.eclipse.emf.ecore.EcorePackage;
31: import org.eclipse.emf.ecore.InternalEObject;
32: import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
33: import org.eclipse.emf.ecp.view.spi.model.VControl;
34: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
35: import org.eclipse.emf.ecp.view.spi.model.VElement;
36: import org.eclipse.emf.ecp.view.spi.model.VFeatureDomainModelReferenceSegment;
37: import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
38: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
39: import org.eclipse.emf.ecp.view.template.model.VTStyleSelector;
40: import org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model.VTDomainModelReferenceSelector;
41: import org.eclipse.emf.ecp.view.template.selector.domainmodelreference.model.VTDomainmodelreferenceFactory;
42: import org.eclipse.emf.ecp.view.test.common.swt.spi.DatabindingClassRunner;
43: import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
44: import org.junit.After;
45: import org.junit.Before;
46: import org.junit.Ignore;
47: import org.junit.Test;
48: import org.junit.runner.RunWith;
49: import org.osgi.framework.BundleContext;
50: import org.osgi.framework.FrameworkUtil;
51: import org.osgi.framework.ServiceReference;
52:
53: @RunWith(DatabindingClassRunner.class)
54: public class DomainModelReferenceSelector_PTest {
55:
56:         private VTDomainModelReferenceSelector domainModelReferenceSelector;
57:         private ServiceReference<EMFFormsDatabinding> databindingServiceReference;
58:         private EMFFormsDatabinding databinding;
59:
60:         @Before
61:         public void setup() {
62:                 domainModelReferenceSelector = VTDomainmodelreferenceFactory.eINSTANCE
63:                         .createDomainModelReferenceSelector();
64:                 final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
65:                 databindingServiceReference = bundleContext.getServiceReference(EMFFormsDatabinding.class);
66:                 databinding = bundleContext.getService(databindingServiceReference);
67:         }
68:
69:         @After
70:         public void tearDown() {
71:                 final BundleContext bundleContext = FrameworkUtil.getBundle(getClass()).getBundleContext();
72:                 bundleContext.ungetService(databindingServiceReference);
73:         }
74:
75:         @Test
76:         public void testNotAControl() {
77:                 final double specificity = domainModelReferenceSelector.isApplicable(
78:                         mock(VElement.class), mock(ViewModelContext.class));
79:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity,
80:                         0d);
81:         }
82:
83:         @Test
84:         public void testControlWithoutDomainModelReference() {
85:                 final VControl vControl = mock(VControl.class);
86:
87:                 final double specificity = domainModelReferenceSelector.isApplicable(
88:                         vControl, mock(ViewModelContext.class));
89:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity,
90:                         0d);
91:         }
92:
93:         @Test
94:         public void testSelectorDomainModelReferenceNotResolvable() {
95:                 final VFeaturePathDomainModelReference selectorDomainModelReference = VViewFactory.eINSTANCE
96:                         .createFeaturePathDomainModelReference();
97:                 selectorDomainModelReference
98:                         .setDomainModelEFeature(EcorePackage.eINSTANCE
99:                                 .getENamedElement_Name());
100:                 domainModelReferenceSelector
101:                         .setDomainModelReference(selectorDomainModelReference);
102:
103:                 final VControl vControl = mock(VControl.class);
104:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
105:                 when(viewModelContext.getDomainModel()).thenReturn(mock(EObject.class));
106:                 final double specificity = domainModelReferenceSelector.isApplicable(
107:                         vControl, viewModelContext);
108:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity,
109:                         0d);
110:         }
111:
112:         @Test
113:         public void testControlDomainModelReferenceDifferentEFeatures() {
114:                 final VFeaturePathDomainModelReference selectorDomainModelReference = VViewFactory.eINSTANCE
115:                         .createFeaturePathDomainModelReference();
116:                 selectorDomainModelReference
117:                         .setDomainModelEFeature(EcorePackage.eINSTANCE
118:                                 .getENamedElement_Name());
119:                 domainModelReferenceSelector
120:                         .setDomainModelReference(selectorDomainModelReference);
121:
122:                 final VControl vControl = mock(VControl.class);
123:                 final VFeaturePathDomainModelReference controlDomainModelReference = VViewFactory.eINSTANCE
124:                         .createFeaturePathDomainModelReference();
125:                 when(vControl.getDomainModelReference()).thenReturn(controlDomainModelReference);
126:                 controlDomainModelReference.setDomainModelEFeature(EcorePackage.eINSTANCE.getEClass_Abstract());
127:
128:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
129:                 when(viewModelContext.getDomainModel()).thenReturn(EcoreFactory.eINSTANCE.createEClass());
130:                 when(viewModelContext.getService(EMFFormsDatabinding.class)).thenReturn(databinding);
131:
132:                 final double specificity = domainModelReferenceSelector.isApplicable(
133:                         vControl, viewModelContext);
134:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity,
135:                         0d);
136:         }
137:
138:         @Ignore
139:         @Test
140:         public void testControlDomainModelReferenceLong() {
141:                 final VFeaturePathDomainModelReference selectorDomainModelReference = VViewFactory.eINSTANCE
142:                         .createFeaturePathDomainModelReference();
143:                 selectorDomainModelReference
144:                         .setDomainModelEFeature(EcorePackage.eINSTANCE
145:                                 .getENamedElement_Name());
146:                 domainModelReferenceSelector
147:                         .setDomainModelReference(selectorDomainModelReference);
148:
149:                 final VControl vControl = mock(VControl.class);
150:                 final VFeaturePathDomainModelReference controlDomainModelReference = VViewFactory.eINSTANCE
151:                         .createFeaturePathDomainModelReference();
152:                 when(vControl.getDomainModelReference()).thenReturn(controlDomainModelReference);
153:                 final Set<Setting> settings = new LinkedHashSet<Setting>();
154:                 final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
155:                 settings.add(InternalEObject.class.cast(eClass).eSetting(EcorePackage.eINSTANCE
156:                         .getENamedElement_Name()));
157:                 settings.add(InternalEObject.class.cast(eClass).eSetting(EcorePackage.eINSTANCE
158:                         .getEClass_Abstract()));
159:
160:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
161:                 when(viewModelContext.getDomainModel()).thenReturn(eClass);
162:
163:                 final double specificity = domainModelReferenceSelector.isApplicable(
164:                         vControl, viewModelContext);
165:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity,
166:                         0d);
167:         }
168:
169:         @Test
170:         public void testControlDomainModelReferenceCorrect() {
171:                 final VFeaturePathDomainModelReference selectorDomainModelReference = VViewFactory.eINSTANCE
172:                         .createFeaturePathDomainModelReference();
173:                 selectorDomainModelReference
174:                         .setDomainModelEFeature(EcorePackage.eINSTANCE
175:                                 .getENamedElement_Name());
176:                 domainModelReferenceSelector
177:                         .setDomainModelReference(selectorDomainModelReference);
178:
179:                 final VControl vControl = mock(VControl.class);
180:                 final VFeaturePathDomainModelReference controlDomainModelReference = VViewFactory.eINSTANCE
181:                         .createFeaturePathDomainModelReference();
182:                 when(vControl.getDomainModelReference()).thenReturn(controlDomainModelReference);
183:                 controlDomainModelReference.setDomainModelEFeature(EcorePackage.eINSTANCE.getENamedElement_Name());
184:
185:                 final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
186:
187:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
188:                 when(viewModelContext.getDomainModel()).thenReturn(eClass);
189:                 when(viewModelContext.getService(EMFFormsDatabinding.class)).thenReturn(databinding);
190:
191:                 final double specificity = domainModelReferenceSelector.isApplicable(
192:                         vControl, viewModelContext);
193:                 assertEquals(10d, specificity,
194:                         0d);
195:         }
196:
197:         @Ignore
198:         @Test
199:         public void testControlDomainModelReferenceDifferentEObjects() {
200:                 final VFeaturePathDomainModelReference selectorDomainModelReference = VViewFactory.eINSTANCE
201:                         .createFeaturePathDomainModelReference();
202:                 selectorDomainModelReference
203:                         .setDomainModelEFeature(EcorePackage.eINSTANCE
204:                                 .getENamedElement_Name());
205:                 domainModelReferenceSelector
206:                         .setDomainModelReference(selectorDomainModelReference);
207:
208:                 final VControl vControl = mock(VControl.class);
209:                 final VDomainModelReference controlDomainModelReference = mock(VDomainModelReference.class);
210:                 when(vControl.getDomainModelReference()).thenReturn(controlDomainModelReference);
211:                 final Set<Setting> settings = new LinkedHashSet<Setting>();
212:
213:                 settings.add(InternalEObject.class.cast(EcoreFactory.eINSTANCE.createEClass()).eSetting(EcorePackage.eINSTANCE
214:                         .getENamedElement_Name()));
215:
216:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
217:                 when(viewModelContext.getDomainModel()).thenReturn(EcoreFactory.eINSTANCE.createEClass());
218:
219:                 final double specificity = domainModelReferenceSelector.isApplicable(
220:                         vControl, viewModelContext);
221:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity,
222:                         0d);
223:         }
224:
225:         /** selector EClass matches the domain object's EClass. */
226:         @Test
227:         public void isApplicable_segments_sameRootEClass_equalDmr() {
228:                 final VDomainModelReference selectorDmr = VViewFactory.eINSTANCE.createDomainModelReference();
229:                 final VFeatureDomainModelReferenceSegment selectorSegment = VViewFactory.eINSTANCE
230:                         .createFeatureDomainModelReferenceSegment();
231:                 selectorSegment.setDomainModelFeature(EcorePackage.Literals.ECLASS__ABSTRACT.getName());
232:                 selectorDmr.getSegments().add(selectorSegment);
233:                 domainModelReferenceSelector.setDomainModelReference(selectorDmr);
234:                 domainModelReferenceSelector.setRootEClass(EcorePackage.Literals.ECLASS);
235:
236:                 final VControl vControl = VViewFactory.eINSTANCE.createControl();
237:                 final VDomainModelReference controlDmr = VViewFactory.eINSTANCE.createDomainModelReference();
238:                 final VFeatureDomainModelReferenceSegment controlSegment = VViewFactory.eINSTANCE
239:                         .createFeatureDomainModelReferenceSegment();
240:                 controlSegment.setDomainModelFeature(EcorePackage.Literals.ECLASS__ABSTRACT.getName());
241:                 controlDmr.getSegments().add(controlSegment);
242:                 vControl.setDomainModelReference(controlDmr);
243:
244:                 final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
245:
246:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
247:                 when(viewModelContext.getDomainModel()).thenReturn(eClass);
248:                 when(viewModelContext.getService(EMFFormsDatabinding.class)).thenReturn(databinding);
249:
250:                 final double specificity = domainModelReferenceSelector.isApplicable(vControl, viewModelContext);
251:                 assertEquals(10d, specificity, 0d);
252:         }
253:
254:         /** selector EClass matches the domain object's EClass. */
255:         @Test
256:         public void isApplicable_segments_sameRootEClass_differentDmr() {
257:                 final VDomainModelReference selectorDmr = VViewFactory.eINSTANCE.createDomainModelReference();
258:                 final VFeatureDomainModelReferenceSegment selectorSegment = VViewFactory.eINSTANCE
259:                         .createFeatureDomainModelReferenceSegment();
260:                 selectorSegment.setDomainModelFeature(EcorePackage.Literals.ECLASS__ABSTRACT.getName());
261:                 selectorDmr.getSegments().add(selectorSegment);
262:                 domainModelReferenceSelector.setDomainModelReference(selectorDmr);
263:                 domainModelReferenceSelector.setRootEClass(EcorePackage.Literals.ECLASS);
264:
265:                 final VControl vControl = VViewFactory.eINSTANCE.createControl();
266:                 final VDomainModelReference controlDmr = VViewFactory.eINSTANCE.createDomainModelReference();
267:                 final VFeatureDomainModelReferenceSegment controlSegment = VViewFactory.eINSTANCE
268:                         .createFeatureDomainModelReferenceSegment();
269:                 controlSegment.setDomainModelFeature(EcorePackage.Literals.ECLASS__INTERFACE.getName());
270:                 controlDmr.getSegments().add(controlSegment);
271:                 vControl.setDomainModelReference(controlDmr);
272:
273:                 final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
274:
275:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
276:                 when(viewModelContext.getDomainModel()).thenReturn(eClass);
277:                 when(viewModelContext.getService(EMFFormsDatabinding.class)).thenReturn(databinding);
278:
279:                 final double specificity = domainModelReferenceSelector.isApplicable(vControl, viewModelContext);
280:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity, 0d);
281:         }
282:
283:         /** selector EClass is a super type of the domain object's EClass. */
284:         @Test
285:         public void isApplicable_segments_superRootEClass_equalDmr() {
286:                 final VDomainModelReference selectorDmr = VViewFactory.eINSTANCE.createDomainModelReference();
287:                 final VFeatureDomainModelReferenceSegment selectorSegment = VViewFactory.eINSTANCE
288:                         .createFeatureDomainModelReferenceSegment();
289:                 selectorSegment.setDomainModelFeature(EcorePackage.Literals.EDATA_TYPE__SERIALIZABLE.getName());
290:                 selectorDmr.getSegments().add(selectorSegment);
291:                 domainModelReferenceSelector.setDomainModelReference(selectorDmr);
292:                 domainModelReferenceSelector.setRootEClass(EcorePackage.Literals.EDATA_TYPE);
293:
294:                 final VControl vControl = VViewFactory.eINSTANCE.createControl();
295:                 final VDomainModelReference controlDmr = VViewFactory.eINSTANCE.createDomainModelReference();
296:                 final VFeatureDomainModelReferenceSegment controlSegment = VViewFactory.eINSTANCE
297:                         .createFeatureDomainModelReferenceSegment();
298:                 controlSegment.setDomainModelFeature(EcorePackage.Literals.EDATA_TYPE__SERIALIZABLE.getName());
299:                 controlDmr.getSegments().add(controlSegment);
300:                 vControl.setDomainModelReference(controlDmr);
301:
302:                 final EEnum eEnum = EcoreFactory.eINSTANCE.createEEnum();
303:
304:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
305:                 when(viewModelContext.getDomainModel()).thenReturn(eEnum);
306:                 when(viewModelContext.getService(EMFFormsDatabinding.class)).thenReturn(databinding);
307:
308:                 final double specificity = domainModelReferenceSelector.isApplicable(vControl, viewModelContext);
309:                 assertEquals(10d, specificity, 0d);
310:         }
311:
312:         /** selector EClass is a super type of the domain object's EClass. */
313:         @Test
314:         public void isApplicable_segments_superRootEClass_differentDmr() {
315:                 final VDomainModelReference selectorDmr = VViewFactory.eINSTANCE.createDomainModelReference();
316:                 final VFeatureDomainModelReferenceSegment selectorSegment = VViewFactory.eINSTANCE
317:                         .createFeatureDomainModelReferenceSegment();
318:                 selectorSegment.setDomainModelFeature(EcorePackage.Literals.EDATA_TYPE__SERIALIZABLE.getName());
319:                 selectorDmr.getSegments().add(selectorSegment);
320:                 domainModelReferenceSelector.setDomainModelReference(selectorDmr);
321:                 domainModelReferenceSelector.setRootEClass(EcorePackage.Literals.EDATA_TYPE);
322:
323:                 final VControl vControl = VViewFactory.eINSTANCE.createControl();
324:                 final VDomainModelReference controlDmr = VViewFactory.eINSTANCE.createDomainModelReference();
325:                 final VFeatureDomainModelReferenceSegment controlSegment = VViewFactory.eINSTANCE
326:                         .createFeatureDomainModelReferenceSegment();
327:                 controlSegment.setDomainModelFeature(EcorePackage.Literals.EENUM__ELITERALS.getName());
328:                 controlDmr.getSegments().add(controlSegment);
329:                 vControl.setDomainModelReference(controlDmr);
330:
331:                 final EEnum eEnum = EcoreFactory.eINSTANCE.createEEnum();
332:
333:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
334:                 when(viewModelContext.getDomainModel()).thenReturn(eEnum);
335:                 when(viewModelContext.getService(EMFFormsDatabinding.class)).thenReturn(databinding);
336:
337:                 final double specificity = domainModelReferenceSelector.isApplicable(vControl, viewModelContext);
338:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity, 0d);
339:         }
340:
341:         /**
342:          * If the root EClass of the selector is a sub class of the domain object's EClass, the selector is not applicable.
343:          */
344:         @Test
345:         public void isApplicable_segments_subRootEClass() {
346:                 final VDomainModelReference selectorDmr = VViewFactory.eINSTANCE.createDomainModelReference();
347:                 final VFeatureDomainModelReferenceSegment selectorSegment = VViewFactory.eINSTANCE
348:                         .createFeatureDomainModelReferenceSegment();
349:                 selectorSegment.setDomainModelFeature(EcorePackage.Literals.ENAMED_ELEMENT__NAME.getName());
350:                 selectorDmr.getSegments().add(selectorSegment);
351:                 domainModelReferenceSelector.setDomainModelReference(selectorDmr);
352:                 domainModelReferenceSelector.setRootEClass(EcorePackage.Literals.EENUM);
353:
354:                 final VControl vControl = VViewFactory.eINSTANCE.createControl();
355:                 final VDomainModelReference controlDmr = VViewFactory.eINSTANCE.createDomainModelReference();
356:                 final VFeatureDomainModelReferenceSegment controlSegment = VViewFactory.eINSTANCE
357:                         .createFeatureDomainModelReferenceSegment();
358:                 controlSegment.setDomainModelFeature(EcorePackage.Literals.ENAMED_ELEMENT__NAME.getName());
359:                 controlDmr.getSegments().add(controlSegment);
360:                 vControl.setDomainModelReference(controlDmr);
361:
362:                 final EDataType eDataType = EcoreFactory.eINSTANCE.createEDataType();
363:
364:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
365:                 when(viewModelContext.getDomainModel()).thenReturn(eDataType);
366:                 when(viewModelContext.getService(EMFFormsDatabinding.class)).thenReturn(databinding);
367:
368:                 final double specificity = domainModelReferenceSelector.isApplicable(vControl, viewModelContext);
369:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity, 0d);
370:         }
371:
372:         @Test
373:         public void isApplicable_segments_noRootEClass() {
374:                 final VDomainModelReference selectorDmr = VViewFactory.eINSTANCE.createDomainModelReference();
375:                 final VFeatureDomainModelReferenceSegment selectorSegment = VViewFactory.eINSTANCE
376:                         .createFeatureDomainModelReferenceSegment();
377:                 selectorSegment.setDomainModelFeature(EcorePackage.Literals.ENAMED_ELEMENT__NAME.getName());
378:                 selectorDmr.getSegments().add(selectorSegment);
379:                 domainModelReferenceSelector.setDomainModelReference(selectorDmr);
380:
381:                 final VControl vControl = VViewFactory.eINSTANCE.createControl();
382:                 final VDomainModelReference controlDmr = VViewFactory.eINSTANCE.createDomainModelReference();
383:                 final VFeatureDomainModelReferenceSegment controlSegment = VViewFactory.eINSTANCE
384:                         .createFeatureDomainModelReferenceSegment();
385:                 controlSegment.setDomainModelFeature(EcorePackage.Literals.ENAMED_ELEMENT__NAME.getName());
386:                 controlDmr.getSegments().add(controlSegment);
387:                 vControl.setDomainModelReference(controlDmr);
388:
389:                 final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
390:
391:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
392:                 when(viewModelContext.getDomainModel()).thenReturn(eClass);
393:                 when(viewModelContext.getService(EMFFormsDatabinding.class)).thenReturn(databinding);
394:
395:                 final double specificity = domainModelReferenceSelector.isApplicable(vControl, viewModelContext);
396:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity, 0d);
397:         }
398:
399:         @Test
400:         public void isApplicable_segments_unrelatedRootEClass_equalDmr() {
401:                 final VDomainModelReference selectorDmr = VViewFactory.eINSTANCE.createDomainModelReference();
402:                 final VFeatureDomainModelReferenceSegment selectorSegment = VViewFactory.eINSTANCE
403:                         .createFeatureDomainModelReferenceSegment();
404:                 selectorSegment.setDomainModelFeature(EcorePackage.Literals.ENAMED_ELEMENT__NAME.getName());
405:                 selectorDmr.getSegments().add(selectorSegment);
406:                 domainModelReferenceSelector.setDomainModelReference(selectorDmr);
407:                 domainModelReferenceSelector.setRootEClass(EcorePackage.Literals.ECLASS);
408:
409:                 final VControl vControl = VViewFactory.eINSTANCE.createControl();
410:                 final VDomainModelReference controlDmr = VViewFactory.eINSTANCE.createDomainModelReference();
411:                 final VFeatureDomainModelReferenceSegment controlSegment = VViewFactory.eINSTANCE
412:                         .createFeatureDomainModelReferenceSegment();
413:                 controlSegment.setDomainModelFeature(EcorePackage.Literals.ENAMED_ELEMENT__NAME.getName());
414:                 controlDmr.getSegments().add(controlSegment);
415:                 vControl.setDomainModelReference(controlDmr);
416:
417:                 final EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage();
418:
419:                 final ViewModelContext viewModelContext = mock(ViewModelContext.class);
420:                 when(viewModelContext.getDomainModel()).thenReturn(ePackage);
421:                 when(viewModelContext.getService(EMFFormsDatabinding.class)).thenReturn(databinding);
422:
423:                 final double specificity = domainModelReferenceSelector.isApplicable(vControl, viewModelContext);
424:                 assertEquals(VTStyleSelector.NOT_APPLICABLE.doubleValue(), specificity, 0d);
425:         }
426: }