Skip to content

Package: CategorizationRenderer_PTest

CategorizationRenderer_PTest

nameinstructionbranchcomplexitylinemethod
CategorizationRenderer_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%
lambda$0(Set, InvocationOnMock)
M: 0 C: 8
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$1(Set, InvocationOnMock)
M: 0 C: 8
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$2(ReportService, EMFFormsRendererFactory, InvocationOnMock)
M: 0 C: 20
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 5
100%
M: 0 C: 1
100%
mockRendererFactory(ReportService)
M: 12 C: 20
63%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 5
71%
M: 0 C: 1
100%
mockViewModelContext(Set)
M: 0 C: 22
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
testCategorizationElementTabRenderer()
M: 0 C: 80
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 20
100%
M: 0 C: 1
100%
testCategorizationElementTreeRenderer()
M: 0 C: 101
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 20
100%
M: 0 C: 1
100%
testCategorizationElementTreeRendererReadOnlyBehavior_CategorizationIsReadOnly()
M: 0 C: 75
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
testCategorizationElementTreeRendererReadOnlyBehavior_ViewIsReadOnly()
M: 0 C: 75
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 21
100%
M: 0 C: 1
100%
testCompositeCategoryElementTabRenderer()
M: 0 C: 96
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 24
100%
M: 0 C: 1
100%
testCompositeCategoryTreeRenderer()
M: 0 C: 123
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 24
100%
M: 0 C: 1
100%
testTreeRendererSingleSelection()
M: 0 C: 107
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 25
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2019 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: * Christian W. Damus - bug 552852
14: ******************************************************************************/
15: package org.eclipse.emf.ecp.view.spi.categorization.swt;
16:
17: import static java.util.Collections.singleton;
18: import static org.eclipse.emf.ecp.view.test.common.spi.EMFMocking.eMock;
19: import static org.hamcrest.CoreMatchers.anything;
20: import static org.hamcrest.CoreMatchers.hasItem;
21: import static org.hamcrest.CoreMatchers.not;
22: import static org.hamcrest.MatcherAssert.assertThat;
23: import static org.junit.Assert.assertEquals;
24: import static org.junit.Assert.assertTrue;
25: import static org.junit.Assert.fail;
26: import static org.mockito.Matchers.any;
27: import static org.mockito.Matchers.isA;
28: import static org.mockito.Mockito.doAnswer;
29: import static org.mockito.Mockito.mock;
30: import static org.mockito.Mockito.when;
31:
32: import java.util.HashSet;
33: import java.util.Set;
34:
35: import org.eclipse.emf.common.util.BasicEList;
36: import org.eclipse.emf.common.util.EList;
37: import org.eclipse.emf.common.util.TreeIterator;
38: import org.eclipse.emf.ecore.EObject;
39: import org.eclipse.emf.ecp.ui.view.ECPRendererException;
40: import org.eclipse.emf.ecp.ui.view.swt.ECPSWTView;
41: import org.eclipse.emf.ecp.ui.view.swt.ECPSWTViewRenderer;
42: import org.eclipse.emf.ecp.view.categorization.swt.test.CategoryRendererTestHelper;
43: import org.eclipse.emf.ecp.view.spi.categorization.model.VAbstractCategorization;
44: import org.eclipse.emf.ecp.view.spi.categorization.model.VCategorization;
45: import org.eclipse.emf.ecp.view.spi.categorization.model.VCategorizationElement;
46: import org.eclipse.emf.ecp.view.spi.categorization.model.VCategorizationFactory;
47: import org.eclipse.emf.ecp.view.spi.categorization.model.VCategory;
48: import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
49: import org.eclipse.emf.ecp.view.spi.context.ViewModelContextFactory;
50: import org.eclipse.emf.ecp.view.spi.model.VView;
51: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
52: import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
53: import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
54: import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
55: import org.eclipse.emf.ecp.view.test.common.swt.spi.DatabindingClassRunner;
56: import org.eclipse.emf.emfstore.bowling.BowlingFactory;
57: import org.eclipse.emf.emfstore.bowling.Player;
58: import org.eclipse.emfforms.spi.common.report.ReportService;
59: import org.eclipse.emfforms.spi.swt.core.EMFFormsNoRendererException;
60: import org.eclipse.emfforms.spi.swt.core.EMFFormsRendererFactory;
61: import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
62: import org.eclipse.swt.custom.CTabFolder;
63: import org.eclipse.swt.custom.ScrolledComposite;
64: import org.eclipse.swt.layout.FillLayout;
65: import org.eclipse.swt.widgets.Composite;
66: import org.eclipse.swt.widgets.Control;
67: import org.eclipse.swt.widgets.Shell;
68: import org.eclipse.swt.widgets.Tree;
69: import org.eclipse.swt.widgets.TreeItem;
70: import org.junit.Test;
71: import org.junit.runner.RunWith;
72:
73: /**
74: * @author Eugen
75: *
76: */
77: @RunWith(DatabindingClassRunner.class)
78: public class CategorizationRenderer_PTest {
79:
80:         @Test
81:         public void testCategorizationElementTreeRenderer() throws NoRendererFoundException,
82:                 NoPropertyDescriptorFoundExeption {
83:                 final ReportService reportService = mock(ReportService.class);
84:                 final EMFFormsRendererFactory emfFormsRendererFactory = mock(EMFFormsRendererFactory.class);
85:
86:                 final SWTGridCell gridCell = mock(SWTGridCell.class);
87:                 final Shell shell = new Shell();
88:                 final VCategorizationElement categorizationElement = mock(VCategorizationElement.class);
89:                 final EList<VAbstractCategorization> categorizations = new BasicEList<VAbstractCategorization>();
90:                 when(categorizationElement.getCategorizations()).thenReturn(categorizations);
91:                 @SuppressWarnings("unchecked")
92:                 final TreeIterator<EObject> iterator = mock(TreeIterator.class);
93:                 when(iterator.hasNext()).thenReturn(false);
94:                 when(categorizationElement.eAllContents()).thenReturn(iterator);
95:                 final ViewModelContext vmc = mock(ViewModelContext.class);
96:                 final SWTCategorizationElementRenderer categorizatrionElementRenderer = new SWTCategorizationElementRenderer(
97:                         categorizationElement, vmc, reportService, emfFormsRendererFactory);
98:                 categorizatrionElementRenderer.init();
99:                 final Control render = categorizatrionElementRenderer.render(gridCell, shell);
100:                 assertTrue(Composite.class.isInstance(render));
101:                 assertEquals(2, Composite.class.cast(render).getChildren().length);
102:                 assertTrue(Tree.class.isInstance(Composite.class.cast(render).getChildren()[0]));
103:                 assertTrue(ScrolledComposite.class.isInstance(Composite.class.cast(render).getChildren()[1]));
104:         }
105:
106:         @Test
107:         public void testCategorizationElementTabRenderer() throws NoRendererFoundException,
108:                 NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
109:
110:                 final Set<Object> contextUsers = new HashSet<>();
111:
112:                 final ReportService reportService = mock(ReportService.class);
113:                 final EMFFormsRendererFactory emfFormsRendererFactory = mockRendererFactory(reportService);
114:
115:                 final SWTGridCell gridCell = mock(SWTGridCell.class);
116:                 final Shell shell = new Shell();
117:                 final VCategorizationElement categorizationElement = mock(VCategorizationElement.class);
118:                 final EList<VAbstractCategorization> categorizations = new BasicEList<VAbstractCategorization>();
119:                 categorizations.add(eMock(VCategory.class));
120:                 when(categorizationElement.getCategorizations()).thenReturn(categorizations);
121:                 final ViewModelContext vmc = mockViewModelContext(contextUsers);
122:                 final VTViewTemplateProvider viewTemplateProvider = mock(VTViewTemplateProvider.class);
123:                 final CategorizationElementTabbedSWTRenderer categorizatrionElementRenderer = new CategorizationElementTabbedSWTRenderer(
124:                         categorizationElement, vmc, reportService, emfFormsRendererFactory, viewTemplateProvider);
125:                 categorizatrionElementRenderer.init();
126:                 final Control render = categorizatrionElementRenderer.render(gridCell, shell);
127:                 categorizatrionElementRenderer.finalizeRendering(shell);
128:                 assertTrue(CTabFolder.class.isInstance(render));
129:
130:                 shell.dispose();
131:                 assertThat("Some context user remains", contextUsers, not(hasItem(anything())));
132:         }
133:
134:         @Test
135:         public void testCompositeCategoryTreeRenderer() throws NoRendererFoundException,
136:                 NoPropertyDescriptorFoundExeption {
137:                 final ReportService reportService = mock(ReportService.class);
138:                 final EMFFormsRendererFactory emfFormsRendererFactory = mock(EMFFormsRendererFactory.class);
139:
140:                 final SWTGridCell gridCell = mock(SWTGridCell.class);
141:                 final Shell shell = new Shell();
142:                 final VCategorizationElement categorizationElement = mock(VCategorizationElement.class);
143:                 final EList<VAbstractCategorization> categorizations = new BasicEList<VAbstractCategorization>();
144:                 final VCategorization categorization = mock(VCategorization.class);
145:                 categorizations.add(categorization);
146:                 when(categorization.getCategorizations()).thenReturn(new BasicEList<VAbstractCategorization>());
147:                 when(categorizationElement.getCategorizations()).thenReturn(categorizations);
148:                 @SuppressWarnings("unchecked")
149:                 final TreeIterator<EObject> iterator = mock(TreeIterator.class);
150:                 when(iterator.hasNext()).thenReturn(false);
151:                 when(categorization.eAllContents()).thenReturn(iterator);
152:
153:                 when(categorization.eContainer()).thenReturn(categorizationElement);
154:
155:                 final ViewModelContext vmc = mock(ViewModelContext.class);
156:                 final CompositeCategoryJFaceTreeRenderer categorizatrionElementRenderer = new CompositeCategoryJFaceTreeRenderer(
157:                         categorization, vmc, reportService, emfFormsRendererFactory);
158:                 categorizatrionElementRenderer.init();
159:                 final Control render = categorizatrionElementRenderer.render(gridCell, shell);
160:                 assertTrue(Composite.class.isInstance(render));
161:                 assertEquals(2, Composite.class.cast(render).getChildren().length);
162:                 assertTrue(Tree.class.isInstance(Composite.class.cast(render).getChildren()[0]));
163:                 assertTrue(ScrolledComposite.class.isInstance(Composite.class.cast(render).getChildren()[1]));
164:         }
165:
166:         @Test
167:         public void testTreeRendererSingleSelection() throws ECPRendererException {
168:                 final VView view = VViewFactory.eINSTANCE.createView();
169:
170:                 final VCategorizationElement categorizationElement = VCategorizationFactory.eINSTANCE
171:                         .createCategorizationElement();
172:
173:                 final VCategory category1 = VCategorizationFactory.eINSTANCE.createCategory();
174:                 final VCategory category2 = VCategorizationFactory.eINSTANCE.createCategory();
175:
176:                 final VCategorization categorization = VCategorizationFactory.eINSTANCE.createCategorization();
177:                 categorization.getCategorizations().add(category1);
178:
179:                 categorizationElement.getCategorizations().add(categorization);
180:                 final VCategorization compositeCategory = VCategorizationFactory.eINSTANCE.createCategorization();
181:                 compositeCategory.getCategorizations().add(category2);
182:
183:                 categorizationElement.getCategorizations().add(compositeCategory);
184:
185:                 view.getChildren().add(categorizationElement);
186:
187:                 final Shell shell = new Shell();
188:                 shell.setLayout(new FillLayout());
189:                 final Player player = BowlingFactory.eINSTANCE.createPlayer();
190:
191:                 final ViewModelContext vmc = ViewModelContextFactory.INSTANCE.createViewModelContext(view, player);
192:                 final ECPSWTView ecpSwtView = ECPSWTViewRenderer.INSTANCE.render(shell, vmc);
193:                 final Tree tree = CategoryRendererTestHelper.getTree(ecpSwtView.getSWTControl());
194:
195:                 tree.setSelection(tree.getItems());
196:                 assertEquals("Categorization Tree allows multi selection", 0, tree.getSelectionCount());
197:                 final TreeItem[] items = tree.getItems();
198:•                for (final TreeItem treeItem : items) {
199:                         tree.setSelection(treeItem);
200:                         assertEquals(1, tree.getSelectionCount());
201:                 }
202:
203:         }
204:
205:         @Test
206:         public void testCompositeCategoryElementTabRenderer() throws NoRendererFoundException,
207:                 NoPropertyDescriptorFoundExeption {
208:
209:                 final Set<Object> contextUsers = new HashSet<>();
210:
211:                 final ReportService reportService = mock(ReportService.class);
212:                 final EMFFormsRendererFactory emfFormsRendererFactory = mockRendererFactory(reportService);
213:
214:                 final SWTGridCell gridCell = mock(SWTGridCell.class);
215:                 final Shell shell = new Shell();
216:                 final VCategorizationElement categorizationElement = mock(VCategorizationElement.class);
217:                 final EList<VAbstractCategorization> categorizations = new BasicEList<VAbstractCategorization>();
218:                 final VCategorization categorization = mock(VCategorization.class);
219:                 categorizations.add(categorization);
220:                 final EList<VAbstractCategorization> tabs = new BasicEList<VAbstractCategorization>(
221:                         singleton(eMock(VCategory.class)));
222:                 when(categorization.getCategorizations()).thenReturn(tabs);
223:                 when(categorizationElement.getCategorizations()).thenReturn(categorizations);
224:                 final ViewModelContext vmc = mockViewModelContext(contextUsers);
225:                 final VTViewTemplateProvider viewTemplateProvider = mock(VTViewTemplateProvider.class);
226:                 final CompositeCategorySWTTabRenderer categorizatrionElementRenderer = new CompositeCategorySWTTabRenderer(
227:                         categorization, vmc, reportService, emfFormsRendererFactory, viewTemplateProvider);
228:                 categorizatrionElementRenderer.init();
229:                 final Control render = categorizatrionElementRenderer.render(gridCell, shell);
230:                 categorizatrionElementRenderer.finalizeRendering(shell);
231:                 assertTrue(CTabFolder.class.isInstance(render));
232:
233:                 shell.dispose();
234:                 assertThat("Some context user remains", contextUsers, not(hasItem(anything())));
235:         }
236:
237:         @Test
238:         public void testCategorizationElementTreeRendererReadOnlyBehavior_ViewIsReadOnly() throws ECPRendererException {
239:                 final VView view = VViewFactory.eINSTANCE.createView();
240:                 view.setReadonly(true);
241:
242:                 final VCategorizationElement categorizationElement = VCategorizationFactory.eINSTANCE
243:                         .createCategorizationElement();
244:
245:                 final VCategory category1 = VCategorizationFactory.eINSTANCE.createCategory();
246:
247:                 final VCategorization categorization = VCategorizationFactory.eINSTANCE.createCategorization();
248:                 categorization.getCategorizations().add(category1);
249:
250:                 categorizationElement.getCategorizations().add(categorization);
251:                 final VCategorization compositeCategory = VCategorizationFactory.eINSTANCE.createCategorization();
252:
253:                 categorizationElement.getCategorizations().add(compositeCategory);
254:
255:                 view.getChildren().add(categorizationElement);
256:
257:                 final Shell shell = new Shell();
258:                 shell.setLayout(new FillLayout());
259:                 final Player player = BowlingFactory.eINSTANCE.createPlayer();
260:
261:                 final ViewModelContext vmc = ViewModelContextFactory.INSTANCE.createViewModelContext(view, player);
262:                 final ECPSWTView ecpSwtView = ECPSWTViewRenderer.INSTANCE.render(shell, vmc);
263:                 final Tree tree = CategoryRendererTestHelper.getTree(ecpSwtView.getSWTControl());
264:                 final Composite detailComposite = CategoryRendererTestHelper.getDetailComposite(ecpSwtView.getSWTControl());
265:
266:                 assertTrue(tree.isEnabled());
267:                 assertTrue(detailComposite.isEnabled());
268:         }
269:
270:         @Test
271:         public void testCategorizationElementTreeRendererReadOnlyBehavior_CategorizationIsReadOnly()
272:                 throws ECPRendererException {
273:                 final VView view = VViewFactory.eINSTANCE.createView();
274:
275:                 final VCategorizationElement categorizationElement = VCategorizationFactory.eINSTANCE
276:                         .createCategorizationElement();
277:                 categorizationElement.setReadonly(true);
278:
279:                 final VCategory category1 = VCategorizationFactory.eINSTANCE.createCategory();
280:
281:                 final VCategorization categorization = VCategorizationFactory.eINSTANCE.createCategorization();
282:                 categorization.getCategorizations().add(category1);
283:
284:                 categorizationElement.getCategorizations().add(categorization);
285:                 final VCategorization compositeCategory = VCategorizationFactory.eINSTANCE.createCategorization();
286:
287:                 categorizationElement.getCategorizations().add(compositeCategory);
288:
289:                 view.getChildren().add(categorizationElement);
290:
291:                 final Shell shell = new Shell();
292:                 shell.setLayout(new FillLayout());
293:                 final Player player = BowlingFactory.eINSTANCE.createPlayer();
294:
295:                 final ViewModelContext vmc = ViewModelContextFactory.INSTANCE.createViewModelContext(view, player);
296:                 final ECPSWTView ecpSwtView = ECPSWTViewRenderer.INSTANCE.render(shell, vmc);
297:                 final Tree tree = CategoryRendererTestHelper.getTree(ecpSwtView.getSWTControl());
298:                 final Composite detailComposite = CategoryRendererTestHelper.getDetailComposite(ecpSwtView.getSWTControl());
299:
300:                 assertTrue(tree.isEnabled());
301:                 assertTrue(detailComposite.isEnabled());
302:         }
303:
304:         //
305:         // Test framework
306:         //
307:
308:         ViewModelContext mockViewModelContext(Set<Object> users) {
309:                 final ViewModelContext result = mock(ViewModelContext.class);
310:                 doAnswer(invocation -> users.add(invocation.getArguments()[0])).when(result).addContextUser(any());
311:                 doAnswer(invocation -> users.remove(invocation.getArguments()[0])).when(result).removeContextUser(any());
312:                 return result;
313:         }
314:
315:         EMFFormsRendererFactory mockRendererFactory(ReportService reportService) {
316:                 final EMFFormsRendererFactory result = mock(EMFFormsRendererFactory.class);
317:                 try {
318:                         when(result.getRendererInstance(isA(VCategory.class), any()))
319:                                 .thenAnswer(invocation -> {
320:                                         final SWTCategoryRenderer renderer = new SWTCategoryRenderer(
321:                                                 (VCategory) invocation.getArguments()[0],
322:                                                 (ViewModelContext) invocation.getArguments()[1], reportService, result);
323:                                         renderer.init();
324:                                         return renderer;
325:                                 });
326:                 } catch (final EMFFormsNoRendererException e) {
327:                         e.printStackTrace();
328:                         fail("Exception in mock set-up: " + e.getMessage());
329:                 }
330:
331:                 return result;
332:         }
333: }