/******************************************************************************* * 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() ); } }