Skip to content

Package: XmlDateControlSWTBotPTest

XmlDateControlSWTBotPTest

nameinstructionbranchcomplexitylinemethod
XmlDateControlSWTBotPTest(boolean)
M: 44 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
addEditingDomain(ResourceSet)
M: 39 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 8 C: 0
0%
M: 1 C: 0
0%
afterClass()
M: 16 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
assertions(double, double)
M: 93 C: 0
0%
M: 4 C: 0
0%
M: 3 C: 0
0%
M: 25 C: 0
0%
M: 1 C: 0
0%
createDomainObject()
M: 68 C: 0
0%
M: 6 C: 0
0%
M: 4 C: 0
0%
M: 20 C: 0
0%
M: 1 C: 0
0%
createView()
M: 33 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%
data()
M: 33 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
logic()
M: 25 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 7 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2013 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: * Johannes Faltermeier - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.view.ui.editor.test.controls;
15:
16: import java.util.ArrayList;
17: import java.util.Calendar;
18: import java.util.Collection;
19: import java.util.List;
20:
21: import javax.xml.datatype.DatatypeConfigurationException;
22: import javax.xml.datatype.DatatypeConstants;
23: import javax.xml.datatype.DatatypeFactory;
24: import javax.xml.datatype.XMLGregorianCalendar;
25:
26: import org.eclipse.emf.common.command.BasicCommandStack;
27: import org.eclipse.emf.common.notify.AdapterFactory;
28: import org.eclipse.emf.common.util.URI;
29: import org.eclipse.emf.ecore.EObject;
30: import org.eclipse.emf.ecore.resource.Resource;
31: import org.eclipse.emf.ecore.resource.ResourceSet;
32: import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
33: import org.eclipse.emf.ecp.view.spi.model.VControl;
34: import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
35: import org.eclipse.emf.ecp.view.spi.model.VView;
36: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
37: import org.eclipse.emf.ecp.view.test.common.spi.GCCollectable;
38: import org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest;
39: import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
40: import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
41: import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
42: import org.eclipse.emf.emfstore.bowling.BowlingFactory;
43: import org.eclipse.emf.emfstore.bowling.BowlingPackage;
44: import org.eclipse.emf.emfstore.bowling.Referee;
45: import org.eclipse.swtbot.swt.finder.widgets.SWTBotButton;
46: import org.eclipse.swtbot.swt.finder.widgets.SWTBotDateTime;
47: import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
48: import org.junit.AfterClass;
49: import org.junit.runner.RunWith;
50: import org.junit.runners.Parameterized;
51: import org.junit.runners.Parameterized.Parameters;
52:
53: /**
54: *
55: * @author jfaltermeier
56: *
57: */
58: @RunWith(Parameterized.class)
59: public class XmlDateControlSWTBotPTest extends ECPCommonSWTBotTest {
60:
61:         private static double memBefore;
62:         private static double memAfter;
63:
64:         private final boolean isDomainCollectable;
65:
66:         private GCCollectable viewCollectable;
67:         private GCCollectable domainCollectable;
68:         private final Calendar calendar;
69:
70:         public XmlDateControlSWTBotPTest(boolean isDomainCollectable) {
71:                 this.isDomainCollectable = isDomainCollectable;
72:
73:                 // Creating date
74:                 // [DE] 02.10.1986 11:11:11:111
75:                 // [US] 10/02/1986 11:11:11:111
76:                 calendar = Calendar.getInstance();
77:                 calendar.set(Calendar.YEAR, 1986);
78:                 calendar.set(Calendar.MONTH, 9);
79:                 calendar.set(Calendar.DAY_OF_MONTH, 2);
80:                 calendar.set(Calendar.HOUR, 11);
81:                 calendar.set(Calendar.MINUTE, 11);
82:                 calendar.set(Calendar.SECOND, 11);
83:                 calendar.set(Calendar.MILLISECOND, 111);
84:         }
85:
86:         @AfterClass
87:         public static void afterClass() {
88:                 final double diff = Math.abs((memBefore - memAfter) / memBefore);
89:•                assertTrue(diff < 0.05);
90:         }
91:
92:         @Parameters
93:         public static Collection<Object[]> data() {
94:                 final List<Object[]> data = new ArrayList<Object[]>();
95:•                for (int i = 0; i < 24; i++) {
96:                         data.add(new Boolean[] { false });
97:                 }
98:                 data.add(new Boolean[] { true });
99:                 return data;
100:         }
101:
102:         /**
103:          * {@inheritDoc}
104:          *
105:          * @see org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest#logic()
106:          */
107:         @Override
108:         public void logic() {
109:                 final SWTBotText text = bot.text();
110:                 text.setText("01.01.1989");
111:                 final SWTBotButton button = bot.button();
112:                 button.click();
113:                 final SWTBotDateTime dateTime = bot.dateTime();
114:                 dateTime.setDate(calendar.getTime());
115:         }
116:
117:         @Override
118:         public void assertions(double before, double after) {
119:                 XmlDateControlSWTBotPTest.memBefore += before;
120:                 XmlDateControlSWTBotPTest.memAfter += after;
121:
122:•                if (getDomainObject() != null) {
123:                         final XMLGregorianCalendar cal = (XMLGregorianCalendar) getDomainObject().eGet(
124:                                 BowlingPackage.eINSTANCE.getReferee_DateOfBirth(), true);
125:                         assertEquals(DatatypeConstants.FIELD_UNDEFINED, cal.getTimezone());
126:                         assertEquals(DatatypeConstants.FIELD_UNDEFINED, cal.getHour());
127:                         assertEquals(DatatypeConstants.FIELD_UNDEFINED, cal.getMinute());
128:                         assertEquals(DatatypeConstants.FIELD_UNDEFINED, cal.getSecond());
129:                         assertEquals(DatatypeConstants.FIELD_UNDEFINED, cal.getMillisecond());
130:                         assertEquals(1986, cal.getYear());
131:                         assertEquals(10, cal.getMonth());
132:                         assertEquals(2, cal.getDay());
133:                         assertTrue("More than four adapter left on domain model element after dispose of ECPSWTView: "
134:                                 + getDomainObject().eAdapters().size()
135:                                 + " adapters. Not all adapters can be removed, but it's maybe time to get suspicious.",
136:•                                getDomainObject()
137:                                         .eAdapters().size() < 5);
138:                 }
139:
140:                 assertTrue(getSWTViewCollectable().isCollectable());
141:                 unsetSWTViewCollectable();
142:                 unsetDomainObject();
143:                 // if (isDomainCollectable) {
144:                 // }
145:                 // domainCollectable = null;
146:                 assertTrue(viewCollectable.isCollectable());
147:                 viewCollectable = null;
148:                 assertTrue(domainCollectable.isCollectable());
149:         }
150:
151:         /**
152:          * {@inheritDoc}
153:          *
154:          * @see org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest#createDomainObject()
155:          */
156:         @Override
157:         public EObject createDomainObject() {
158:                 Referee ref = (Referee) getDomainObject();
159:
160:•                if (isDomainCollectable) {
161:                         // remove reference to domain object, since gc will be tested
162:                         unsetDomainObject();
163:                 }
164:
165:•                if (ref == null) {
166:                         ref = BowlingFactory.eINSTANCE.createReferee();
167:                         DatatypeFactory datatypeFactory;
168:                         try {
169:                                 datatypeFactory = DatatypeFactory.newInstance();
170:                         } catch (final DatatypeConfigurationException ex) {
171:                                 throw new RuntimeException(ex);
172:                         }
173:                         final XMLGregorianCalendar cal = datatypeFactory.newXMLGregorianCalendarDate(1960, 7, 7, 60);
174:                         ref.setDateOfBirth(cal);
175:                         final ResourceSet resourceSet = new ResourceSetImpl();
176:                         final Resource resource = resourceSet.createResource(URI.createFileURI("foo.xmi"));
177:                         resource.getContents().add(ref);
178:                         addEditingDomain(resourceSet);
179:                         memBefore = 0d;
180:                         memAfter = 0d;
181:                 }
182:
183:•                if (!isDomainCollectable) {
184:                         setDomainObject(ref);
185:                 }
186:
187:                 domainCollectable = new GCCollectable(ref);
188:                 return ref;
189:         }
190:
191:         private void addEditingDomain(ResourceSet resourceSet) {
192:                 AdapterFactory adapterFactory = new ComposedAdapterFactory(
193:                         ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
194:                 adapterFactory = new ComposedAdapterFactory(new AdapterFactory[] { adapterFactory,
195:                         new ReflectiveItemProviderAdapterFactory() });
196:                 final AdapterFactoryEditingDomain domain = new AdapterFactoryEditingDomain(adapterFactory,
197:                         new BasicCommandStack(), resourceSet);
198:                 resourceSet.eAdapters().add(new AdapterFactoryEditingDomain.EditingDomainProvider(domain));
199:         }
200:
201:         /**
202:          * {@inheritDoc}
203:          *
204:          * @see org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest#createView()
205:          */
206:         @Override
207:         public VView createView() {
208:                 final VView view = VViewFactory.eINSTANCE.createView();
209:                 view.setRootEClass(BowlingPackage.eINSTANCE.getGame());
210:
211:                 final VControl control = VViewFactory.eINSTANCE.createControl();
212:                 final VFeaturePathDomainModelReference domainRef = VViewFactory.eINSTANCE
213:                         .createFeaturePathDomainModelReference();
214:                 domainRef.setDomainModelEFeature(BowlingPackage.eINSTANCE.getReferee_DateOfBirth());
215:                 control.setDomainModelReference(domainRef);
216:                 view.getChildren().add(control);
217:
218:                 viewCollectable = new GCCollectable(view);
219:                 return view;
220:         }
221:
222: }