Skip to content

Package: EMFFormsSpreadsheetExporterImpl_ITest$4

EMFFormsSpreadsheetExporterImpl_ITest$4

nameinstructionbranchcomplexitylinemethod
getViewModel(EObject, VViewModelProperties)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
{...}
M: 0 C: 6
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-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: * Eugen Neufeld - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.spreadsheet.core;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.junit.Assert.fail;
18:
19: import java.io.IOException;
20: import java.util.Arrays;
21: import java.util.Collections;
22: import java.util.Date;
23:
24: import javax.xml.datatype.DatatypeConfigurationException;
25:
26: import org.apache.poi.ss.usermodel.Cell;
27: import org.apache.poi.ss.usermodel.DateUtil;
28: import org.apache.poi.ss.usermodel.Row;
29: import org.apache.poi.ss.usermodel.Sheet;
30: import org.apache.poi.ss.usermodel.Workbook;
31: import org.eclipse.emf.common.util.EList;
32: import org.eclipse.emf.ecore.EObject;
33: import org.eclipse.emf.ecore.EReference;
34: import org.eclipse.emf.ecore.EStructuralFeature;
35: import org.eclipse.emf.ecore.xml.type.internal.XMLCalendar;
36: import org.eclipse.emf.ecp.makeithappen.model.task.Gender;
37: import org.eclipse.emf.ecp.makeithappen.model.task.Nationality;
38: import org.eclipse.emf.ecp.makeithappen.model.task.Task;
39: import org.eclipse.emf.ecp.makeithappen.model.task.TaskFactory;
40: import org.eclipse.emf.ecp.makeithappen.model.task.TaskPackage;
41: import org.eclipse.emf.ecp.makeithappen.model.task.User;
42: import org.eclipse.emf.ecp.test.common.DefaultRealm;
43: import org.eclipse.emf.ecp.view.spi.model.VControl;
44: import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
45: import org.eclipse.emf.ecp.view.spi.model.VView;
46: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
47: import org.eclipse.emf.ecp.view.spi.model.VViewModelProperties;
48: import org.eclipse.emfforms.internal.spreadsheet.core.transfer.EMFFormsSpreadsheetExporterImpl;
49: import org.eclipse.emfforms.internal.spreadsheet.core.transfer.EMFFormsSpreadsheetExporterImpl.ViewProvider;
50: import org.eclipse.emfforms.spi.spreadsheet.core.transfer.EMFFormsSpreadsheetExporter;
51: import org.junit.After;
52: import org.junit.Before;
53: import org.junit.Test;
54:
55: public class EMFFormsSpreadsheetExporterImpl_ITest {
56:
57:         private DefaultRealm realm;
58:
59:         @Before
60:         public void setup() {
61:                 realm = new DefaultRealm();
62:         }
63:
64:         @After
65:         public void tearDown() {
66:                 realm.dispose();
67:         }
68:
69:         @Test
70:         public void testRenderTemplate() throws DatatypeConfigurationException, IOException {
71:                 final EMFFormsSpreadsheetExporter viewRenderer = new EMFFormsSpreadsheetExporterImpl(new ViewProvider() {
72:                         @Override
73:                         public VView getViewModel(EObject viewEobject, VViewModelProperties properties) {
74:                                 return getView();
75:                         }
76:                 });
77:                 final Workbook wb = viewRenderer.render(null, null, null);
78:                 assertEquals(2, wb.getSheetAt(0).getLastRowNum());
79:         }
80:
81:         @Test
82:         public void testRenderMultiple() throws DatatypeConfigurationException {
83:                 final EMFFormsSpreadsheetExporter viewRenderer = new EMFFormsSpreadsheetExporterImpl(new ViewProvider() {
84:                         @Override
85:                         public VView getViewModel(EObject viewEobject, VViewModelProperties properties) {
86:                                 return getView();
87:                         }
88:                 });
89:                 final User user = getDomainModel();
90:                 final User user2 = getDomainModel();
91:                 final Workbook wb = viewRenderer.render(Arrays.asList(user, user2), null, null);
92:                 assertEquals(4, wb.getSheetAt(0).getLastRowNum());
93:         }
94:
95:         @Test
96:         public void testRenderMultipleInvalid() throws DatatypeConfigurationException {
97:                 final EMFFormsSpreadsheetExporter viewRenderer = new EMFFormsSpreadsheetExporterImpl(new ViewProvider() {
98:                         @Override
99:                         public VView getViewModel(EObject viewEobject, VViewModelProperties properties) {
100:                                 return getView();
101:                         }
102:                 });
103:                 final User user = getDomainModel();
104:                 final Task task = TaskFactory.eINSTANCE.createTask();
105:                 final Workbook wb = viewRenderer.render(Arrays.asList(user, task), null, null);
106:                 assertEquals(3, wb.getSheetAt(0).getLastRowNum());
107:         }
108:
109:         @Test
110:         public void testRender() throws DatatypeConfigurationException {
111:                 final EMFFormsSpreadsheetExporter viewRenderer = new EMFFormsSpreadsheetExporterImpl(new ViewProvider() {
112:                         @Override
113:                         public VView getViewModel(EObject viewEobject, VViewModelProperties properties) {
114:                                 return getView();
115:                         }
116:                 });
117:                 final User user = getDomainModel();
118:                 final Workbook wb = viewRenderer.render(Collections.singleton(user), null, null);
119:                 final Sheet sheet = wb.getSheetAt(0);
120:                 final Row row = sheet.getRow(3);
121:                 assertEquals(11, row.getLastCellNum());
122:                 for (int i = 0; i < 10; i++) {
123:                         final Cell cell = row.getCell(i + 1);
124:                         switch (i) {
125:                         case 0:
126:                                 assertEquals(user.getFirstName(), cell.getStringCellValue());
127:                                 break;
128:                         case 1:
129:                                 assertEquals(user.getLastName(), cell.getStringCellValue());
130:                                 break;
131:                         case 2:
132:                                 assertEquals(user.getGender().toString(), cell.getStringCellValue());
133:                                 break;
134:                         case 3:
135:                                 assertEquals(user.isActive(), cell.getBooleanCellValue());
136:                                 break;
137:                         case 4:
138:                                 assertEquals(user.getTimeOfRegistration(), cell.getDateCellValue());
139:                                 break;
140:                         case 5:
141:                                 assertEquals(user.getWeight(), cell.getNumericCellValue(), 0);
142:                                 break;
143:                         case 6:
144:                                 assertEquals(user.getHeigth(), Double.valueOf(cell.getNumericCellValue()).intValue());
145:                                 break;
146:                         case 7:
147:                                 assertEquals(user.getNationality().toString(), cell.getStringCellValue());
148:                                 break;
149:                         case 8:
150:                                 assertEquals(
151:                                         user.getDateOfBirth().toGregorianCalendar().getTime(),
152:                                         DateUtil.getJavaCalendarUTC(cell.getNumericCellValue(), false).getTime());
153:                                 break;
154:                         case 9:
155:                                 assertEquals(user.getEmail(), cell.getStringCellValue());
156:                                 break;
157:                         default:
158:                                 fail();
159:                         }
160:                 }
161:         }
162:
163:         private User getDomainModel() throws DatatypeConfigurationException {
164:                 final User user = TaskFactory.eINSTANCE.createUser();
165:                 user.setEmail("myEMail@test.de"); //$NON-NLS-1$
166:                 user.setFirstName("Bob"); //$NON-NLS-1$
167:                 user.setGender(Gender.MALE);
168:                 user.setHeigth(2);
169:                 user.setLastName("Smith"); //$NON-NLS-1$
170:                 user.setNationality(Nationality.US);
171:                 user.setTimeOfRegistration(new Date());
172:                 user.setWeight(1.45);
173:                 user.setDateOfBirth(new XMLCalendar(new Date(), XMLCalendar.DATE));
174:                 return user;
175:         }
176:
177:         private VView getView() {
178:                 final VView view = VViewFactory.eINSTANCE.createView();
179:                 view.setRootEClass(TaskPackage.eINSTANCE.getUser());
180:                 final EList<EStructuralFeature> structuralFeatures = TaskPackage.eINSTANCE.getUser()
181:                         .getEAllStructuralFeatures();
182:                 for (final EStructuralFeature feature : structuralFeatures) {
183:                         if (EReference.class.isInstance(feature)) {
184:                                 continue;
185:                         }
186:                         final VControl control = VViewFactory.eINSTANCE.createControl();
187:                         final VFeaturePathDomainModelReference modelReference = VViewFactory.eINSTANCE
188:                                 .createFeaturePathDomainModelReference();
189:                         modelReference.setDomainModelEFeature(feature);
190:                         control.setDomainModelReference(modelReference);
191:                         view.getChildren().add(control);
192:                 }
193:                 return view;
194:         }
195:
196: }