Skip to content

Package: EMFFormsKeyAttributeDMRExpander_ITest

EMFFormsKeyAttributeDMRExpander_ITest

nameinstructionbranchcomplexitylinemethod
EMFFormsKeyAttributeDMRExpander_ITest()
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: 2 C: 52
96%
M: 2 C: 4
67%
M: 2 C: 2
50%
M: 1 C: 14
93%
M: 0 C: 1
100%
setUpBeforeClass()
M: 0 C: 5
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: 12
100%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 4
100%
M: 0 C: 1
100%
testPrepareDomainObjectFeaturePathCompleteAndKeyNotPresent()
M: 0 C: 94
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 27
100%
M: 0 C: 1
100%
testPrepareDomainObjectFeaturePathCompleteAndKeyPresent()
M: 0 C: 113
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 33
100%
M: 0 C: 1
100%
testPrepareDomainObjectFeaturePathIncomplete()
M: 0 C: 68
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 20
100%
M: 0 C: 1
100%
testPrepareDomainObjectFeaturePathMultireferenceEmpty()
M: 0 C: 72
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
testServiceType()
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%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2016 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.keyattribute;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.junit.Assert.assertNotNull;
18: import static org.junit.Assert.assertNull;
19: import static org.junit.Assert.assertTrue;
20: import static org.junit.Assert.fail;
21:
22: import java.util.Collection;
23:
24: import org.eclipse.emf.ecp.test.common.DefaultRealm;
25: import org.eclipse.emf.ecp.view.spi.keyattributedmr.model.VKeyAttributeDomainModelReference;
26: import org.eclipse.emf.ecp.view.spi.keyattributedmr.model.VKeyattributedmrFactory;
27: import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
28: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
29: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.A;
30: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.B;
31: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.C;
32: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.D;
33: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestFactory;
34: import org.eclipse.emfforms.core.services.databinding.testmodel.test.model.TestPackage;
35: import org.eclipse.emfforms.spi.core.services.domainexpander.EMFFormsDMRExpander;
36: import org.eclipse.emfforms.spi.core.services.domainexpander.EMFFormsExpandingFailedException;
37: import org.junit.After;
38: import org.junit.Before;
39: import org.junit.BeforeClass;
40: import org.junit.Test;
41: import org.osgi.framework.BundleContext;
42: import org.osgi.framework.FrameworkUtil;
43: import org.osgi.framework.InvalidSyntaxException;
44: import org.osgi.framework.ServiceReference;
45:
46: /**
47: * Integration tests for {@link EMFFormsKeyAttributeDMRExpander}.
48: *
49: * @author Lucas Koehler
50: *
51: */
52: public class EMFFormsKeyAttributeDMRExpander_ITest {
53:
54:         private static final String TEST_KEY = "TestKey"; //$NON-NLS-1$
55:         private static BundleContext bundleContext;
56:         private ServiceReference<EMFFormsDMRExpander> serviceReference;
57:         private EMFFormsKeyAttributeDMRExpander keyAttributeDMRExpander;
58:         private DefaultRealm defaultRealm;
59:
60:         @BeforeClass
61:         public static void setUpBeforeClass() {
62:                 bundleContext = FrameworkUtil.getBundle(EMFFormsKeyAttributeDMRExpander_ITest.class).getBundleContext();
63:         }
64:
65:         @Before
66:         public void setUp() throws InvalidSyntaxException {
67:                 defaultRealm = new DefaultRealm();
68:                 final Collection<ServiceReference<EMFFormsDMRExpander>> serviceReferences = bundleContext.getServiceReferences(
69:                         EMFFormsDMRExpander.class, null);
70:                 keyAttributeDMRExpander = null;
71:                 serviceReference = null;
72:
73:•                for (final ServiceReference<EMFFormsDMRExpander> curRef : serviceReferences) {
74:                         final EMFFormsDMRExpander curService = bundleContext.getService(curRef);
75:•                        if (EMFFormsKeyAttributeDMRExpander.class.isInstance(curService)) {
76:                                 keyAttributeDMRExpander = (EMFFormsKeyAttributeDMRExpander) curService;
77:                                 serviceReference = curRef;
78:                                 break;
79:                         }
80:                         bundleContext.ungetService(curRef);
81:                 }
82:
83:•                if (keyAttributeDMRExpander == null) {
84:                         fail("The EMFFormsKeyAttributeDMRExpander could not be found."); //$NON-NLS-1$
85:                 }
86:         }
87:
88:         @After
89:         public void tearDown() {
90:•                if (serviceReference != null) {
91:                         bundleContext.ungetService(serviceReference);
92:                 }
93:                 defaultRealm.dispose();
94:         }
95:
96:         @Test
97:         public void testServiceType() {
98:                 assertTrue(EMFFormsKeyAttributeDMRExpander.class.isInstance(keyAttributeDMRExpander));
99:         }
100:
101:         @Test
102:         public void testPrepareDomainObjectFeaturePathCompleteAndKeyNotPresent() throws EMFFormsExpandingFailedException {
103:                 final VKeyAttributeDomainModelReference keyAttributeDMR = VKeyattributedmrFactory.eINSTANCE
104:                         .createKeyAttributeDomainModelReference();
105:                 final VFeaturePathDomainModelReference keyDMR = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
106:                 final VFeaturePathDomainModelReference valueDMR = VViewFactory.eINSTANCE
107:                         .createFeaturePathDomainModelReference();
108:
109:                 keyAttributeDMR.setKeyValue(TEST_KEY);
110:                 keyAttributeDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getA_B());
111:                 keyAttributeDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getB_CList());
112:
113:                 keyDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getC_D());
114:                 keyDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getD_X());
115:
116:                 valueDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getC_A());
117:                 valueDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getA_B());
118:
119:                 keyAttributeDMR.setKeyDMR(keyDMR);
120:                 keyAttributeDMR.setValueDMR(valueDMR);
121:
122:                 final A a = TestFactory.eINSTANCE.createA();
123:                 final B b = TestFactory.eINSTANCE.createB();
124:                 final C c = TestFactory.eINSTANCE.createC();
125:
126:                 a.setB(b);
127:                 b.getCList().add(c);
128:
129:                 assertNull(c.getA());
130:                 assertNull(c.getD());
131:
132:                 keyAttributeDMRExpander.prepareDomainObject(keyAttributeDMR, a);
133:
134:                 // Neither the "key path" nor the "value path" for c must be expanded because the key path must never be
135:                 // expanded and c does not have the key value at the end of the key dmr.
136:                 assertNull(c.getA());
137:                 assertNull(c.getD());
138:                 assertTrue(b.getCList().contains(c));
139:                 assertEquals(1, b.getCList().size());
140:         }
141:
142:         @Test
143:         public void testPrepareDomainObjectFeaturePathCompleteAndKeyPresent() throws EMFFormsExpandingFailedException {
144:                 final VKeyAttributeDomainModelReference keyAttributeDMR = VKeyattributedmrFactory.eINSTANCE
145:                         .createKeyAttributeDomainModelReference();
146:                 final VFeaturePathDomainModelReference keyDMR = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
147:                 final VFeaturePathDomainModelReference valueDMR = VViewFactory.eINSTANCE
148:                         .createFeaturePathDomainModelReference();
149:
150:                 keyAttributeDMR.setKeyValue(TEST_KEY);
151:                 keyAttributeDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getA_B());
152:                 keyAttributeDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getB_CList());
153:
154:                 keyDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getC_D());
155:                 keyDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getD_X());
156:
157:                 valueDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getC_A());
158:                 valueDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getA_B());
159:
160:                 keyAttributeDMR.setKeyDMR(keyDMR);
161:                 keyAttributeDMR.setValueDMR(valueDMR);
162:
163:                 final A a = TestFactory.eINSTANCE.createA();
164:                 final B b = TestFactory.eINSTANCE.createB();
165:                 final C cWithKey = TestFactory.eINSTANCE.createC();
166:                 final C cWithoutKey = TestFactory.eINSTANCE.createC();
167:                 final D d = TestFactory.eINSTANCE.createD();
168:                 d.setX(TEST_KEY);
169:
170:                 a.setB(b);
171:                 b.getCList().add(cWithKey);
172:                 b.getCList().add(cWithoutKey);
173:                 cWithKey.setD(d);
174:
175:                 assertNull(cWithKey.getA());
176:                 assertNull(cWithoutKey.getA());
177:
178:                 keyAttributeDMRExpander.prepareDomainObject(keyAttributeDMR, a);
179:
180:                 // The value path must be expanded for cWithKey and must not be expanded for cWithoutKey.
181:                 assertNotNull(cWithKey.getA());
182:                 assertNull(cWithKey.getA().getB());
183:                 assertNotNull(cWithKey.getD());
184:                 assertNull(cWithoutKey.getA());
185:
186:                 assertEquals(2, b.getCList().size());
187:         }
188:
189:         @Test
190:         public void testPrepareDomainObjectFeaturePathIncomplete() throws EMFFormsExpandingFailedException {
191:                 final VKeyAttributeDomainModelReference keyAttributeDMR = VKeyattributedmrFactory.eINSTANCE
192:                         .createKeyAttributeDomainModelReference();
193:                 final VFeaturePathDomainModelReference keyDMR = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
194:                 final VFeaturePathDomainModelReference valueDMR = VViewFactory.eINSTANCE
195:                         .createFeaturePathDomainModelReference();
196:
197:                 keyAttributeDMR.setKeyValue(TEST_KEY);
198:                 keyAttributeDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getA_B());
199:                 keyAttributeDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getB_CList());
200:
201:                 keyDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getC_D());
202:                 keyDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getD_X());
203:
204:                 valueDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getC_A());
205:                 valueDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getA_B());
206:
207:                 keyAttributeDMR.setKeyDMR(keyDMR);
208:                 keyAttributeDMR.setValueDMR(valueDMR);
209:
210:                 final A a = TestFactory.eINSTANCE.createA();
211:
212:                 assertNull(a.getB());
213:
214:                 keyAttributeDMRExpander.prepareDomainObject(keyAttributeDMR, a);
215:
216:                 // No element must be added to the multi-reference of the feature path part.
217:                 assertNotNull(a.getB());
218:                 assertTrue(a.getB().getCList().isEmpty());
219:         }
220:
221:         @Test
222:         public void testPrepareDomainObjectFeaturePathMultireferenceEmpty() throws EMFFormsExpandingFailedException {
223:                 final VKeyAttributeDomainModelReference keyAttributeDMR = VKeyattributedmrFactory.eINSTANCE
224:                         .createKeyAttributeDomainModelReference();
225:                 final VFeaturePathDomainModelReference keyDMR = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
226:                 final VFeaturePathDomainModelReference valueDMR = VViewFactory.eINSTANCE
227:                         .createFeaturePathDomainModelReference();
228:
229:                 keyAttributeDMR.setKeyValue(TEST_KEY);
230:                 keyAttributeDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getA_B());
231:                 keyAttributeDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getB_CList());
232:
233:                 keyDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getC_D());
234:                 keyDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getD_X());
235:
236:                 valueDMR.getDomainModelEReferencePath().add(TestPackage.eINSTANCE.getC_A());
237:                 valueDMR.setDomainModelEFeature(TestPackage.eINSTANCE.getA_B());
238:
239:                 keyAttributeDMR.setKeyDMR(keyDMR);
240:                 keyAttributeDMR.setValueDMR(valueDMR);
241:
242:                 final A a = TestFactory.eINSTANCE.createA();
243:                 final B b = TestFactory.eINSTANCE.createB();
244:
245:                 a.setB(b);
246:
247:                 assertTrue(b.getCList().isEmpty());
248:
249:                 keyAttributeDMRExpander.prepareDomainObject(keyAttributeDMR, a);
250:
251:                 // No element must be added to the multi-reference of the feature path part.
252:                 assertTrue(a.getB().getCList().isEmpty());
253:         }
254: }