/******************************************************************************* * Copyright (c) 2007, 2014 compeople AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * compeople AG - initial API and implementation *******************************************************************************/ package org.eclipse.riena.core.injector.extension; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.RegistryFactory; import org.eclipse.riena.core.injector.Inject; import org.eclipse.riena.core.test.RienaTestCase; import org.eclipse.riena.core.test.collect.NonUITestCase; /** * Test the heterogeneous aspects of the extension injector. */ @NonUITestCase public class HeterogeneousInjectingTest extends RienaTestCase { private IPreferencesDesc[] prefs; private static final String PREFERENCES = "org.eclipse.core.runtime.preferences"; // If you want printing enable the comment below: // { // setPrint(true); // } public void update(final IPreferencesDesc[] prefs) { // TODO warning suppression: Ignore FindBugs warning about internal // representation being exposed: seems ok for testing this.prefs = prefs; } public void testPreferencesInjectionHeterogeneousSpecific() { printTestName(); Inject.extension(PREFERENCES).heterogeneous().into(this).specific().andStart(getContext()); assertNotNull(prefs); assertTrue(prefs.length > 1); int scops = 0; int inits = 0; int modis = 0; for (final IPreferencesDesc pref : prefs) { println(pref.toString()); final IScopeDesc[] scopes = pref.getScope(); for (final IScopeDesc scope : scopes) { println("\tScope: " + scope.getName() + ", " + scope.getScope() + ", " + scope.getContributingBundle()); } scops += scopes.length; final IInitializerDesc[] initializers = pref.getInitializer(); for (final IInitializerDesc initializer : initializers) { println("\tInit: " + initializer.getInitializer() + ", " + initializer.getContributingBundle()); } inits += initializers.length; final IModifierDesc[] modifiers = pref.getModifier(); for (final IModifierDesc modifier : modifiers) { println("\tModifier: " + modifier.getModifier() + ", " + modifier.getContributingBundle()); } modis += modifiers.length; } final IExtensionRegistry extensionRegistry = RegistryFactory.getRegistry(); final IExtensionPoint extensionPoint = extensionRegistry.getExtensionPoint(PREFERENCES); assertEquals(extensionPoint.getExtensions().length, prefs.length); assertEquals(extensionPoint.getConfigurationElements().length, scops + inits + modis); } public void testPreferencesInjectionHeterogeneousUnspecific() { printTestName(); Inject.extension(PREFERENCES).heterogeneous().into(this).andStart(getContext()); assertNotNull(prefs); assertEquals(1, prefs.length); final IPreferencesDesc pref = prefs[0]; final IScopeDesc[] scopes = pref.getScope(); for (final IScopeDesc scope : scopes) { println("\tScope: " + scope.getName() + ", " + scope.getScope() + ", " + scope.getContributingBundle()); } final IInitializerDesc[] initializers = pref.getInitializer(); for (final IInitializerDesc initializer : initializers) { println("\tInit: " + initializer.getInitializer() + ", " + initializer.getContributingBundle()); } final IModifierDesc[] modifiers = pref.getModifier(); for (final IModifierDesc modifier : modifiers) { println("\tModifier: " + modifier.getModifier() + ", " + modifier.getContributingBundle()); } final IExtensionRegistry extensionRegistry = RegistryFactory.getRegistry(); final IExtensionPoint extensionPoint = extensionRegistry.getExtensionPoint(PREFERENCES); assertEquals(extensionPoint.getConfigurationElements().length, scopes.length + initializers.length + modifiers.length); } }