blob: ac192d582d1c13431292cc1565e5d01d34cb8446 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010-present Sonatype, Inc.
* 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:
* Stuart McCulloch (Sonatype, Inc.) - initial API and implementation
*******************************************************************************/
package org.eclipse.sisu.bean;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import junit.framework.TestCase;
public class LifecycleTest
extends TestCase
{
Injector injector;
@Override
public void setUp()
{
injector = Guice.createInjector( new AbstractModule()
{
@Override
protected void configure()
{
install( new LifecycleModule() );
}
} );
}
public void testBaseLifecycle()
{
assertEquals( "a", injector.getInstance( org.eclipse.sisu.bean.alpha.Public.class ).results() );
assertEquals( "ab", injector.getInstance( org.eclipse.sisu.bean.alpha.Protected.class ).results() );
assertEquals( "abc", injector.getInstance( org.eclipse.sisu.bean.alpha.Package.class ).results() );
assertEquals( "abcd", injector.getInstance( org.eclipse.sisu.bean.alpha.Private.class ).results() );
injector.getInstance( BeanManager.class ).unmanage();
assertEquals( "az", injector.getInstance( org.eclipse.sisu.bean.alpha.Public.class ).results() );
assertEquals( "abyz", injector.getInstance( org.eclipse.sisu.bean.alpha.Protected.class ).results() );
assertEquals( "abcxyz", injector.getInstance( org.eclipse.sisu.bean.alpha.Package.class ).results() );
assertEquals( "abcdwxyz", injector.getInstance( org.eclipse.sisu.bean.alpha.Private.class ).results() );
}
public void testOverriddenLifecycle()
{
assertEquals( "bcdA", injector.getInstance( org.eclipse.sisu.bean.alpha.OverriddenPublic.class ).results() );
assertEquals( "cdAB", injector.getInstance( org.eclipse.sisu.bean.alpha.OverriddenProtected.class ).results() );
assertEquals( "dABC", injector.getInstance( org.eclipse.sisu.bean.alpha.OverriddenPackage.class ).results() );
assertEquals( "dABCD", injector.getInstance( org.eclipse.sisu.bean.alpha.OverriddenPrivate.class ).results() );
injector.getInstance( BeanManager.class ).unmanage();
assertEquals( "bcdAZwxy",
injector.getInstance( org.eclipse.sisu.bean.alpha.OverriddenPublic.class ).results() );
assertEquals( "cdABYZwx",
injector.getInstance( org.eclipse.sisu.bean.alpha.OverriddenProtected.class ).results() );
assertEquals( "dABCXYZw",
injector.getInstance( org.eclipse.sisu.bean.alpha.OverriddenPackage.class ).results() );
assertEquals( "dABCDWXYZw",
injector.getInstance( org.eclipse.sisu.bean.alpha.OverriddenPrivate.class ).results() );
}
public void testHiddenLifecycle()
{
assertEquals( "bcd", injector.getInstance( org.eclipse.sisu.bean.alpha.HiddenPublic.class ).results() );
assertEquals( "cd", injector.getInstance( org.eclipse.sisu.bean.alpha.HiddenProtected.class ).results() );
assertEquals( "d", injector.getInstance( org.eclipse.sisu.bean.alpha.HiddenPackage.class ).results() );
assertEquals( "d", injector.getInstance( org.eclipse.sisu.bean.alpha.HiddenPrivate.class ).results() );
injector.getInstance( BeanManager.class ).unmanage();
assertEquals( "bcdwxy", injector.getInstance( org.eclipse.sisu.bean.alpha.HiddenPublic.class ).results() );
assertEquals( "cdwx", injector.getInstance( org.eclipse.sisu.bean.alpha.HiddenProtected.class ).results() );
assertEquals( "dw", injector.getInstance( org.eclipse.sisu.bean.alpha.HiddenPackage.class ).results() );
assertEquals( "dw", injector.getInstance( org.eclipse.sisu.bean.alpha.HiddenPrivate.class ).results() );
}
public void testOverriddenLifecycleInDifferentPackage()
{
assertEquals( "bcdA", injector.getInstance( org.eclipse.sisu.bean.beta.OverriddenPublic.class ).results() );
assertEquals( "cdAB", injector.getInstance( org.eclipse.sisu.bean.beta.OverriddenProtected.class ).results() );
assertEquals( "cdABC", injector.getInstance( org.eclipse.sisu.bean.beta.OverriddenPackage.class ).results() );
assertEquals( "cdABCD", injector.getInstance( org.eclipse.sisu.bean.beta.OverriddenPrivate.class ).results() );
injector.getInstance( BeanManager.class ).unmanage();
assertEquals( "bcdAZwxy", injector.getInstance( org.eclipse.sisu.bean.beta.OverriddenPublic.class ).results() );
assertEquals( "cdABYZwx",
injector.getInstance( org.eclipse.sisu.bean.beta.OverriddenProtected.class ).results() );
assertEquals( "cdABCXYZwx",
injector.getInstance( org.eclipse.sisu.bean.beta.OverriddenPackage.class ).results() );
assertEquals( "cdABCDWXYZwx",
injector.getInstance( org.eclipse.sisu.bean.beta.OverriddenPrivate.class ).results() );
}
public void testHiddenLifecycleInDifferentPackage()
{
assertEquals( "bcd", injector.getInstance( org.eclipse.sisu.bean.beta.HiddenPublic.class ).results() );
assertEquals( "cd", injector.getInstance( org.eclipse.sisu.bean.beta.HiddenProtected.class ).results() );
assertEquals( "cd", injector.getInstance( org.eclipse.sisu.bean.beta.HiddenPackage.class ).results() );
assertEquals( "cd", injector.getInstance( org.eclipse.sisu.bean.beta.HiddenPrivate.class ).results() );
injector.getInstance( BeanManager.class ).unmanage();
assertEquals( "bcdwxy", injector.getInstance( org.eclipse.sisu.bean.beta.HiddenPublic.class ).results() );
assertEquals( "cdwx", injector.getInstance( org.eclipse.sisu.bean.beta.HiddenProtected.class ).results() );
assertEquals( "cdwx", injector.getInstance( org.eclipse.sisu.bean.beta.HiddenPackage.class ).results() );
assertEquals( "cdwx", injector.getInstance( org.eclipse.sisu.bean.beta.HiddenPrivate.class ).results() );
}
}