/****************************************************************************** | |
* Copyright (c) 2006, 2010 VMware Inc. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* and Apache License v2.0 which accompanies this distribution. | |
* The Eclipse Public License is available at | |
* http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0 | |
* is available at http://www.opensource.org/licenses/apache2.0.php. | |
* You may elect to redistribute this code under either of these licenses. | |
* | |
* Contributors: | |
* VMware Inc. | |
*****************************************************************************/ | |
package org.eclipse.gemini.blueprint.mock; | |
import java.util.Dictionary; | |
import java.util.Enumeration; | |
import java.util.Hashtable; | |
import java.util.NoSuchElementException; | |
import junit.framework.TestCase; | |
import org.eclipse.gemini.blueprint.mock.MockBundle; | |
import org.eclipse.gemini.blueprint.mock.MockBundleContext; | |
import org.osgi.framework.Bundle; | |
import org.osgi.framework.BundleContext; | |
import org.osgi.framework.BundleException; | |
import org.osgi.framework.Constants; | |
/** | |
* @author Costin Leau | |
* | |
*/ | |
public class MockBundleTest extends TestCase { | |
MockBundle mock; | |
protected void setUp() throws Exception { | |
mock = new MockBundle(); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#MockBundle()}. | |
*/ | |
public void testMockBundle() { | |
assertNotNull(mock.getLocation()); | |
assertNotNull(mock.getHeaders()); | |
assertNotNull(mock.getSymbolicName()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#MockBundle(java.util.Dictionary)}. | |
*/ | |
public void testMockBundleDictionary() { | |
Dictionary headers = new Hashtable(); | |
mock = new MockBundle(headers); | |
assertNotNull(mock.getLocation()); | |
assertSame(headers, mock.getHeaders()); | |
assertNotNull(mock.getSymbolicName()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#MockBundle(java.lang.String)}. | |
*/ | |
public void testMockBundleString() { | |
String location = "some location"; | |
String symName = "symName"; | |
mock = new MockBundle(symName); | |
((MockBundle) mock).setLocation(location); | |
assertSame(location, mock.getLocation()); | |
assertNotNull(mock.getHeaders()); | |
assertEquals(symName, mock.getSymbolicName()); | |
assertEquals(location, mock.getLocation()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#MockBundle(org.osgi.framework.BundleContext)}. | |
*/ | |
public void testMockBundleBundleContext() { | |
BundleContext context = new MockBundleContext(); | |
mock = new MockBundle(context); | |
assertNotNull(mock.getLocation()); | |
assertNotNull(mock.getHeaders()); | |
assertNotNull(mock.getSymbolicName()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#MockBundle(java.lang.String, java.util.Dictionary, org.osgi.framework.BundleContext)}. | |
*/ | |
public void testMockBundleStringDictionaryBundleContext() { | |
BundleContext context = new MockBundleContext(); | |
String location = "some location"; | |
Dictionary headers = new Hashtable(); | |
mock = new MockBundle(location, headers, context); | |
assertNotNull(mock.getLocation()); | |
assertNotNull(mock.getHeaders()); | |
assertNotNull(mock.getSymbolicName()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#findEntries(java.lang.String, java.lang.String, boolean)}. | |
*/ | |
public void testFindEntries() { | |
Enumeration enm = mock.findEntries("", null, true); | |
assertNotNull(enm); | |
assertFalse(enm.hasMoreElements()); | |
try { | |
enm.nextElement(); | |
fail("expected exception"); | |
} | |
catch (NoSuchElementException ex) { | |
// expected | |
} | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getBundleId()}. | |
*/ | |
public void testGetBundleId() { | |
assertTrue(mock.getBundleId() != 0); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getEntry(java.lang.String)}. | |
*/ | |
public void testGetEntry() throws Exception { | |
assertNotNull(mock.getEntry(MockBundleTest.class.getPackage().getName().replace('.', '/') | |
+ "/MockBundleTest.class")); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getEntryPaths(java.lang.String)}. | |
*/ | |
public void testGetEntryPaths() { | |
assertNotNull(mock.getEntryPaths(null)); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getHeaders()}. | |
*/ | |
public void testGetHeaders() { | |
assertNotNull(mock.getHeaders()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getHeaders(java.lang.String)}. | |
*/ | |
public void testGetHeadersString() { | |
assertNotNull(mock.getHeaders("GB")); | |
assertSame(mock.getHeaders(), mock.getHeaders("RO")); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getLastModified()}. | |
*/ | |
public void testGetLastModified() { | |
assertEquals(0, mock.getLastModified()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getLocation()}. | |
*/ | |
public void testGetLocation() { | |
assertNotNull(mock.getLocation()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getRegisteredServices()}. | |
*/ | |
public void testGetRegisteredServices() { | |
assertNotNull(mock.getRegisteredServices()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getResource(java.lang.String)}. | |
*/ | |
public void testGetResource() { | |
assertNotNull(mock.getResource(MockBundleTest.class.getPackage().getName().replace('.', '/') | |
+ "/MockBundleTest.class")); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getResources(java.lang.String)}. | |
*/ | |
public void testGetResources() throws Exception { | |
assertNotNull(mock.getResources(MockBundleTest.class.getPackage().getName().replace('.', '/'))); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getServicesInUse()}. | |
*/ | |
public void testGetServicesInUse() { | |
assertNotNull(mock.getServicesInUse()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getState()}. | |
*/ | |
public void testGetState() { | |
assertEquals(Bundle.ACTIVE, mock.getState()); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#getSymbolicName()}. | |
*/ | |
public void testGetSymbolicName() { | |
assertNotNull(mock.getSymbolicName()); | |
Dictionary headers = new Hashtable(); | |
String symbolic = "symbolicName"; | |
headers.put(Constants.BUNDLE_SYMBOLICNAME, symbolic); | |
mock = new MockBundle(headers); | |
assertSame(mock.getSymbolicName(), symbolic); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#hasPermission(java.lang.Object)}. | |
*/ | |
public void testHasPermission() { | |
assertEquals(true, mock.hasPermission(new Object())); | |
} | |
/** | |
* Test method for | |
* {@link org.eclipse.gemini.blueprint.mock.MockBundle#loadClass(java.lang.String)}. | |
*/ | |
public void testLoadClass() throws Exception { | |
assertSame(getClass(), mock.loadClass(MockBundleTest.class.getName())); | |
} | |
public void testGetEmptyEnumerator() { | |
Enumeration enm = mock.getEntryPaths("bla"); | |
assertFalse(enm.hasMoreElements()); | |
try { | |
enm.nextElement(); | |
fail("should have thrown exception"); | |
} | |
catch (NoSuchElementException nsee) { | |
// expected | |
} | |
} | |
public void testDefaultStart() throws Exception { | |
mock = new MockBundle() { | |
public void start(int options) throws BundleException { | |
assertEquals(0, options); | |
} | |
}; | |
mock.start(); | |
} | |
public void testStartWithOptions() throws Exception { | |
mock = new MockBundle() { | |
public void start(int options) throws BundleException { | |
assertEquals(3, options); | |
} | |
}; | |
mock.start(3); | |
} | |
public void testDefaultStop() throws Exception { | |
mock = new MockBundle() { | |
public void stop(int options) throws BundleException { | |
assertEquals(0, options); | |
} | |
}; | |
mock.stop(); | |
} | |
public void testStopWithOptions() throws Exception { | |
mock = new MockBundle() { | |
public void stop(int options) throws BundleException { | |
assertEquals(3, options); | |
} | |
}; | |
mock.stop(3); | |
} | |
public void testDefaultGetBundleContext() throws Exception { | |
assertNotNull(mock.getBundleContext()); | |
} | |
public void testBundleContextSpecified() throws Exception { | |
BundleContext ctx = new MockBundleContext(); | |
mock = new MockBundle(ctx); | |
assertSame(ctx, mock.getBundleContext()); | |
} | |
} |