Skip to content

Package: ViewRenderer_PTest$2

ViewRenderer_PTest$2

nameinstructionbranchcomplexitylinemethod
answer(InvocationOnMock)
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
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.emf.ecp.view.internal.core.swt.renderer;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.junit.Assert.assertTrue;
18: import static org.mockito.Matchers.any;
19: import static org.mockito.Mockito.mock;
20: import static org.mockito.Mockito.when;
21:
22: import org.eclipse.emf.common.util.BasicEList;
23: import org.eclipse.emf.ecp.test.common.DefaultRealm;
24: import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
25: import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
26: import org.eclipse.emf.ecp.view.spi.model.VElement;
27: import org.eclipse.emf.ecp.view.spi.model.VView;
28: import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
29: import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
30: import org.eclipse.emfforms.spi.common.locale.EMFFormsLocaleProvider;
31: import org.eclipse.emfforms.spi.common.report.ReportService;
32: import org.eclipse.emfforms.spi.swt.core.AbstractSWTRenderer;
33: import org.eclipse.emfforms.spi.swt.core.EMFFormsNoRendererException;
34: import org.eclipse.emfforms.spi.swt.core.EMFFormsRendererFactory;
35: import org.eclipse.emfforms.spi.swt.core.layout.GridDescriptionFactory;
36: import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
37: import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
38: import org.eclipse.swt.SWT;
39: import org.eclipse.swt.layout.GridData;
40: import org.eclipse.swt.widgets.Composite;
41: import org.eclipse.swt.widgets.Control;
42: import org.eclipse.swt.widgets.Shell;
43: import org.junit.After;
44: import org.junit.Before;
45: import org.junit.BeforeClass;
46: import org.junit.Test;
47: import org.mockito.Mockito;
48: import org.mockito.invocation.InvocationOnMock;
49: import org.mockito.stubbing.Answer;
50:
51: public class ViewRenderer_PTest {
52:
53:         private ViewSWTRenderer viewRenderer;
54:         private VView view;
55:         private ViewModelContext context;
56:         private Shell shell;
57:         private EMFFormsRendererFactory rendererFactory;
58:         private DefaultRealm realm;
59:
60:         @BeforeClass
61:         public static void setupClass() {
62:         }
63:
64:         @Before
65:         public void setUp() {
66:                 realm = new DefaultRealm();
67:                 final ReportService reportService = mock(ReportService.class);
68:                 rendererFactory = mock(EMFFormsRendererFactory.class);
69:                 final EMFFormsLocaleProvider localeProvider = mock(EMFFormsLocaleProvider.class);
70:                 view = Mockito.mock(VView.class);
71:
72:                 context = Mockito.mock(ViewModelContext.class);
73:                 shell = new Shell();
74:                 viewRenderer = new ViewSWTRenderer(view, context, reportService, rendererFactory,
75:                         localeProvider);
76:                 viewRenderer.init();
77:         }
78:
79:         @After
80:         public void tearDown() {
81:                 realm.dispose();
82:                 shell.dispose();
83:         }
84:
85:         @Test
86:         public void testGridDescription() throws NoRendererFoundException,
87:                 NoPropertyDescriptorFoundExeption {
88:                 final SWTGridDescription gridDescription = viewRenderer.getGridDescription(GridDescriptionFactory.INSTANCE
89:                         .createEmptyGridDescription());
90:                 assertEquals(1, gridDescription.getColumns());
91:                 assertEquals(1, gridDescription.getRows());
92:         }
93:
94:         @Test
95:         public void testEmptyView() throws NoRendererFoundException,
96:                 NoPropertyDescriptorFoundExeption {
97:                 when(view.getChildren())
98:                         .thenReturn(new BasicEList<VContainedElement>());
99:                 final Control render = viewRenderer.render(new SWTGridCell(0, 0, viewRenderer), shell);
100:                 assertTrue(Composite.class.isInstance(render));
101:                 assertEquals(0, Composite.class.cast(render).getChildren().length);
102:         }
103:
104:         @Test
105:         public void testMultipleSimpleCompositeView() throws NoRendererFoundException,
106:                 NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
107:                 final BasicEList<VContainedElement> basicEList = new BasicEList<>();
108:                 final VContainedElement control1 = mock(VContainedElement.class);
109:                 final VContainedElement control2 = mock(VContainedElement.class);
110:                 basicEList.add(control1);
111:                 basicEList.add(control2);
112:                 when(view.getChildren()).thenReturn(basicEList);
113:
114:                 final AbstractSWTRenderer<VElement> mockRenderer1 = createCompositeMockRenderer(control1, 1);
115:                 final AbstractSWTRenderer<VElement> mockRenderer2 = createCompositeMockRenderer(control2, 1);
116:
117:                 when(rendererFactory.getRendererInstance(control1, context)).thenReturn(mockRenderer1);
118:                 when(rendererFactory.getRendererInstance(control2, context)).thenReturn(mockRenderer2);
119:
120:                 final Control render = viewRenderer.render(new SWTGridCell(0, 0, viewRenderer), shell);
121:                 assertTrue(Composite.class.isInstance(render));
122:                 assertEquals(2, Composite.class.cast(render).getChildren().length);
123:                 assertTrue(GridData.class.isInstance(Composite.class.cast(render).getChildren()[0].getLayoutData()));
124:                 assertTrue(GridData.class.isInstance(Composite.class.cast(render).getChildren()[1].getLayoutData()));
125:
126:                 assertEquals(1,
127:                         GridData.class.cast(Composite.class.cast(render).getChildren()[0].getLayoutData()).horizontalSpan);
128:                 assertEquals(1,
129:                         GridData.class.cast(Composite.class.cast(render).getChildren()[1].getLayoutData()).horizontalSpan);
130:         }
131:
132:         @Test
133:         public void testMultipleComplexGridDescriptionView() throws NoRendererFoundException,
134:                 NoPropertyDescriptorFoundExeption, EMFFormsNoRendererException {
135:                 final BasicEList<VContainedElement> basicEList = new BasicEList<>();
136:                 final VContainedElement control1 = mock(VContainedElement.class);
137:                 final VContainedElement control2 = mock(VContainedElement.class);
138:                 final VContainedElement control3 = mock(VContainedElement.class);
139:                 basicEList.add(control1);
140:                 basicEList.add(control2);
141:                 basicEList.add(control3);
142:                 when(view.getChildren()).thenReturn(basicEList);
143:
144:                 final AbstractSWTRenderer<VElement> mockRenderer1 = createCompositeMockRenderer(control1, 1);
145:                 final AbstractSWTRenderer<VElement> mockRenderer2 = createCompositeMockRenderer(control2, 3);
146:                 final AbstractSWTRenderer<VElement> mockRenderer3 = createCompositeMockRenderer(control3, 2);
147:
148:                 when(rendererFactory.getRendererInstance(control1, context)).thenReturn(mockRenderer1);
149:                 when(rendererFactory.getRendererInstance(control2, context)).thenReturn(mockRenderer2);
150:                 when(rendererFactory.getRendererInstance(control3, context)).thenReturn(mockRenderer3);
151:
152:                 final Control render = viewRenderer.render(new SWTGridCell(0, 0, viewRenderer), shell);
153:                 assertTrue(Composite.class.isInstance(render));
154:                 assertEquals(6, Composite.class.cast(render).getChildren().length);
155:                 for (int i = 0; i < 6; i++) {
156:                         assertTrue(GridData.class.isInstance(Composite.class.cast(render).getChildren()[i].getLayoutData()));
157:                 }
158:
159:                 assertEquals(3,
160:                         GridData.class.cast(Composite.class.cast(render).getChildren()[0].getLayoutData()).horizontalSpan);
161:                 assertEquals(2,
162:                         GridData.class.cast(Composite.class.cast(render).getChildren()[5].getLayoutData()).horizontalSpan);
163:         }
164:
165:         private AbstractSWTRenderer<VElement> createCompositeMockRenderer(
166:                 VContainedElement control1, int numColumns) throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
167:                 @SuppressWarnings("unchecked")
168:                 final AbstractSWTRenderer<VElement> mockRenderer = mock(AbstractSWTRenderer.class);
169:
170:                 final SWTGridDescription gd = GridDescriptionFactory.INSTANCE.createSimpleGrid(1, numColumns, mockRenderer);
171:                 when(mockRenderer.getGridDescription(any(SWTGridDescription.class))).thenAnswer(
172:                         new Answer<SWTGridDescription>() {
173:                                 @Override
174:                                 public SWTGridDescription answer(InvocationOnMock invocation)
175:                                         throws Throwable {
176:                                         final Object[] args = invocation.getArguments();
177:                                         final SWTGridDescription desc = (SWTGridDescription) args[0];
178:                                         if (desc.getColumns() == 0 && desc.getRows() == 0 && desc.getGrid() == null) {
179:                                                 return gd;
180:                                         }
181:                                         return null;
182:                                 }
183:                         });
184:                 when(mockRenderer.render(any(SWTGridCell.class), any(Composite.class))).thenAnswer(new Answer<Control>() {
185:
186:                         @Override
187:                         public Control answer(InvocationOnMock invocation) throws Throwable {
188:                                 final Object[] args = invocation.getArguments();
189:                                 return new Composite((Composite) args[1], SWT.NONE);
190:                         }
191:
192:                 });
193:                 return mockRenderer;
194:         }
195:
196: }