Skip to content

Package: LinkOnlyMultiReferenceRendererService_Test

LinkOnlyMultiReferenceRendererService_Test

nameinstructionbranchcomplexitylinemethod
LinkOnlyMultiReferenceRendererService_Test()
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%
setUp()
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
testGetRendererClass()
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
testIsApplicableCorrectAnnotation()
M: 0 C: 81
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 18
100%
M: 0 C: 1
100%
testIsApplicableDatabindingException()
M: 0 C: 80
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testIsApplicableForEmptyControl()
M: 0 C: 10
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
testIsApplicableForView()
M: 0 C: 10
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
testIsApplicableIncorrectAnnotation()
M: 0 C: 81
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 18
100%
M: 0 C: 1
100%
testIsApplicableMultiAttribute()
M: 0 C: 70
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 15
100%
M: 0 C: 1
100%
testIsApplicableNoAnnotation()
M: 0 C: 70
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 15
100%
M: 0 C: 1
100%
testIsApplicableSingleReferenceWithCorrectAnnotation()
M: 0 C: 81
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 18
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2018 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: * Lucas Koehler - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.view.internal.control.multireference;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.junit.Assert.assertSame;
18: import static org.mockito.Matchers.any;
19: import static org.mockito.Mockito.inOrder;
20: import static org.mockito.Mockito.mock;
21: import static org.mockito.Mockito.times;
22: import static org.mockito.Mockito.when;
23:
24: import org.eclipse.core.databinding.property.value.IValueProperty;
25: import org.eclipse.emf.ecore.EAttribute;
26: import org.eclipse.emf.ecore.EObject;
27: import org.eclipse.emf.ecore.EReference;
28: import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
29: import org.eclipse.emf.ecp.view.spi.model.VControl;
30: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
31: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
32: import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotation;
33: import org.eclipse.emf.emfforms.spi.view.annotation.model.VAnnotationFactory;
34: import org.eclipse.emfforms.spi.common.report.AbstractReport;
35: import org.eclipse.emfforms.spi.common.report.ReportService;
36: import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
37: import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
38: import org.eclipse.emfforms.spi.swt.core.di.EMFFormsDIRendererService;
39: import org.junit.Before;
40: import org.junit.Test;
41:
42: /**
43: * Unit tests for {@link LinkOnlyMultiReferenceRendererService}.
44: *
45: * @author Lucas Koehler
46: *
47: */
48: public class LinkOnlyMultiReferenceRendererService_Test {
49:
50:         private LinkOnlyMultiReferenceRendererService service;
51:
52:         @Before
53:         public void setUp() {
54:                 service = new LinkOnlyMultiReferenceRendererService();
55:         }
56:
57:         @Test
58:         public void testIsApplicableForView() {
59:                 assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE,
60:                         service.isApplicable(VViewFactory.eINSTANCE.createView(), null), 0);
61:         }
62:
63:         @Test
64:         public void testIsApplicableForEmptyControl() {
65:                 assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE,
66:                         service.isApplicable(VViewFactory.eINSTANCE.createControl(), null), 0);
67:         }
68:
69:         // TODO
70:         @Test
71:         public void testIsApplicableDatabindingException() throws DatabindingFailedException {
72:                 final VControl control = VViewFactory.eINSTANCE.createControl();
73:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
74:                 control.setDomainModelReference(dmr);
75:                 final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
76:                 final ReportService reportService = mock(ReportService.class);
77:                 service.setEMFFormsDatabinding(databinding);
78:                 service.setReportService(reportService);
79:                 final ViewModelContext vmc = mock(ViewModelContext.class);
80:                 final EObject domainModel = mock(EObject.class);
81:                 when(vmc.getDomainModel()).thenReturn(domainModel);
82:                 when(databinding.getValueProperty(dmr, domainModel)).thenThrow(new DatabindingFailedException("Test Error")); //$NON-NLS-1$
83:                 assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
84:                 inOrder(reportService).verify(reportService, times(1)).report(any(AbstractReport.class));
85:         }
86:
87:         @Test
88:         public void testIsApplicableMultiAttribute() throws DatabindingFailedException {
89:                 final VControl control = VViewFactory.eINSTANCE.createControl();
90:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
91:                 control.setDomainModelReference(dmr);
92:                 final EAttribute attribute = mock(EAttribute.class);
93:                 when(attribute.isMany()).thenReturn(true);
94:                 final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
95:                 service.setEMFFormsDatabinding(databinding);
96:                 final ViewModelContext vmc = mock(ViewModelContext.class);
97:                 final EObject domainModel = mock(EObject.class);
98:                 when(vmc.getDomainModel()).thenReturn(domainModel);
99:                 final IValueProperty property = mock(IValueProperty.class);
100:                 when(property.getValueType()).thenReturn(attribute);
101:                 when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
102:                 assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
103:         }
104:
105:         // TODO no annotation
106:         @Test
107:         public void testIsApplicableNoAnnotation() throws DatabindingFailedException {
108:                 final VControl control = VViewFactory.eINSTANCE.createControl();
109:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
110:                 control.setDomainModelReference(dmr);
111:
112:                 final EReference reference = mock(EReference.class);
113:                 when(reference.isMany()).thenReturn(true);
114:
115:                 final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
116:                 service.setEMFFormsDatabinding(databinding);
117:                 final ViewModelContext vmc = mock(ViewModelContext.class);
118:                 final EObject domainModel = mock(EObject.class);
119:                 when(vmc.getDomainModel()).thenReturn(domainModel);
120:                 final IValueProperty property = mock(IValueProperty.class);
121:                 when(property.getValueType()).thenReturn(reference);
122:                 when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
123:                 assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
124:         }
125:
126:         @Test
127:         public void testIsApplicableIncorrectAnnotation() throws DatabindingFailedException {
128:                 final VControl control = VViewFactory.eINSTANCE.createControl();
129:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
130:                 control.setDomainModelReference(dmr);
131:                 final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
132:                 annotation.setKey("incorrect"); //$NON-NLS-1$
133:                 control.getAttachments().add(annotation);
134:
135:                 final EReference reference = mock(EReference.class);
136:                 when(reference.isMany()).thenReturn(true);
137:
138:                 final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
139:                 service.setEMFFormsDatabinding(databinding);
140:                 final ViewModelContext vmc = mock(ViewModelContext.class);
141:                 final EObject domainModel = mock(EObject.class);
142:                 when(vmc.getDomainModel()).thenReturn(domainModel);
143:                 final IValueProperty property = mock(IValueProperty.class);
144:                 when(property.getValueType()).thenReturn(reference);
145:                 when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
146:                 assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
147:         }
148:
149:         @Test
150:         public void testIsApplicableCorrectAnnotation() throws DatabindingFailedException {
151:                 final VControl control = VViewFactory.eINSTANCE.createControl();
152:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
153:                 control.setDomainModelReference(dmr);
154:                 final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
155:                 annotation.setKey(LinkOnlyMultiReferenceRendererService.ANNOTATION_KEY);
156:                 control.getAttachments().add(annotation);
157:
158:                 final EReference reference = mock(EReference.class);
159:                 when(reference.isMany()).thenReturn(true);
160:
161:                 final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
162:                 service.setEMFFormsDatabinding(databinding);
163:                 final ViewModelContext vmc = mock(ViewModelContext.class);
164:                 final EObject domainModel = mock(EObject.class);
165:                 when(vmc.getDomainModel()).thenReturn(domainModel);
166:                 final IValueProperty property = mock(IValueProperty.class);
167:                 when(property.getValueType()).thenReturn(reference);
168:                 when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
169:                 assertEquals(6, service.isApplicable(control, vmc), 0);
170:         }
171:
172:         @Test
173:         public void testIsApplicableSingleReferenceWithCorrectAnnotation() throws DatabindingFailedException {
174:                 final VControl control = VViewFactory.eINSTANCE.createControl();
175:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
176:                 control.setDomainModelReference(dmr);
177:                 final VAnnotation annotation = VAnnotationFactory.eINSTANCE.createAnnotation();
178:                 annotation.setKey(LinkOnlyMultiReferenceRendererService.ANNOTATION_KEY);
179:                 control.getAttachments().add(annotation);
180:
181:                 final EReference reference = mock(EReference.class);
182:                 when(reference.isMany()).thenReturn(false);
183:
184:                 final EMFFormsDatabinding databinding = mock(EMFFormsDatabinding.class);
185:                 service.setEMFFormsDatabinding(databinding);
186:                 final ViewModelContext vmc = mock(ViewModelContext.class);
187:                 final EObject domainModel = mock(EObject.class);
188:                 when(vmc.getDomainModel()).thenReturn(domainModel);
189:                 final IValueProperty property = mock(IValueProperty.class);
190:                 when(property.getValueType()).thenReturn(reference);
191:                 when(databinding.getValueProperty(dmr, domainModel)).thenReturn(property);
192:                 assertEquals(EMFFormsDIRendererService.NOT_APPLICABLE, service.isApplicable(control, vmc), 0);
193:         }
194:
195:         @Test
196:         public void testGetRendererClass() {
197:                 assertSame(LinkOnlyMultiReferenceRenderer.class, service.getRendererClass());
198:         }
199: }