package de.hilling.junit.cdi; import de.hilling.junit.cdi.scopedbeans.*; import org.junit.Assert; import org.junit.Test; import javax.inject.Inject; import java.util.HashMap; import java.util.Map; import java.util.UUID; /** * Test if only one test class. * * @author gunnar */ public class TestCaseScopeTest extends CdiTestAbstract { private static Map<Class<?>, UUID> firstUuids = new HashMap<>(); @Inject private TestSuiteScopedBean testSuiteScopedBean; @Inject private TestScopedBean testScopedBean; @Inject private ApplicationScopedBean applicationScopedBean; @Inject private RequestScopedBean requestScopedBean; @Inject private SessionScopedBean sessionScopedBean; @Inject private SampleScopedBean sampleScopedBean; @Inject private DependentScopedBean dependentScopedBean; @Test public void testOne() { assertInstances(); } @Test public void testTwo() { assertInstances(); } @Test public void testDependents() { DependentScopedBean dependent1 = requestScopedBean.getDependentScopedBean(); DependentScopedBean dependent2 = applicationScopedBean.getDependentScopedBean(); Assert.assertNotSame(dependent1, dependent2); } private void assertInstances() { assertInstanceNotSame(testScopedBean); assertInstanceNotSame(applicationScopedBean); assertInstanceNotSame(requestScopedBean); assertInstanceNotSame(sessionScopedBean); assertInstanceSame(testSuiteScopedBean); assertInstanceSame(dependentScopedBean); assertInstanceSame(sampleScopedBean); } private void assertInstanceNotSame(ScopedBean bean) { Class<? extends ScopedBean> beanKey = bean.getClass(); if (firstUuids.containsKey(beanKey)) { Assert.assertNotSame(firstUuids.get(beanKey), bean.getUuid()); } else { firstUuids.put(beanKey, bean.getUuid()); } } private void assertInstanceSame(ScopedBean bean) { Class<? extends ScopedBean> beanKey = bean.getClass(); if (firstUuids.containsKey(beanKey)) { Assert.assertSame(firstUuids.get(beanKey), bean.getUuid()); } else { firstUuids.put(beanKey, bean.getUuid()); } } }