blob: 93d9af6b1592d5375f3dc1b09e76c27e8596707c [file] [log] [blame]
/******************************************************************************
* 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());
}
}