Skip to content

Package: IndexSegmentExpander_Test

IndexSegmentExpander_Test

nameinstructionbranchcomplexitylinemethod
IndexSegmentExpander_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: 16
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
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%
testIsApplicable()
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
testIsApplicableNull()
M: 0 C: 17
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
testIsApplicableWrongSegmentType()
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%
testPrepareDomainObjectBothNull()
M: 7 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
testPrepareDomainObjectDomainObjectNull()
M: 7 C: 4
36%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 1
33%
M: 0 C: 1
100%
testPrepareDomainObjectEAttribute()
M: 7 C: 18
72%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 7
78%
M: 0 C: 1
100%
testPrepareDomainObjectIndexNotPresentAbstractReference()
M: 7 C: 32
82%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 10
83%
M: 0 C: 1
100%
testPrepareDomainObjectIndexNotPresentEmptyList()
M: 0 C: 49
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 13
100%
M: 0 C: 1
100%
testPrepareDomainObjectIndexNotPresentListTooSmall()
M: 0 C: 61
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 16
100%
M: 0 C: 1
100%
testPrepareDomainObjectIndexPresent()
M: 0 C: 93
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 23
100%
M: 0 C: 1
100%
testPrepareDomainObjectIndexPresentAbstractReference()
M: 0 C: 65
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 17
100%
M: 0 C: 1
100%
testPrepareDomainObjectIndexPresentAsLastListElement()
M: 0 C: 79
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 20
100%
M: 0 C: 1
100%
testPrepareDomainObjectNullReference()
M: 7 C: 11
61%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 5
71%
M: 0 C: 1
100%
testPrepareDomainObjectSegmentNull()
M: 7 C: 4
36%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 1
33%
M: 0 C: 1
100%
testPrepareDomainObjectSingleReference()
M: 7 C: 24
77%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 9
82%
M: 0 C: 1
100%
testPrepareDomainObjectWrongSegmentType()
M: 7 C: 8
53%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 2
50%
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.emfforms.internal.core.services.segments.index;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.junit.Assert.assertNotNull;
18: import static org.mockito.Matchers.any;
19: import static org.mockito.Mockito.mock;
20: import static org.mockito.Mockito.verify;
21:
22: import org.eclipse.emf.ecore.EAttribute;
23: import org.eclipse.emf.ecore.EObject;
24: import org.eclipse.emf.ecore.EReference;
25: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReferenceSegment;
26: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A;
27: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B;
28: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C;
29: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D;
30: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestFactory;
31: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage;
32: import org.eclipse.emfforms.spi.common.report.AbstractReport;
33: import org.eclipse.emfforms.spi.common.report.ReportService;
34: import org.eclipse.emfforms.spi.core.services.domainexpander.EMFFormsDMRSegmentExpander;
35: import org.eclipse.emfforms.spi.core.services.domainexpander.EMFFormsExpandingFailedException;
36: import org.eclipse.emfforms.spi.view.indexsegment.model.VIndexDomainModelReferenceSegment;
37: import org.eclipse.emfforms.spi.view.indexsegment.model.VIndexsegmentFactory;
38: import org.junit.After;
39: import org.junit.Before;
40: import org.junit.Test;
41:
42: /**
43: * JUnit tests for {@link IndexSegmentExpander}.
44: *
45: * @author Lucas Koehler
46: *
47: */
48: public class IndexSegmentExpander_Test {
49:
50:         private IndexSegmentExpander expander;
51:         private ReportService reportService;
52:
53:         @Before
54:         public void setUp() {
55:                 expander = new IndexSegmentExpander();
56:                 reportService = mock(ReportService.class);
57:                 expander.setReportService(reportService);
58:         }
59:
60:         @After
61:         public void tearDown() {
62:         }
63:
64:         @Test
65:         public void testPrepareDomainObjectIndexNotPresentEmptyList() throws EMFFormsExpandingFailedException {
66:                 final int index = 2;
67:
68:                 final B b = TestFactory.eINSTANCE.createB();
69:                 final EReference eReference = TestPackage.eINSTANCE.getB_CList();
70:                 final VIndexDomainModelReferenceSegment indexSegment = VIndexsegmentFactory.eINSTANCE
71:                         .createIndexDomainModelReferenceSegment();
72:                 indexSegment.setDomainModelFeature(eReference.getName());
73:                 indexSegment.setIndex(index);
74:
75:                 assertEquals(0, b.getCList().size());
76:                 expander.prepareDomainObject(indexSegment, b);
77:                 assertEquals(index + 1, b.getCList().size());
78:•                for (int i = 0; i <= index; i++) {
79:                         assertNotNull(b.getCList().get(i));
80:                 }
81:         }
82:
83:         @Test
84:         public void testPrepareDomainObjectIndexNotPresentListTooSmall() throws EMFFormsExpandingFailedException {
85:                 final int index = 2;
86:
87:                 final B b = TestFactory.eINSTANCE.createB();
88:                 final C c0 = TestFactory.eINSTANCE.createC();
89:                 b.getCList().add(c0);
90:
91:                 final EReference eReference = TestPackage.eINSTANCE.getB_CList();
92:                 final VIndexDomainModelReferenceSegment indexSegment = VIndexsegmentFactory.eINSTANCE
93:                         .createIndexDomainModelReferenceSegment();
94:                 indexSegment.setDomainModelFeature(eReference.getName());
95:                 indexSegment.setIndex(index);
96:
97:                 assertEquals(1, b.getCList().size());
98:                 expander.prepareDomainObject(indexSegment, b);
99:
100:                 assertEquals(index + 1, b.getCList().size());
101:                 assertEquals(c0, b.getCList().get(0));
102:                 assertNotNull(b.getCList().get(1));
103:                 assertNotNull(b.getCList().get(2));
104:         }
105:
106:         @Test
107:         public void testPrepareDomainObjectIndexPresent() throws EMFFormsExpandingFailedException {
108:                 // expander should not change the list if the index is present
109:                 final int index = 2;
110:
111:                 final B b = TestFactory.eINSTANCE.createB();
112:                 final C c0 = TestFactory.eINSTANCE.createC();
113:                 final C c1 = TestFactory.eINSTANCE.createC();
114:                 final C c2 = TestFactory.eINSTANCE.createC();
115:                 final C c3 = TestFactory.eINSTANCE.createC();
116:                 b.getCList().add(c0);
117:                 b.getCList().add(c1);
118:                 b.getCList().add(c2);
119:                 b.getCList().add(c3);
120:
121:                 final EReference eReference = TestPackage.eINSTANCE.getB_CList();
122:                 final VIndexDomainModelReferenceSegment indexSegment = VIndexsegmentFactory.eINSTANCE
123:                         .createIndexDomainModelReferenceSegment();
124:                 indexSegment.setDomainModelFeature(eReference.getName());
125:                 indexSegment.setIndex(index);
126:
127:                 assertEquals(4, b.getCList().size());
128:                 expander.prepareDomainObject(indexSegment, b);
129:
130:                 assertEquals(4, b.getCList().size());
131:                 assertEquals(c0, b.getCList().get(0));
132:                 assertEquals(c1, b.getCList().get(1));
133:                 assertEquals(c2, b.getCList().get(2));
134:                 assertEquals(c3, b.getCList().get(3));
135:         }
136:
137:         @Test
138:         public void testPrepareDomainObjectIndexPresentAsLastListElement() throws EMFFormsExpandingFailedException {
139:                 // expander should not change the list if the index is present
140:                 final int index = 2;
141:
142:                 final B b = TestFactory.eINSTANCE.createB();
143:                 final C c0 = TestFactory.eINSTANCE.createC();
144:                 final C c1 = TestFactory.eINSTANCE.createC();
145:                 final C c2 = TestFactory.eINSTANCE.createC();
146:                 b.getCList().add(c0);
147:                 b.getCList().add(c1);
148:                 b.getCList().add(c2);
149:
150:                 final EReference eReference = TestPackage.eINSTANCE.getB_CList();
151:                 final VIndexDomainModelReferenceSegment indexSegment = VIndexsegmentFactory.eINSTANCE
152:                         .createIndexDomainModelReferenceSegment();
153:                 indexSegment.setDomainModelFeature(eReference.getName());
154:                 indexSegment.setIndex(index);
155:
156:                 assertEquals(3, b.getCList().size());
157:                 expander.prepareDomainObject(indexSegment, b);
158:
159:                 assertEquals(3, b.getCList().size());
160:                 assertEquals(c0, b.getCList().get(0));
161:                 assertEquals(c1, b.getCList().get(1));
162:                 assertEquals(c2, b.getCList().get(2));
163:         }
164:
165:         @Test(expected = EMFFormsExpandingFailedException.class)
166:         public void testPrepareDomainObjectIndexNotPresentAbstractReference() throws EMFFormsExpandingFailedException {
167:                 final int index = 1;
168:
169:                 final B b = TestFactory.eINSTANCE.createB();
170:                 final A a0 = TestFactory.eINSTANCE.createA();
171:                 b.getEList().add(a0);
172:
173:                 final EReference eReference = TestPackage.eINSTANCE.getB_EList();
174:                 final VIndexDomainModelReferenceSegment indexSegment = VIndexsegmentFactory.eINSTANCE
175:                         .createIndexDomainModelReferenceSegment();
176:                 indexSegment.setDomainModelFeature(eReference.getName());
177:                 indexSegment.setIndex(index);
178:
179:                 assertEquals(1, b.getEList().size());
180:                 expander.prepareDomainObject(indexSegment, b);
181:         }
182:
183:         @Test
184:         public void testPrepareDomainObjectIndexPresentAbstractReference() throws EMFFormsExpandingFailedException {
185:                 final int index = 1;
186:
187:                 final B b = TestFactory.eINSTANCE.createB();
188:                 final A a0 = TestFactory.eINSTANCE.createA();
189:                 final A a1 = TestFactory.eINSTANCE.createA();
190:                 b.getEList().add(a0);
191:                 b.getEList().add(a1);
192:
193:                 final EReference eReference = TestPackage.eINSTANCE.getB_EList();
194:                 final VIndexDomainModelReferenceSegment indexSegment = VIndexsegmentFactory.eINSTANCE
195:                         .createIndexDomainModelReferenceSegment();
196:                 indexSegment.setDomainModelFeature(eReference.getName());
197:                 indexSegment.setIndex(index);
198:
199:                 assertEquals(2, b.getEList().size());
200:                 expander.prepareDomainObject(indexSegment, b);
201:
202:                 assertEquals(2, b.getEList().size());
203:                 assertEquals(a0, b.getEList().get(0));
204:                 assertEquals(a1, b.getEList().get(1));
205:         }
206:
207:         @Test(expected = EMFFormsExpandingFailedException.class)
208:         public void testPrepareDomainObjectSingleReference() throws EMFFormsExpandingFailedException {
209:                 final int index = 0;
210:
211:                 final B b = TestFactory.eINSTANCE.createB();
212:                 final C c = TestFactory.eINSTANCE.createC();
213:                 b.setC(c);
214:
215:                 final EReference eReference = TestPackage.eINSTANCE.getB_C();
216:                 final VIndexDomainModelReferenceSegment indexSegment = VIndexsegmentFactory.eINSTANCE
217:                         .createIndexDomainModelReferenceSegment();
218:                 indexSegment.setDomainModelFeature(eReference.getName());
219:                 indexSegment.setIndex(index);
220:
221:                 expander.prepareDomainObject(indexSegment, b);
222:         }
223:
224:         @Test(expected = EMFFormsExpandingFailedException.class)
225:         public void testPrepareDomainObjectEAttribute() throws EMFFormsExpandingFailedException {
226:                 final int index = 1;
227:
228:                 final D d = TestFactory.eINSTANCE.createD();
229:
230:                 final EAttribute eAttribute = TestPackage.eINSTANCE.getD_YList();
231:                 final VIndexDomainModelReferenceSegment indexSegment = VIndexsegmentFactory.eINSTANCE
232:                         .createIndexDomainModelReferenceSegment();
233:                 indexSegment.setDomainModelFeature(eAttribute.getName());
234:                 indexSegment.setIndex(index);
235:
236:                 expander.prepareDomainObject(indexSegment, d);
237:         }
238:
239:         @Test(expected = EMFFormsExpandingFailedException.class)
240:         public void testPrepareDomainObjectNullReference() throws EMFFormsExpandingFailedException {
241:                 final int index = 1;
242:
243:                 final D d = TestFactory.eINSTANCE.createD();
244:
245:                 final VIndexDomainModelReferenceSegment indexSegment = VIndexsegmentFactory.eINSTANCE
246:                         .createIndexDomainModelReferenceSegment();
247:                 indexSegment.setIndex(index);
248:
249:                 expander.prepareDomainObject(indexSegment, d);
250:         }
251:
252:         @Test(expected = IllegalArgumentException.class)
253:         public void testPrepareDomainObjectSegmentNull() throws EMFFormsExpandingFailedException {
254:                 final EObject eObject = mock(EObject.class);
255:                 expander.prepareDomainObject(null, eObject);
256:         }
257:
258:         @Test(expected = IllegalArgumentException.class)
259:         public void testPrepareDomainObjectDomainObjectNull() throws EMFFormsExpandingFailedException {
260:                 final VIndexDomainModelReferenceSegment indexSegment = mock(VIndexDomainModelReferenceSegment.class);
261:                 expander.prepareDomainObject(indexSegment, null);
262:         }
263:
264:         @Test(expected = IllegalArgumentException.class)
265:         public void testPrepareDomainObjectBothNull() throws EMFFormsExpandingFailedException {
266:                 expander.prepareDomainObject(null, null);
267:         }
268:
269:         @Test(expected = IllegalArgumentException.class)
270:         public void testPrepareDomainObjectWrongSegmentType() throws EMFFormsExpandingFailedException {
271:                 final VDomainModelReferenceSegment wrongSegment = mock(VDomainModelReferenceSegment.class);
272:                 final EObject eObject = mock(EObject.class);
273:
274:                 expander.prepareDomainObject(wrongSegment, eObject);
275:         }
276:
277:         @Test
278:         public void testIsApplicable() {
279:                 final VIndexDomainModelReferenceSegment indexSegment = mock(VIndexDomainModelReferenceSegment.class);
280:                 assertEquals(5d, expander.isApplicable(indexSegment), 0d);
281:         }
282:
283:         @Test
284:         public void testIsApplicableNull() {
285:                 assertEquals(EMFFormsDMRSegmentExpander.NOT_APPLICABLE, expander.isApplicable(null), 0d);
286:                 verify(reportService).report(any(AbstractReport.class));
287:         }
288:
289:         @Test
290:         public void testIsApplicableWrongSegmentType() {
291:                 final VDomainModelReferenceSegment segment = mock(VDomainModelReferenceSegment.class);
292:                 assertEquals(EMFFormsDMRSegmentExpander.NOT_APPLICABLE, expander.isApplicable(segment), 0d);
293:         }
294: }