package org.wamblee.cdi; import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.inject.spi.AnnotatedType; import javax.enterprise.inject.spi.BeanManager; import javax.enterprise.inject.spi.InjectionTarget; import org.jboss.weld.environment.se.Weld; import org.jboss.weld.environment.se.WeldContainer; import org.junit.After; import org.junit.Before; import org.junit.Test; import static junit.framework.TestCase.*; public class WeldTest { private Weld weld; private WeldContainer container; private BeanManager beanManager; @Before public void setUp() { weld = new Weld(); container = weld.initialize(); beanManager = container.getBeanManager(); } @After public void tearDown() { weld.shutdown(); } @Test public void testGetSingleton() { AnnotatedType type = beanManager.createAnnotatedType(MyPojo.class); InjectionTarget target = beanManager.createInjectionTarget(type); CreationalContext ctx = beanManager.createCreationalContext(null); MyPojo pojo = new MyPojo(); target.inject(pojo, ctx); MySingleton obj = pojo.getSingleton(); assertNotNull(obj); MyPojo pojo2 = new MyPojo(); target.inject(pojo2, ctx); // Objects will not be the same as they are contextual references to the same object. // assertSame(pojo2, pojo); assertEquals(1, MySingleton.getInstances()); } }