Skip to content

Package: XmiTemplateProvider_PTest

XmiTemplateProvider_PTest

nameinstructionbranchcomplexitylinemethod
XmiTemplateProvider_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%
testExtensionPoint()
M: 0 C: 81
100%
M: 2 C: 2
50%
M: 2 C: 1
33%
M: 0 C: 20
100%
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: * Lucas Koehler - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.core.services.datatemplate;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.junit.Assert.assertNotNull;
18:
19: import java.lang.reflect.Field;
20: import java.util.Collection;
21: import java.util.LinkedHashSet;
22: import java.util.Map;
23:
24: import org.eclipse.emf.ecore.EClass;
25: import org.eclipse.emfforms.core.services.datatemplate.TemplateProvider;
26: import org.eclipse.emfforms.core.services.datatemplate.test.model.audit.AuditPackage;
27: import org.eclipse.emfforms.datatemplate.Template;
28: import org.junit.Test;
29: import org.osgi.framework.BundleContext;
30: import org.osgi.framework.FrameworkUtil;
31: import org.osgi.framework.InvalidSyntaxException;
32: import org.osgi.framework.ServiceReference;
33:
34: /**
35: * Tests that the {@link XmiTemplateProvider} correctly reads in the extension point
36: *
37: * @author Lucas Koehler
38: *
39: */
40: public class XmiTemplateProvider_PTest {
41:
42:         /**
43:          * Tests that the extension point is read in correctly
44:          *
45:          * @throws InvalidSyntaxException
46:          * @throws SecurityException
47:          * @throws NoSuchFieldException
48:          * @throws IllegalAccessException
49:          */
50:         @SuppressWarnings("unchecked")
51:         @Test
52:         public void testExtensionPoint() throws InvalidSyntaxException, NoSuchFieldException, SecurityException,
53:                 IllegalArgumentException, IllegalAccessException {
54:                 final BundleContext bundleContext = FrameworkUtil.getBundle(XmiTemplateProvider_PTest.class).getBundleContext();
55:                 final Collection<ServiceReference<TemplateProvider>> serviceReferences = bundleContext
56:                         .getServiceReferences(TemplateProvider.class, null);
57:
58:                 XmiTemplateProvider provider = null;
59:•                for (final ServiceReference<TemplateProvider> ref : serviceReferences) {
60:                         final TemplateProvider service = bundleContext.getService(ref);
61:•                        if (service instanceof XmiTemplateProvider) {
62:                                 provider = (XmiTemplateProvider) service;
63:                                 break;
64:                         }
65:                 }
66:
67:                 assertNotNull("The XmiTemplateProvider was not registered", provider); //$NON-NLS-1$
68:
69:                 // Get templates by reflection
70:                 final Field templatesField = provider.getClass().getDeclaredField("templates"); //$NON-NLS-1$
71:                 templatesField.setAccessible(true);
72:                 final Map<EClass, LinkedHashSet<Template>> templates = (Map<EClass, LinkedHashSet<Template>>) templatesField
73:                         .get(provider);
74:
75:                 assertEquals(2, templates.keySet().size());
76:                 final LinkedHashSet<Template> set1 = templates.get(AuditPackage.eINSTANCE.getAdminUser());
77:                 assertEquals("There should be exactly one template for AdminUser", 1, set1.size()); //$NON-NLS-1$
78:
79:                 final LinkedHashSet<Template> set2 = templates.get(AuditPackage.eINSTANCE.getRegisteredUser());
80:                 assertEquals("There should be exactly one template for RegisteredUser", 1, set2.size()); //$NON-NLS-1$
81:         }
82:
83: }