Skip to content

Package: Merge_PTest

Merge_PTest

nameinstructionbranchcomplexitylinemethod
Merge_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%
addEobjectToResource(EObject)
M: 0 C: 35
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
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: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
testMergeMultiAttribute()
M: 0 C: 82
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
testMergeMultiContainmentReference()
M: 0 C: 145
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 37
100%
M: 0 C: 1
100%
testMergeMultiNOTContainmentReference()
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%
testMergeSingleAttribute()
M: 0 C: 54
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 17
100%
M: 0 C: 1
100%
testMergeSingleContainmentReference()
M: 0 C: 82
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 22
100%
M: 0 C: 1
100%
testMergeSingleNOTContainmentReference()
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%

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: * Eugen - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.diffmerge.test;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.junit.Assert.assertNotEquals;
18:
19: import org.eclipse.emf.common.command.BasicCommandStack;
20: import org.eclipse.emf.common.util.URI;
21: import org.eclipse.emf.ecore.EObject;
22: import org.eclipse.emf.ecore.resource.Resource;
23: import org.eclipse.emf.ecore.resource.ResourceSet;
24: import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
25: import org.eclipse.emf.ecp.diffmerge.spi.context.DefaultMergeUtil;
26: import org.eclipse.emf.ecp.test.common.DefaultRealm;
27: import org.eclipse.emf.ecp.view.spi.model.VControl;
28: import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
29: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
30: import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
31: import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
32: import org.eclipse.emf.ecp.view.spi.table.model.VTableFactory;
33: import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
34: import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
35: import org.eclipse.emf.emfstore.bowling.BowlingFactory;
36: import org.eclipse.emf.emfstore.bowling.BowlingPackage;
37: import org.eclipse.emf.emfstore.bowling.Fan;
38: import org.eclipse.emf.emfstore.bowling.Merchandise;
39: import org.eclipse.emf.emfstore.bowling.Player;
40: import org.junit.After;
41: import org.junit.Before;
42: import org.junit.Test;
43:
44: /**
45: * Merge Tests.
46: *
47: * @author Eugen Neufeld
48: *
49: */
50: public class Merge_PTest {
51:         private DefaultRealm realm;
52:
53:         @Before
54:         public void setUp() {
55:                 realm = new DefaultRealm();
56:         }
57:
58:         @After
59:         public void tearDown() {
60:                 realm.dispose();
61:         }
62:
63:         private void addEobjectToResource(EObject eObject) {
64:                 final ResourceSet resourceSet = new ResourceSetImpl();
65:                 final AdapterFactoryEditingDomain domain = new AdapterFactoryEditingDomain(
66:                         new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE),
67:                         new BasicCommandStack(), resourceSet);
68:                 resourceSet.eAdapters().add(new AdapterFactoryEditingDomain.EditingDomainProvider(domain));
69:                 final Resource resource = resourceSet.createResource(URI.createURI("VIRTUAL_URI")); //$NON-NLS-1$
70:                 resource.getContents().add(eObject);
71:         }
72:
73:         @Test
74:         public void testMergeSingleAttribute() {
75:
76:                 final VControl controlToCopyFrom = VViewFactory.eINSTANCE.createControl();
77:                 final VControl controlToCopyTo = VViewFactory.eINSTANCE.createControl();
78:
79:                 final Player player1 = BowlingFactory.eINSTANCE.createPlayer();
80:                 addEobjectToResource(player1);
81:                 player1.setName("a"); //$NON-NLS-1$
82:                 final VFeaturePathDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
83:                 dmr.setDomainModelEFeature(BowlingPackage.eINSTANCE.getPlayer_Name());
84:                 controlToCopyFrom.setDomainModelReference(dmr);
85:
86:                 final Player player2 = BowlingFactory.eINSTANCE.createPlayer();
87:                 addEobjectToResource(player2);
88:                 player2.setName("b"); //$NON-NLS-1$
89:                 final VFeaturePathDomainModelReference dmr2 = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
90:                 dmr2.setDomainModelEFeature(BowlingPackage.eINSTANCE.getPlayer_Name());
91:                 controlToCopyTo.setDomainModelReference(dmr2);
92:
93:                 DefaultMergeUtil.copyValues(controlToCopyFrom, player1, controlToCopyTo, player2);
94:
95:                 assertEquals("a", player2.getName()); //$NON-NLS-1$
96:         }
97:
98:         @Test
99:         public void testMergeMultiAttribute() {
100:                 final VControl controlToCopyFrom = VViewFactory.eINSTANCE.createControl();
101:                 final VControl controlToCopyTo = VViewFactory.eINSTANCE.createControl();
102:
103:                 final Player player1 = BowlingFactory.eINSTANCE.createPlayer();
104:                 addEobjectToResource(player1);
105:                 player1.getEMails().add("a"); //$NON-NLS-1$
106:                 player1.getEMails().add("b"); //$NON-NLS-1$
107:                 final VFeaturePathDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
108:                 dmr.setDomainModelEFeature(BowlingPackage.eINSTANCE.getPlayer_EMails());
109:                 controlToCopyFrom.setDomainModelReference(dmr);
110:
111:                 final Player player2 = BowlingFactory.eINSTANCE.createPlayer();
112:                 addEobjectToResource(player2);
113:                 player2.getEMails().add("1"); //$NON-NLS-1$
114:                 player2.getEMails().add("2"); //$NON-NLS-1$
115:                 final VFeaturePathDomainModelReference dmr2 = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
116:                 dmr2.setDomainModelEFeature(BowlingPackage.eINSTANCE.getPlayer_EMails());
117:                 controlToCopyTo.setDomainModelReference(dmr2);
118:
119:                 DefaultMergeUtil.copyValues(controlToCopyFrom, player1, controlToCopyTo, player2);
120:
121:                 assertEquals(2, player2.getEMails().size());
122:                 assertEquals("a", player2.getEMails().get(0)); //$NON-NLS-1$
123:                 assertEquals("b", player2.getEMails().get(1)); //$NON-NLS-1$
124:
125:         }
126:
127:         @Test
128:         public void testMergeSingleContainmentReference() {
129:                 final VControl controlToCopyFrom = VViewFactory.eINSTANCE.createControl();
130:                 final VControl controlToCopyTo = VViewFactory.eINSTANCE.createControl();
131:
132:                 final Fan fan1 = BowlingFactory.eINSTANCE.createFan();
133:                 fan1.setFavouriteMerchandise(BowlingFactory.eINSTANCE.createMerchandise());
134:                 fan1.getFavouriteMerchandise().setName("a"); //$NON-NLS-1$
135:                 addEobjectToResource(fan1);
136:                 final VFeaturePathDomainModelReference dmr = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
137:                 dmr.setDomainModelEFeature(BowlingPackage.eINSTANCE.getMerchandise_Name());
138:                 dmr.getDomainModelEReferencePath().add(BowlingPackage.eINSTANCE.getFan_FavouriteMerchandise());
139:                 controlToCopyFrom.setDomainModelReference(dmr);
140:
141:                 final Fan fan2 = BowlingFactory.eINSTANCE.createFan();
142:                 fan2.setFavouriteMerchandise(BowlingFactory.eINSTANCE.createMerchandise());
143:                 fan2.getFavouriteMerchandise().setName("b"); //$NON-NLS-1$
144:                 addEobjectToResource(fan2);
145:                 final VFeaturePathDomainModelReference dmr2 = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
146:                 dmr2.setDomainModelEFeature(BowlingPackage.eINSTANCE.getMerchandise_Name());
147:                 dmr2.getDomainModelEReferencePath().add(BowlingPackage.eINSTANCE.getFan_FavouriteMerchandise());
148:                 controlToCopyTo.setDomainModelReference(dmr2);
149:
150:                 DefaultMergeUtil.copyValues(controlToCopyFrom, fan1, controlToCopyTo, fan2);
151:
152:                 assertNotEquals(fan1.getFavouriteMerchandise(), fan2.getFavouriteMerchandise());
153:                 assertEquals("a", fan2.getFavouriteMerchandise().getName()); //$NON-NLS-1$
154:         }
155:
156:         @Test
157:         public void testMergeMultiContainmentReference() {
158:                 final VTableControl controlToCopyFrom = VTableFactory.eINSTANCE.createTableControl();
159:                 final VTableControl controlToCopyTo = VTableFactory.eINSTANCE.createTableControl();
160:                 final VFeaturePathDomainModelReference vcFrom = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
161:                 final VFeaturePathDomainModelReference vcTo = VViewFactory.eINSTANCE.createFeaturePathDomainModelReference();
162:                 vcFrom.setDomainModelEFeature(BowlingPackage.eINSTANCE.getMerchandise_Name());
163:                 vcTo.setDomainModelEFeature(BowlingPackage.eINSTANCE.getMerchandise_Name());
164:
165:                 final Fan fan1 = BowlingFactory.eINSTANCE.createFan();
166:                 {
167:                         final Merchandise merchandise1 = BowlingFactory.eINSTANCE.createMerchandise();
168:                         fan1.getFanMerchandise().add(merchandise1);
169:                         merchandise1.setName("a"); //$NON-NLS-1$
170:                         final Merchandise merchandise2 = BowlingFactory.eINSTANCE.createMerchandise();
171:                         fan1.getFanMerchandise().add(merchandise2);
172:                         merchandise2.setName("b"); //$NON-NLS-1$
173:                         addEobjectToResource(fan1);
174:                         final VTableDomainModelReference dmr = VTableFactory.eINSTANCE
175:                                 .createTableDomainModelReference();
176:                         dmr.setDomainModelEFeature(BowlingPackage.eINSTANCE.getFan_FanMerchandise());
177:                         controlToCopyFrom.setDomainModelReference(dmr);
178:                 }
179:
180:                 final Fan fan2 = BowlingFactory.eINSTANCE.createFan();
181:                 {
182:                         final Merchandise merchandise1 = BowlingFactory.eINSTANCE.createMerchandise();
183:                         fan2.getFanMerchandise().add(merchandise1);
184:                         merchandise1.setName("1"); //$NON-NLS-1$
185:                         final Merchandise merchandise2 = BowlingFactory.eINSTANCE.createMerchandise();
186:                         fan2.getFanMerchandise().add(merchandise2);
187:                         merchandise2.setName("2"); //$NON-NLS-1$
188:                         addEobjectToResource(fan2);
189:                         final VTableDomainModelReference dmr2 = VTableFactory.eINSTANCE
190:                                 .createTableDomainModelReference();
191:                         dmr2.setDomainModelEFeature(BowlingPackage.eINSTANCE.getFan_FanMerchandise());
192:                         controlToCopyTo.setDomainModelReference(dmr2);
193:                 }
194:
195:                 DefaultMergeUtil.copyValues(controlToCopyFrom, fan1, controlToCopyTo, fan2);
196:
197:                 assertEquals(fan1.getFanMerchandise().size(), fan2.getFanMerchandise().size());
198:                 assertNotEquals(fan1.getFanMerchandise().get(0), fan2.getFanMerchandise().get(0));
199:                 assertNotEquals(fan1.getFanMerchandise().get(1), fan2.getFanMerchandise().get(1));
200:                 assertEquals("a", fan2.getFanMerchandise().get(0).getName()); //$NON-NLS-1$
201:                 assertEquals("b", fan2.getFanMerchandise().get(1).getName()); //$NON-NLS-1$
202:         }
203:
204:         @Test
205:         public void testMergeSingleNOTContainmentReference() {
206:                 /*
207:                  * model:
208:                  * a
209:                  * |-b1 ref c1
210:                  * |-b2 ref c2
211:                  * |-c1
212:                  * |-c2
213:                  * a'
214:                  * |-b1' ref c1'
215:                  * |-b2' ref c2'
216:                  * |-c1'
217:                  * |-c2'
218:                  * what should a merge do? how do you identify the object to set the reference to?
219:                  */
220:         }
221:
222:         @Test
223:         public void testMergeMultiNOTContainmentReference() {
224:                 /*
225:                  * model:
226:                  * a
227:                  * |-b1 ref c1,c2
228:                  * |-c1
229:                  * |-c2
230:                  * a'
231:                  * |-b1' ref c1',c2'
232:                  * |-c1'
233:                  * |-c2'
234:                  * what should a merge do? how do you identify the object to set the reference to?
235:                  */
236:         }
237:
238: }