blob: 873a1c6f92188c96a620b65819212717b5be8241 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2015 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Lars Vogel <Lars.Vogel@vogella.com> - Bug 474274
******************************************************************************/
package org.eclipse.e4.core.internal.tests.contexts.inject;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.EclipseContextFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.junit.Before;
import org.junit.Test;
public class ContextInjectionFactoryTest {
static class TestObject {
private int executed = 0;
private int executedWithParams = 0;
@Execute
public void execute() {
executed++;
}
@CanExecute
public void executeWithParams(String string) {
executedWithParams++;
}
public int getExecuted() {
return executed;
}
public int getExecutedWithParams() {
return executedWithParams;
}
}
static class TestConstructorObjectBasic {
public boolean defaultConstructorCalled = false;
public TestConstructorObjectBasic() {
defaultConstructorCalled = true;
}
}
private TestObject testObject;
private IEclipseContext context;
@Before
public void setUp() throws Exception {
testObject = new TestObject();
context = EclipseContextFactory.create();
}
@Test
public void testInvoke() throws Exception {
ContextInjectionFactory.invoke(testObject, Execute.class, context, null);
assertEquals(1, testObject.getExecuted());
assertEquals(0, testObject.getExecutedWithParams());
}
@Test
public void testInvokeWithParameters() throws Exception {
context.set(String.class.getName(), "");
ContextInjectionFactory.invoke(testObject, CanExecute.class, context, null);
assertEquals(0, testObject.getExecuted());
assertEquals(1, testObject.getExecutedWithParams());
}
/**
* If no other constructors are available, the default constructor should be used
*/
@Test
public void testConstructorInjectionBasic() {
IEclipseContext context = EclipseContextFactory.create();
// add an extra argument for the inner class constructors
context.set(ContextInjectionFactoryTest.class.getName(), this);
Object basicResult = ContextInjectionFactory
.make(TestConstructorObjectBasic.class, context);
assertNotNull(basicResult);
assertTrue(basicResult instanceof TestConstructorObjectBasic);
assertTrue(((TestConstructorObjectBasic) basicResult).defaultConstructorCalled);
}
}