--- /dev/null
+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<MyPojo> type = beanManager.createAnnotatedType(MyPojo.class);
+ InjectionTarget<MyPojo> target = beanManager.createInjectionTarget(type);
+ CreationalContext<MyPojo> 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());
+ }
+}