diff options
Diffstat (limited to 'org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/DefaultObjectNameTranslatorTest.java')
-rwxr-xr-x | org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/DefaultObjectNameTranslatorTest.java | 74 |
1 files changed, 65 insertions, 9 deletions
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/DefaultObjectNameTranslatorTest.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/DefaultObjectNameTranslatorTest.java index 2f8855d..4485ef8 100755 --- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/DefaultObjectNameTranslatorTest.java +++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/DefaultObjectNameTranslatorTest.java @@ -14,6 +14,8 @@ package org.eclipse.gemini.mgmt; import java.util.Dictionary; import java.util.Hashtable; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.junit.Assert; import org.osgi.framework.Bundle; @@ -21,18 +23,72 @@ import org.osgi.framework.BundleContext; import org.easymock.EasyMock; public class DefaultObjectNameTranslatorTest { - + + private static final ClassNotFoundException TEST_CLASS_NOT_FOUND_EXCEPTION = new ClassNotFoundException("Test"); + + private static final String TEST_OBJECT_NAME_TRANSLATOR_CLASS_NAME = TestObjectNameTranslator.class.getName(); + + private static final String UNLOADABLE_CLASS_NAME = "BAD"; + + private static final String UNINSTANTIABLE_OBJECT_NAME_TRANSLATOR_CLASS_NAME = UninstantiableObjectNameTranslator.class.getName(); + + private BundleContext mockBundleContext; + + private Bundle mockBundle; + + private Dictionary<String, String> headers; + + @Before + public void setUp() throws Exception { + mockBundleContext = EasyMock.createMock(BundleContext.class); + mockBundle = EasyMock.createMock(Bundle.class); + headers = new Hashtable<String, String>(); + EasyMock.expect(mockBundleContext.getBundle()).andReturn(mockBundle); + EasyMock.expect(mockBundle.getHeaders()).andReturn(headers); + } + + private void replayMocks() { + EasyMock.replay(mockBundleContext, mockBundle); + } + + @After + public void tearDown() { + EasyMock.verify(mockBundleContext, mockBundle); + } + @Test public void testDefaultObjectNameTranslator() throws Exception { - BundleContext bundleContext = EasyMock.createMock(BundleContext.class); - Bundle bundle = EasyMock.createMock(Bundle.class); - EasyMock.expect(bundleContext.getBundle()).andReturn(bundle); - Dictionary<String, String> headers = new Hashtable<String, String>(); - EasyMock.expect(bundle.getHeaders()).andReturn(headers); - EasyMock.replay(bundleContext, bundle); - ObjectNameTranslator defaultObjectNameTranslator = DefaultObjectNameTranslator.initialiseObjectNameTranslator(bundleContext); + replayMocks(); + ObjectNameTranslator defaultObjectNameTranslator = DefaultObjectNameTranslator.initialiseObjectNameTranslator(mockBundleContext); Assert.assertTrue("Default ObjectNameTranslator has the wrong type", defaultObjectNameTranslator instanceof DefaultObjectNameTranslator); - EasyMock.verify(bundleContext, bundle); + } + + @SuppressWarnings("rawtypes") + @Test + public void testConfiguredObjectNameTranslator() throws Exception { + EasyMock.expect((Class) mockBundle.loadClass(TEST_OBJECT_NAME_TRANSLATOR_CLASS_NAME)).andReturn(TestObjectNameTranslator.class); + replayMocks(); + headers.put(ObjectNameTranslator.HEADER_NAME, TEST_OBJECT_NAME_TRANSLATOR_CLASS_NAME); + ObjectNameTranslator testObjectNameTranslator = DefaultObjectNameTranslator.initialiseObjectNameTranslator(mockBundleContext); + Assert.assertTrue("Test ObjectNameTranslator has the wrong type", testObjectNameTranslator instanceof TestObjectNameTranslator); + } + + @SuppressWarnings("rawtypes") + @Test(expected = ClassNotFoundException.class) + public void testUnloadableObjectNameTranslator() throws Exception { + EasyMock.expect((Class) mockBundle.loadClass(UNLOADABLE_CLASS_NAME)).andThrow(TEST_CLASS_NOT_FOUND_EXCEPTION); + replayMocks(); + headers.put(ObjectNameTranslator.HEADER_NAME, UNLOADABLE_CLASS_NAME); + DefaultObjectNameTranslator.initialiseObjectNameTranslator(mockBundleContext); + } + + @SuppressWarnings("rawtypes") + @Test(expected = IllegalAccessException.class) + public void testUninstantiableObjectNameTranslator() throws Exception { + EasyMock.expect((Class) mockBundle.loadClass(UNINSTANTIABLE_OBJECT_NAME_TRANSLATOR_CLASS_NAME)).andReturn(UninstantiableObjectNameTranslator.class); + replayMocks(); + headers.put(ObjectNameTranslator.HEADER_NAME, UNINSTANTIABLE_OBJECT_NAME_TRANSLATOR_CLASS_NAME); + DefaultObjectNameTranslator.initialiseObjectNameTranslator(mockBundleContext); } }
\ No newline at end of file |