Skip to content

Package: EMFFormsDomainExpanderImpl_Test

EMFFormsDomainExpanderImpl_Test

nameinstructionbranchcomplexitylinemethod
EMFFormsDomainExpanderImpl_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%
prepareDomainObject_SegmentsOverDmr()
M: 0 C: 102
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 19
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%
tearDown()
M: 0 C: 1
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
testPrepareDomainObject()
M: 0 C: 106
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 20
100%
M: 0 C: 1
100%
testPrepareDomainObjectAllDMRExpandersConsidered()
M: 0 C: 89
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 15
100%
M: 0 C: 1
100%
testPrepareDomainObjectAllDMRSegmentExpandersConsidered()
M: 0 C: 120
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
testPrepareDomainObjectBothNull()
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
testPrepareDomainObjectLastSegmentNeedsExpansion()
M: 0 C: 111
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 22
100%
M: 0 C: 1
100%
testPrepareDomainObjectNoSuitableDMRExpander()
M: 2 C: 25
93%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 1 C: 5
83%
M: 0 C: 1
100%
testPrepareDomainObjectNoSuitableSegmentExpander()
M: 8 C: 37
82%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 9
82%
M: 0 C: 1
100%
testPrepareDomainObjectObjectNull()
M: 8 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
testPrepareDomainObjectReferenceNull()
M: 8 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
testPrepareDomainObjectUseCorrectDMRExpander()
M: 0 C: 75
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 15
100%
M: 0 C: 1
100%
testPrepareDomainObjectUseCorrectSegmentExpander()
M: 0 C: 107
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
testPrepareDomainObject_NoDMRExpander()
M: 2 C: 7
78%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 1 C: 2
67%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2015 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.emfforms.internal.core.services.domainexpander.defaultheuristic;
15:
16: import static org.mockito.Matchers.any;
17: import static org.mockito.Matchers.eq;
18: import static org.mockito.Mockito.atLeastOnce;
19: import static org.mockito.Mockito.mock;
20: import static org.mockito.Mockito.never;
21: import static org.mockito.Mockito.verify;
22: import static org.mockito.Mockito.when;
23:
24: import java.util.Optional;
25:
26: import org.eclipse.emf.ecore.EObject;
27: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
28: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReferenceSegment;
29: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
30: import org.eclipse.emfforms.spi.core.services.domainexpander.EMFFormsDMRExpander;
31: import org.eclipse.emfforms.spi.core.services.domainexpander.EMFFormsDMRSegmentExpander;
32: import org.eclipse.emfforms.spi.core.services.domainexpander.EMFFormsExpandingFailedException;
33: import org.junit.After;
34: import org.junit.Before;
35: import org.junit.Test;
36:
37: /**
38: * JUnit test cases for {@link EMFFormsDomainExpanderImpl}.
39: *
40: * @author Lucas Koehler
41: *
42: */
43: public class EMFFormsDomainExpanderImpl_Test {
44:
45:         private EMFFormsDomainExpanderImpl domainExpander;
46:
47:         /**
48:          * Create a new {@link EMFFormsDomainExpanderImpl} for every test case.
49:          */
50:         @Before
51:         public void setUp() {
52:                 domainExpander = new EMFFormsDomainExpanderImpl();
53:         }
54:
55:         /**
56:          * @throws java.lang.Exception
57:          */
58:         @After
59:         public void tearDown() throws Exception {
60:         }
61:
62:         @Test(expected = EMFFormsExpandingFailedException.class)
63:         public void testPrepareDomainObject_NoDMRExpander() throws EMFFormsExpandingFailedException {
64:                 domainExpander.prepareDomainObject(VViewFactory.eINSTANCE.createFeaturePathDomainModelReference(),
65:                         mock(EObject.class));
66:         }
67:
68:         @Test(expected = EMFFormsExpandingFailedException.class)
69:         public void testPrepareDomainObjectNoSuitableDMRExpander() throws EMFFormsExpandingFailedException {
70:                 final EMFFormsDMRExpander dmrExpander = mock(EMFFormsDMRExpander.class);
71:                 when(dmrExpander.isApplicable(any(VDomainModelReference.class))).thenReturn(EMFFormsDMRExpander.NOT_APPLICABLE);
72:                 domainExpander.addEMFFormsDMRExpander(dmrExpander);
73:
74:                 domainExpander.prepareDomainObject(VViewFactory.eINSTANCE.createFeaturePathDomainModelReference(),
75:                         mock(EObject.class));
76:         }
77:
78:         @Test
79:         public void testPrepareDomainObjectAllDMRExpandersConsidered() throws EMFFormsExpandingFailedException {
80:                 final EMFFormsDMRExpander dmrExpander1 = mock(EMFFormsDMRExpander.class);
81:                 when(dmrExpander1.isApplicable(any(VDomainModelReference.class))).thenReturn(1d);
82:                 final EMFFormsDMRExpander dmrExpander2 = mock(EMFFormsDMRExpander.class);
83:                 when(dmrExpander2.isApplicable(any(VDomainModelReference.class))).thenReturn(2d);
84:                 final EMFFormsDMRExpander dmrExpander3 = mock(EMFFormsDMRExpander.class);
85:                 when(dmrExpander3.isApplicable(any(VDomainModelReference.class))).thenReturn(3d);
86:                 domainExpander.addEMFFormsDMRExpander(dmrExpander1);
87:                 domainExpander.addEMFFormsDMRExpander(dmrExpander2);
88:                 domainExpander.addEMFFormsDMRExpander(dmrExpander3);
89:
90:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
91:                 domainExpander.prepareDomainObject(dmr, mock(EObject.class));
92:                 verify(dmrExpander1, atLeastOnce()).isApplicable(dmr);
93:                 verify(dmrExpander2, atLeastOnce()).isApplicable(dmr);
94:                 verify(dmrExpander3, atLeastOnce()).isApplicable(dmr);
95:         }
96:
97:         @Test
98:         public void testPrepareDomainObjectUseCorrectDMRExpander() throws EMFFormsExpandingFailedException {
99:                 final EMFFormsDMRExpander dmrExpander1 = mock(EMFFormsDMRExpander.class);
100:                 when(dmrExpander1.isApplicable(any(VDomainModelReference.class))).thenReturn(1d);
101:                 final EMFFormsDMRExpander dmrExpander2 = mock(EMFFormsDMRExpander.class);
102:                 when(dmrExpander2.isApplicable(any(VDomainModelReference.class)))
103:                         .thenReturn(EMFFormsDMRExpander.NOT_APPLICABLE);
104:                 final EMFFormsDMRExpander dmrExpander3 = mock(EMFFormsDMRExpander.class);
105:                 when(dmrExpander3.isApplicable(any(VDomainModelReference.class))).thenReturn(3d);
106:                 domainExpander.addEMFFormsDMRExpander(dmrExpander1);
107:                 domainExpander.addEMFFormsDMRExpander(dmrExpander2);
108:                 domainExpander.addEMFFormsDMRExpander(dmrExpander3);
109:
110:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
111:                 final EObject domainObject = mock(EObject.class);
112:                 domainExpander.prepareDomainObject(dmr, domainObject);
113:                 verify(dmrExpander3).prepareDomainObject(dmr, domainObject);
114:         }
115:
116:         @Test(expected = IllegalArgumentException.class)
117:         public void testPrepareDomainObjectReferenceNull() throws EMFFormsExpandingFailedException {
118:                 domainExpander.prepareDomainObject(null, mock(EObject.class));
119:         }
120:
121:         @Test(expected = IllegalArgumentException.class)
122:         public void testPrepareDomainObjectObjectNull() throws EMFFormsExpandingFailedException {
123:                 domainExpander.prepareDomainObject(mock(VDomainModelReference.class), null);
124:         }
125:
126:         @Test(expected = IllegalArgumentException.class)
127:         public void testPrepareDomainObjectBothNull() throws EMFFormsExpandingFailedException {
128:                 domainExpander.prepareDomainObject(null, null);
129:         }
130:
131:         /**
132:          * Tests that are used over the whole dmr if segments are present.
133:          *
134:          * @throws EMFFormsExpandingFailedException
135:          */
136:         @Test
137:         public void prepareDomainObject_SegmentsOverDmr() throws EMFFormsExpandingFailedException {
138:                 final EMFFormsDMRExpander dmrExpander = mock(EMFFormsDMRExpander.class);
139:                 final EMFFormsDMRSegmentExpander segmentExpander = mock(EMFFormsDMRSegmentExpander.class);
140:                 when(segmentExpander.isApplicable(any(VDomainModelReferenceSegment.class))).thenReturn(1d);
141:
142:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
143:                 final VDomainModelReferenceSegment segment1 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
144:                 final VDomainModelReferenceSegment segment2 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
145:                 dmr.getSegments().add(segment1);
146:                 dmr.getSegments().add(segment2);
147:
148:                 final EObject domainObject = mock(EObject.class);
149:                 final EObject resultForSegment1 = mock(EObject.class);
150:                 when(segmentExpander.prepareDomainObject(segment1, domainObject)).thenReturn(Optional.of(resultForSegment1));
151:
152:                 domainExpander.addEMFFormsDMRExpander(dmrExpander);
153:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander);
154:
155:                 domainExpander.prepareDomainObject(dmr, domainObject);
156:
157:                 verify(dmrExpander, never()).isApplicable(any(VDomainModelReference.class));
158:                 verify(dmrExpander, never()).prepareDomainObject(any(VDomainModelReference.class), any(EObject.class));
159:                 verify(segmentExpander).isApplicable(segment1);
160:                 verify(segmentExpander).prepareDomainObject(segment1, domainObject);
161:         }
162:
163:         @Test
164:         public void testPrepareDomainObject() throws EMFFormsExpandingFailedException {
165:
166:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
167:                 final VDomainModelReferenceSegment segment1 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
168:                 final VDomainModelReferenceSegment segment2 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
169:                 final VDomainModelReferenceSegment segment3 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
170:                 dmr.getSegments().add(segment1);
171:                 dmr.getSegments().add(segment2);
172:                 dmr.getSegments().add(segment3);
173:                 final EObject domainObject = mock(EObject.class);
174:                 final EObject resultForSegment1 = mock(EObject.class);
175:
176:                 final EMFFormsDMRSegmentExpander segmentExpander = mock(EMFFormsDMRSegmentExpander.class);
177:                 when(segmentExpander.isApplicable(any(VDomainModelReferenceSegment.class))).thenReturn(1d);
178:                 when(segmentExpander.prepareDomainObject(segment1, domainObject)).thenReturn(Optional.of(resultForSegment1));
179:                 when(segmentExpander.prepareDomainObject(segment2, resultForSegment1))
180:                         .thenReturn(Optional.of(mock(EObject.class)));
181:
182:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander);
183:
184:                 domainExpander.prepareDomainObject(dmr, domainObject);
185:
186:                 verify(segmentExpander).prepareDomainObject(segment1, domainObject);
187:                 verify(segmentExpander).prepareDomainObject(segment2, resultForSegment1);
188:                 verify(segmentExpander, never()).prepareDomainObject(eq(segment3), any(EObject.class));
189:         }
190:
191:         @Test
192:         public void testPrepareDomainObjectLastSegmentNeedsExpansion() throws EMFFormsExpandingFailedException {
193:
194:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
195:                 final VDomainModelReferenceSegment segment1 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
196:                 final VDomainModelReferenceSegment segment2 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
197:                 final VDomainModelReferenceSegment segment3 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
198:                 dmr.getSegments().add(segment1);
199:                 dmr.getSegments().add(segment2);
200:                 dmr.getSegments().add(segment3);
201:                 final EObject domainObject = mock(EObject.class);
202:                 final EObject resultForSegment1 = mock(EObject.class);
203:                 final EObject resultForSegment2 = mock(EObject.class);
204:
205:                 final EMFFormsDMRSegmentExpander segmentExpander = mock(EMFFormsDMRSegmentExpander.class);
206:                 when(segmentExpander.isApplicable(any(VDomainModelReferenceSegment.class))).thenReturn(1d);
207:                 when(segmentExpander.needsToExpandLastSegment()).thenReturn(true);
208:                 when(segmentExpander.prepareDomainObject(segment1, domainObject)).thenReturn(Optional.of(resultForSegment1));
209:                 when(segmentExpander.prepareDomainObject(segment2, resultForSegment1))
210:                         .thenReturn(Optional.of(resultForSegment2));
211:
212:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander);
213:
214:                 domainExpander.prepareDomainObject(dmr, domainObject);
215:
216:                 verify(segmentExpander).prepareDomainObject(segment1, domainObject);
217:                 verify(segmentExpander).prepareDomainObject(segment2, resultForSegment1);
218:                 verify(segmentExpander).prepareDomainObject(segment3, resultForSegment2);
219:         }
220:
221:         @Test(expected = EMFFormsExpandingFailedException.class)
222:         public void testPrepareDomainObjectNoSuitableSegmentExpander() throws EMFFormsExpandingFailedException {
223:                 final EMFFormsDMRSegmentExpander segmentExpander = mock(EMFFormsDMRSegmentExpander.class);
224:                 when(segmentExpander.isApplicable(any(VDomainModelReferenceSegment.class)))
225:                         .thenReturn(EMFFormsDMRSegmentExpander.NOT_APPLICABLE);
226:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander);
227:
228:                 final VDomainModelReferenceSegment segment1 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
229:                 final VDomainModelReferenceSegment segment2 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
230:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
231:                 dmr.getSegments().add(segment1);
232:                 dmr.getSegments().add(segment2);
233:
234:                 domainExpander.prepareDomainObject(dmr, mock(EObject.class));
235:         }
236:
237:         @Test
238:         public void testPrepareDomainObjectAllDMRSegmentExpandersConsidered() throws EMFFormsExpandingFailedException {
239:                 final EMFFormsDMRSegmentExpander segmentExpander1 = mock(EMFFormsDMRSegmentExpander.class);
240:                 when(segmentExpander1.isApplicable(any(VDomainModelReferenceSegment.class))).thenReturn(1d);
241:                 final EMFFormsDMRSegmentExpander segmentExpander2 = mock(EMFFormsDMRSegmentExpander.class);
242:                 when(segmentExpander2.isApplicable(any(VDomainModelReferenceSegment.class))).thenReturn(2d);
243:                 final EMFFormsDMRSegmentExpander segmentExpander3 = mock(EMFFormsDMRSegmentExpander.class);
244:                 when(segmentExpander3.isApplicable(any(VDomainModelReferenceSegment.class))).thenReturn(3d);
245:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander1);
246:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander2);
247:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander3);
248:
249:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
250:                 final VDomainModelReferenceSegment segment1 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
251:                 final VDomainModelReferenceSegment segment2 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
252:                 dmr.getSegments().add(segment1);
253:                 dmr.getSegments().add(segment2);
254:
255:                 when(segmentExpander3.prepareDomainObject(eq(segment1), any(EObject.class)))
256:                         .thenReturn(Optional.of(mock(EObject.class)));
257:
258:                 domainExpander.prepareDomainObject(dmr, mock(EObject.class));
259:                 verify(segmentExpander1, atLeastOnce()).isApplicable(segment1);
260:                 verify(segmentExpander2, atLeastOnce()).isApplicable(segment1);
261:                 verify(segmentExpander3, atLeastOnce()).isApplicable(segment1);
262:         }
263:
264:         @Test
265:         public void testPrepareDomainObjectUseCorrectSegmentExpander() throws EMFFormsExpandingFailedException {
266:                 final EMFFormsDMRSegmentExpander segmentExpander1 = mock(EMFFormsDMRSegmentExpander.class);
267:                 when(segmentExpander1.isApplicable(any(VDomainModelReferenceSegment.class))).thenReturn(1d);
268:                 final EMFFormsDMRSegmentExpander segmentExpander2 = mock(EMFFormsDMRSegmentExpander.class);
269:                 when(segmentExpander2.isApplicable(any(VDomainModelReferenceSegment.class)))
270:                         .thenReturn(EMFFormsDMRSegmentExpander.NOT_APPLICABLE);
271:                 final EMFFormsDMRSegmentExpander segmentExpander3 = mock(EMFFormsDMRSegmentExpander.class);
272:                 when(segmentExpander3.isApplicable(any(VDomainModelReferenceSegment.class))).thenReturn(3d);
273:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander1);
274:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander2);
275:                 domainExpander.addEMFFormsDMRSegmentExpander(segmentExpander3);
276:
277:                 final VDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
278:                 final VDomainModelReferenceSegment segment1 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
279:                 final VDomainModelReferenceSegment segment2 = VViewFactory.eINSTANCE.createFeatureDomainModelReferenceSegment();
280:                 dmr.getSegments().add(segment1);
281:                 dmr.getSegments().add(segment2);
282:                 final EObject domainObject = mock(EObject.class);
283:
284:                 when(segmentExpander3.prepareDomainObject(eq(segment1), any(EObject.class)))
285:                         .thenReturn(Optional.of(mock(EObject.class)));
286:
287:                 domainExpander.prepareDomainObject(dmr, domainObject);
288:                 verify(segmentExpander3).prepareDomainObject(segment1, domainObject);
289:         }
290: }