Skip to content

Package: SectionNodeSWTRenderer_Test$Get

SectionNodeSWTRenderer_Test$Get

nameinstructionbranchcomplexitylinemethod
SectionNodeSWTRenderer_Test.Get()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
byName(EObject, String)
M: 4 C: 27
87%
M: 2 C: 4
67%
M: 2 C: 2
50%
M: 1 C: 7
88%
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: * Johannes Faltermeier - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.view.spi.section.swt;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.junit.Assert.assertNull;
18:
19: import java.util.Arrays;
20: import java.util.Collections;
21: import java.util.NoSuchElementException;
22:
23: import org.eclipse.emf.common.util.TreeIterator;
24: import org.eclipse.emf.ecore.EObject;
25: import org.eclipse.emf.ecp.test.common.DefaultRealm;
26: import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
27: import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
28: import org.eclipse.emf.ecp.view.spi.model.VControl;
29: import org.eclipse.emf.ecp.view.spi.model.VElement;
30: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
31: import org.eclipse.emf.ecp.view.spi.section.model.VSection;
32: import org.eclipse.emf.ecp.view.spi.section.model.VSectionFactory;
33: import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
34: import org.eclipse.emf.ecp.view.template.style.labelwidth.model.VTLabelWidthStyleProperty;
35: import org.eclipse.emfforms.spi.common.report.ReportService;
36: import org.eclipse.emfforms.spi.swt.core.EMFFormsNoRendererException;
37: import org.eclipse.emfforms.spi.swt.core.EMFFormsRendererFactory;
38: import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
39: import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
40: import org.junit.After;
41: import org.junit.Before;
42: import org.junit.Test;
43: import org.mockito.Mockito;
44:
45: public class SectionNodeSWTRenderer_Test {
46:
47:         private DefaultRealm realm;
48:
49:         @Before
50:         public void before() {
51:                 realm = new DefaultRealm();
52:         }
53:
54:         @After
55:         public void after() {
56:                 realm.dispose();
57:         }
58:
59:         @Test
60:         public void getGridDescription() throws EMFFormsNoRendererException {
61:                 /* setup */
62:                 final VSection section = Create.section()
63:                         .withName("S1")
64:                         .withContent(
65:                                 Create.control("S1.C1"))
66:                         .withChildren(
67:                                 Create.section()
68:                                         .withName("S1.1")
69:                                         .withContent(
70:                                                 Create.control("S1.1.C1"),
71:                                                 Create.control("S1.1.C2"))
72:                                         .withChildren(
73:                                                 Create.section()
74:                                                         .withName("S1.1.1")
75:                                                         .withContent(
76:                                                                 Create.control("S1.1.1.C1"))),
77:                                 Create.section()
78:                                         .withName("S1.2")
79:                                         .withContent(
80:                                                 Create.control("S1.2.C1"),
81:                                                 Create.control("S1.2.C2"),
82:                                                 Create.control("S1.2.C3")))
83:                         .andReturn();
84:
85:                 final ViewModelContext viewModelContext = Mockito.mock(ViewModelContext.class);
86:                 final ReportService reportService = Mockito.mock(ReportService.class);
87:                 final VTViewTemplateProvider viewTemplateProvider = Mockito.mock(VTViewTemplateProvider.class);
88:
89:                 final EMFFormsRendererFactory rendererFactory = Mockito.mock(EMFFormsRendererFactory.class);
90:                 Mockito.doReturn(rendererFactory).when(viewModelContext).getService(EMFFormsRendererFactory.class);
91:
92:                 final SectionNodeSWTRenderer s11 = new SectionNodeSWTRenderer((VSection) Get.byName(section, "S1.1"),
93:                         viewModelContext, reportService, viewTemplateProvider);
94:                 Mockito.doReturn(s11).when(rendererFactory).getRendererInstance(Get.byName(section, "S1.1"), viewModelContext);
95:
96:                 final SectionLeafSWTRenderer s111 = new SectionLeafSWTRenderer((VSection) Get.byName(section, "S1.1.1"),
97:                         viewModelContext, reportService, viewTemplateProvider);
98:                 Mockito.doReturn(s111).when(rendererFactory).getRendererInstance(Get.byName(section, "S1.1.1"),
99:                         viewModelContext);
100:
101:                 final SectionLeafSWTRenderer s12 = new SectionLeafSWTRenderer((VSection) Get.byName(section, "S1.2"),
102:                         viewModelContext, reportService, viewTemplateProvider);
103:                 Mockito.doReturn(s12).when(rendererFactory).getRendererInstance(Get.byName(section, "S1.2"), viewModelContext);
104:
105:                 final VTLabelWidthStyleProperty labelWidthStyleProperty = Mockito.mock(VTLabelWidthStyleProperty.class);
106:                 Mockito.doReturn(true).when(labelWidthStyleProperty).isSetWidth();
107:                 Mockito.doReturn(137).when(labelWidthStyleProperty).getWidth();
108:
109:                 Mockito.doReturn(Collections.singleton(labelWidthStyleProperty)).when(viewTemplateProvider)
110:                         .getStyleProperties(section, viewModelContext);
111:                 Mockito.doReturn(Collections.singleton(labelWidthStyleProperty)).when(viewTemplateProvider)
112:                         .getStyleProperties(Get.byName(section, "S1.1"), viewModelContext);
113:                 Mockito.doReturn(Collections.singleton(labelWidthStyleProperty)).when(viewTemplateProvider)
114:                         .getStyleProperties(Get.byName(section, "S1.1.1"), viewModelContext);
115:                 Mockito.doReturn(Collections.singleton(labelWidthStyleProperty)).when(viewTemplateProvider)
116:                         .getStyleProperties(Get.byName(section, "S1.2"), viewModelContext);
117:
118:                 final SectionNodeSWTRenderer sectionNodeSWTRenderer = new SectionNodeSWTRenderer(section, viewModelContext,
119:                         reportService, viewTemplateProvider);
120:
121:                 /* act */
122:                 final SWTGridDescription gridDescription = sectionNodeSWTRenderer.getGridDescription(null);
123:
124:                 /* assert */
125:                 assertEquals(4, gridDescription.getColumns());
126:                 assertEquals(4, gridDescription.getRows());
127:                 for (final SWTGridCell gridCell : gridDescription.getGrid()) {
128:                         if (gridCell.getColumn() == 0) {
129:                                 assertEquals(137, gridCell.getPreferredSize().x);
130:                         } else {
131:                                 assertNull(gridCell.getPreferredSize());
132:                         }
133:                 }
134:
135:         }
136:
137:         static class Get {
138:
139:                 static VElement byName(EObject root, String name) {
140:                         final TreeIterator<EObject> allContents = root.eAllContents();
141:•                        while (allContents.hasNext()) {
142:                                 final EObject next = allContents.next();
143:•                                if (VElement.class.isInstance(next)) {
144:                                         final VElement element = VElement.class.cast(next);
145:•                                        if (name.equals(element.getName())) {
146:                                                 return element;
147:                                         }
148:                                 }
149:                         }
150:                         throw new NoSuchElementException();
151:                 }
152:         }
153:
154:         static class Create {
155:
156:                 static SectionBuilder section() {
157:                         return new SectionBuilder();
158:                 }
159:
160:                 static VControl control(String name) {
161:                         final VControl control = VViewFactory.eINSTANCE.createControl();
162:                         control.setName(name);
163:                         return control;
164:                 }
165:
166:                 static class SectionBuilder {
167:
168:                         private final VSection result = VSectionFactory.eINSTANCE.createSection();
169:
170:                         VSection andReturn() {
171:                                 return result;
172:                         }
173:
174:                         SectionBuilder withName(String name) {
175:                                 result.setName(name);
176:                                 return this;
177:                         }
178:
179:                         SectionBuilder withContent(VContainedElement... element) {
180:                                 result.getChildren().addAll(Arrays.asList(element));
181:                                 return this;
182:                         }
183:
184:                         SectionBuilder withChildren(SectionBuilder... section) {
185:                                 for (final SectionBuilder sectionBuilder : section) {
186:                                         result.getChildItems().add(sectionBuilder.andReturn());
187:                                 }
188:                                 return this;
189:                         }
190:
191:                 }
192:         }
193:
194: }