/*******************************************************************************
* 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 java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.riena.core.injector.Inject;
import org.eclipse.riena.core.test.RienaTestCase;
import org.eclipse.riena.core.test.collect.NonUITestCase;
import org.eclipse.riena.core.util.VariableManagerUtil;
import org.eclipse.riena.internal.tests.Activator;
/**
* Test the {@code ExtensionInjector}.
*/
@NonUITestCase
public class ExtensionInjectorTest extends RienaTestCase {
public void testConstructorConstraints() {
printTestName();
try {
Inject.extension(null);
fail("Exception expected");
} catch (final RuntimeException expected) {
ok("Exception expected");
}
}
public void testUseTypeConstraints() {
printTestName();
try {
Inject.extension("id").useType(null);
fail("Exception expected");
} catch (final RuntimeException expected) {
ok("Exception expected");
}
try {
Inject.extension("id").useType(IData.class).useType(IData.class);
fail("Exception expected");
} catch (final RuntimeException expected) {
ok("Exception expected");
}
try {
Inject.extension("id").useType(String.class);
fail("Exception expected");
} catch (final RuntimeException expected) {
ok("Exception expected");
}
}
public void testExpectingConstraints() {
printTestName();
try {
Inject.extension("id").expectingMinMax(2, 1);
fail("Exception expected");
} catch (final RuntimeException expected) {
ok("Exception expected");
}
try {
Inject.extension("id").expectingMinMax(-1, 0);
fail("Exception expected");
} catch (final RuntimeException expected) {
ok("Exception expected");
}
try {
Inject.extension("id").expectingMinMax(0, 0);
fail("Exception expected");
} catch (final RuntimeException expected) {
ok("Exception expected");
}
}
public void testInjectIntoConstraints() {
printTestName();
try {
Inject.extension("id").into(null);
fail("Exception expected");
} catch (final RuntimeException expected) {
ok("Exception expected");
}
}
public void testWithKnownTypeAndMultipleData() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext2.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext3.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class).into(target)
.andStart(getContext());
try {
assertEquals(3, target.getData().length);
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtension("core.test.extpoint.id2");
removeExtension("core.test.extpoint.id3");
removeExtensionPoint("core.test.extpoint");
}
}
public void testWithUnknownTypeAndMultipleData() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext2.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext3.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").into(target)
.andStart(getContext());
try {
assertEquals(3, target.getData().length);
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtension("core.test.extpoint.id2");
removeExtension("core.test.extpoint.id3");
removeExtensionPoint("core.test.extpoint");
}
}
public void testWithKnownTypeAndSingleData() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1.xml");
try {
final ConfigurableThingSingleData target = new ConfigurableThingSingleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class)
.expectingExactly(1).into(target).update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
assertTrue(target.getData().getValue().contains("And Now for Something Completely Different!"));
assertTrue(target.getData().getRequired());
assertTrue(target.getData().isRequired());
assertEquals("test1", target.getData().getText());
assertEquals(String.class, target.getData().createObjectType().getClass());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtensionPoint("core.test.extpoint");
}
}
public void testNonCachingOfCreateWithKnownTypeAndSingleData() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1.xml");
try {
final ConfigurableThingSingleData target = new ConfigurableThingSingleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class)
.expectingExactly(1).into(target).update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
final String created1 = (String) target.getData().createObjectType();
final String created2 = (String) target.getData().createObjectType();
assertNotSame(created1, created2);
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtensionPoint("core.test.extpoint");
}
}
public void testWithUnknownTypeAndSingleData() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext2.xml");
try {
final ConfigurableThingSingleData target = new ConfigurableThingSingleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
assertFalse(target.getData().getRequired());
assertFalse(target.getData().isRequired());
assertEquals("test2", target.getData().getText());
assertEquals(HashMap.class, target.getData().createObjectType().getClass());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id2");
removeExtensionPoint("core.test.extpoint");
}
}
public void testCoerceWithUnknownTypeAndSingleData() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext4.xml");
try {
final ConfigurableThingSingleData target = new ConfigurableThingSingleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
assertTrue(target.getData().getRequired());
assertEquals("test4", target.getData().getText());
assertEquals(ArrayList.class, target.getData().createObjectType().getClass());
assertEquals(0x2A, target.getData().getJustAByte());
assertEquals(2.7182818284590452d, target.getData().getDoubleNumber());
assertEquals(3.14159f, target.getData().getFloatNumber());
assertEquals(123, target.getData().getIntegerNumber());
assertEquals(1234567890L, target.getData().getLongNumber());
assertEquals(1, target.getData().getShortNumber());
assertEquals('#', target.getData().getDelimCharacter());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id4");
removeExtensionPoint("core.test.extpoint");
}
}
/**
* This test is brittle because it deals with asynchronous events.
*
* @throws InterruptedException
*/
public void testTrackingWithKnownTypeAndMultipleData() throws InterruptedException {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
target.setTrace(true);
ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class).into(target)
.andStart(getContext());
try {
assertEquals(0, target.getData().length);
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1.xml");
injector = Inject.extension("core.test.extpoint").useType(IData.class).into(target)
.andStart(getContext());
try {
assertEquals(1, target.getData().length);
addPluginXml(ExtensionInjectorTest.class, "plugin_ext2.xml");
try {
assertEquals(2, target.getData().length);
addPluginXml(ExtensionInjectorTest.class, "plugin_ext3.xml");
try {
assertEquals(3, target.getData().length);
} finally {
removeExtension("core.test.extpoint.id3");
}
assertEquals(2, target.getData().length);
} finally {
removeExtension("core.test.extpoint.id2");
}
assertEquals(1, target.getData().length);
} finally {
removeExtension("core.test.extpoint.id1");
}
assertEquals(0, target.getData().length);
} finally {
injector.stop();
}
} finally {
removeExtensionPoint("core.test.extpoint");
}
}
public void testModifyWithUnknownTypeAndSingleData() throws CoreException {
printTestName();
VariableManagerUtil.addVariable("true", "true");
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext5.xml");
try {
final ConfigurableThingSingleData target = new ConfigurableThingSingleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
assertTrue(target.getData().getRequired());
assertEquals("test5", target.getData().getText());
assertEquals(String.class, target.getData().createObjectType().getClass());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id5");
removeExtensionPoint("core.test.extpoint");
}
}
public void testWithUnknownTypeAndSingleDataAndOneNestedSingleElementAndTwoNestedMultipleElements() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext6.xml");
try {
final ConfigurableThingSingleData target = new ConfigurableThingSingleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
assertFalse(target.getData().getRequired());
assertFalse(target.getData().isRequired());
assertEquals("test6", target.getData().getText());
assertEquals(String.class, target.getData().createObjectType().getClass());
final IData2 data2 = target.getData().getNews();
assertNotNull(data2);
assertEquals("rmation", data2.getInfo());
final IData3[] data3 = target.getData().getMoreData();
assertNotNull(data3);
assertEquals(2, data3.length);
assertEquals("more-one", data3[0].getId());
assertEquals("Hugo", data3[0].getName());
assertEquals("more-two", data3[1].getId());
assertEquals("Hella", data3[1].getName());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id6");
removeExtensionPoint("core.test.extpoint");
}
}
public void testWithUnknownTypeDefaultValues() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext8.xml");
try {
final ConfigurableThingSingleData8 target = new ConfigurableThingSingleData8();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
// required is not defined but the default says that it should be true
assertTrue(target.getData().isRequired());
// text is defined with a default, however is should return not the default
assertEquals("not empty", target.getData().getText());
// moreText is not defined and no default is defined so null should be returned
assertNull(target.getData().getMoreText());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id8");
removeExtensionPoint("core.test.extpoint");
}
}
public void testCachingWithUnknownTypeAndSingleDataAndOneNestedSingleElementAndTwoNestedMultipleElements() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext6.xml");
try {
final ConfigurableThingSingleData target = new ConfigurableThingSingleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
assertFalse(target.getData().getRequired());
assertFalse(target.getData().isRequired());
assertEquals("test6", target.getData().getText());
assertEquals(String.class, target.getData().createObjectType().getClass());
final IData2 data21 = target.getData().getNews();
final IData2 data22 = target.getData().getNews();
assertSame(data21, data22);
final IData3[] data31 = target.getData().getMoreData();
final IData3[] data32 = target.getData().getMoreData();
assertSame(data31, data32);
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id6");
removeExtensionPoint("core.test.extpoint");
}
}
public void testBug240766WithMultipleData() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1-sub.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext2.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext3.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(ISubData.class)
.into(target).andStart(getContext());
try {
assertEquals(3, target.getData().length);
assertTrue(ISubData.class.isInstance(target.getData()[0]));
assertEquals("This check relies on the order that extensions are added to the extension registry!",
"SubSub", ((ISubData) target.getData()[0]).getSubText());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtension("core.test.extpoint.id2");
removeExtension("core.test.extpoint.id3");
removeExtensionPoint("core.test.extpoint");
}
}
public void testBug240766WithSingleData() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1-sub.xml");
try {
final ConfigurableThingSingleData target = new ConfigurableThingSingleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(ISubData.class)
.expectingExactly(1).into(target).update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
assertEquals("Dynamic proxy for " + ISubData.class.getName()
+ ":subText=SubSub,required=true,objectType=java.lang.String,text=test1", target.getData()
.toString());
assertTrue(ISubData.class.isInstance(target.getData()));
assertEquals("SubSub", ((ISubData) target.getData()).getSubText());
assertTrue(target.getData().getValue().contains("And Now for Something Completely Different!"));
assertTrue(target.getData().getRequired());
assertTrue(target.getData().isRequired());
assertEquals("test1", target.getData().getText());
assertEquals(String.class, target.getData().createObjectType().getClass());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtensionPoint("core.test.extpoint");
}
}
public void testBug259478WithSingleData() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext259478.xml");
try {
final ConfigurableThingSingleData target = new ConfigurableThingSingleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class)
.expectingExactly(1).into(target).update("configure").andStart(getContext());
try {
assertNotNull(target.getData());
final Object obj = target.getData().createObjectType();
assertTrue(obj instanceof Thing259478);
final Map<String, String> properties = ((Thing259478) obj).properties;
assertEquals("1", properties.get("eins"));
assertEquals("2", properties.get("zwei"));
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id8");
removeExtensionPoint("core.test.extpoint");
}
}
public void testEqualsAndHashCode() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext2.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class).into(target)
.andStart(getContext());
try {
assertEquals(2, target.getData().length);
assertEquals(target.getData()[0], target.getData()[0]);
assertEquals(target.getData()[1], target.getData()[1]);
assertFalse(target.getData()[0].equals(target.getData()[1]));
assertFalse(target.getData()[0].equals("no"));
assertTrue(
"This test is based on the fact that the hashCode for IConfigurationElement is based on a handle which is a different int for every element.",
target.getData()[0].hashCode() != target.getData()[1].hashCode());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtension("core.test.extpoint.id2");
removeExtensionPoint("core.test.extpoint");
}
}
public void testGetContributor() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class).into(target)
.andStart(getContext());
try {
assertEquals(1, target.getData().length);
assertEquals(Activator.getDefault().getBundle(), target.getData()[0].getContributingBundle());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtensionPoint("core.test.extpoint");
}
}
public void testGetConfigurationElement() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class).into(target)
.andStart(getContext());
try {
assertEquals(1, target.getData().length);
final IConfigurationElement conf = target.getData()[0].getConfigurationElement();
assertEquals("test1", conf.getAttribute("text"));
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtensionPoint("core.test.extpoint");
}
}
public void testGetClassType() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext7.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class).into(target)
.andStart(getContext());
try {
assertEquals(1, target.getData().length);
assertEquals(LazyThing.class, target.getData()[0].getLazyThingType());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id7");
removeExtensionPoint("core.test.extpoint");
}
}
public void testGetEnumType() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext9.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class).into(target)
.andStart(getContext());
try {
assertEquals(1, target.getData().length);
assertEquals(IData.Color.RED, target.getData()[0].getColor());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id9");
removeExtensionPoint("core.test.extpoint");
}
}
public void testLazyCreate() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext7.xml");
try {
final ConfigurableThingMultipleData target = new ConfigurableThingMultipleData();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").useType(IData.class).into(target)
.andStart(getContext());
try {
assertEquals(1, target.getData().length);
assertFalse(LazyThing.instantiated);
final ILazyThing lazyThing = target.getData()[0].createLazyThing();
assertFalse(LazyThing.instantiated);
lazyThing.doSomething();
assertTrue(LazyThing.instantiated);
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id7");
removeExtensionPoint("core.test.extpoint");
}
}
public void testWithUnknownTypeAndMultipleDataSpecific() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext1.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext2.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext3.xml");
try {
final ConfigurableThingMultipleDataSpecific target = new ConfigurableThingMultipleDataSpecific();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").into(target).specific()
.andStart(getContext());
try {
assertEquals(3, target.getExtData().length);
for (final IExtData data : target.getExtData()) {
if (data.getTest()[0].getText().equals("test1")) {
assertEquals("java.lang.String", data.getTest()[0].createObjectType().getClass().getName());
} else if (data.getTest()[0].getText().equals("test2")) {
assertEquals("java.util.HashMap", data.getTest()[0].createObjectType().getClass().getName());
} else if (data.getTest()[0].getText().equals("test3")) {
assertEquals("java.util.ArrayList", data.getTest()[0].createObjectType().getClass().getName());
} else {
fail("Argh!");
}
}
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id1");
removeExtension("core.test.extpoint.id2");
removeExtension("core.test.extpoint.id3");
removeExtensionPoint("core.test.extpoint");
}
}
public void testWithUnknownTypeAndMultipleDataSpecific2() {
printTestName();
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext-a.xml");
try {
final ConfigurableThingMultipleDataSpecific target = new ConfigurableThingMultipleDataSpecific();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").into(target).specific()
.andStart(getContext());
try {
assertEquals(1, target.getExtData().length);
for (final IExtData extData : target.getExtData()) {
assertEquals(2, extData.getTest().length);
for (final IData data : extData.getTest()) {
if (data.getText().equals("test-a1")) {
assertEquals("java.lang.String", data.createObjectType().getClass().getName());
} else if (data.getText().equals("test-a2")) {
assertEquals("java.lang.StringBuffer", data.createObjectType().getClass().getName());
} else {
fail("Argh!");
}
}
}
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id-a");
removeExtensionPoint("core.test.extpoint");
}
}
public void testModifyGlobalOn() throws CoreException {
printTestName();
VariableManagerUtil.addVariable("value", "true");
VariableManagerUtil.addVariable("text", "Hallo!");
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext-modify.xml");
try {
final ConfigurableThingModify target = new ConfigurableThingModify();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.andStart(getContext());
try {
assertNotNull(target.getData());
assertTrue(target.getData().isRequired());
assertEquals("Hallo!", target.getData().getText());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id.modify");
removeExtensionPoint("core.test.extpoint");
VariableManagerUtil.removeVariable("value");
VariableManagerUtil.removeVariable("text");
}
}
public void testModifyGlobalOff() throws CoreException {
printTestName();
VariableManagerUtil.addVariable("value", "true");
VariableManagerUtil.addVariable("text", "Hallo!");
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext-modify.xml");
try {
final ConfigurableThingModify target = new ConfigurableThingModify();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.doNotReplaceSymbols().andStart(getContext());
try {
assertNotNull(target.getData());
assertEquals("${value}", target.getData().getRequired());
assertEquals("${text}", target.getData().getText());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id.modify");
removeExtensionPoint("core.test.extpoint");
VariableManagerUtil.removeVariable("value");
VariableManagerUtil.removeVariable("text");
}
}
public void testModifyInterfaceOff() throws CoreException {
printTestName();
VariableManagerUtil.addVariable("value", "true");
VariableManagerUtil.addVariable("text", "Hallo!");
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext-modify.xml");
try {
final ConfigurableThingModifyInterfaceOff target = new ConfigurableThingModifyInterfaceOff();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.andStart(getContext());
try {
assertNotNull(target.getData());
assertEquals("${value}", target.getData().getRequired());
assertEquals("${text}", target.getData().getText());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id.modify");
removeExtensionPoint("core.test.extpoint");
VariableManagerUtil.removeVariable("value");
VariableManagerUtil.removeVariable("text");
}
}
public void testModifyMethodOff() throws CoreException {
printTestName();
VariableManagerUtil.addVariable("value", "true");
VariableManagerUtil.addVariable("text", "Hallo!");
addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
addPluginXml(ExtensionInjectorTest.class, "plugin_ext-modify.xml");
try {
final ConfigurableThingModifyMethodOff target = new ConfigurableThingModifyMethodOff();
final ExtensionInjector injector = Inject.extension("core.test.extpoint").expectingExactly(1).into(target)
.andStart(getContext());
try {
assertNotNull(target.getData());
assertEquals("true", target.getData().getRequired());
assertEquals("${text}", target.getData().getText());
} finally {
injector.stop();
}
} finally {
removeExtension("core.test.extpoint.id.modify");
removeExtensionPoint("core.test.extpoint");
VariableManagerUtil.removeVariable("value");
VariableManagerUtil.removeVariable("text");
}
}
// public void testMasses() {
// printTestName();
// addPluginXml(ExtensionInjectorTest.class, "plugin.xml");
// final int A_LOT = 1500;
// StopWatch watch = new StopWatch("MassTest (" + A_LOT + ")");
// watch.start();
// for (int i = 0; i < A_LOT; i++) {
// addPluginXml(ExtensionInjectorTest.class, "plugin_ext.xml");
// }
// watch.elapsed("add").reset();
// ConfigurableThingMultipleData target = new
// ConfigurableThingMultipleData();
// ExtensionInjector injector =
// Inject.extension("core.test.extpoint").into(target
// ).andStart(getContext());
// watch.elapsed("inject").reset();
// System.out.println("Injected: " + target.getData().length);
// for (IData data : target.getData()) {
// data.getText();
// }
// watch.elapsed("cycle for getText()").reset();
// }
}