blob: 831297be767184d2384c7623d404f8ac5a63cbf7 [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.io;
import java.net.URL;
import junit.framework.TestCase;
import org.easymock.MockControl;
import org.eclipse.gemini.blueprint.mock.ArrayEnumerator;
import org.osgi.framework.Bundle;
import org.springframework.core.io.Resource;
/**
* @author Costin Leau
*
*/
public class OsgiBundleResourceLoaderTest extends TestCase {
OsgiBundleResourceLoader loader;
MockControl control;
Bundle bundle;
protected void setUp() throws Exception {
control = MockControl.createStrictControl(Bundle.class);
bundle = (Bundle) control.getMock();
loader = new OsgiBundleResourceLoader(bundle);
}
protected void tearDown() throws Exception {
loader = null;
bundle = null;
control = null;
}
/**
* Test method for
* {@link org.eclipse.gemini.blueprint.io.OsgiBundleResourceLoader#getResource(java.lang.String)}.
*/
public void testGetClasspathResource() throws Exception {
String res = "foo.txt";
URL expected = new URL("file://" + res);
control.expectAndReturn(bundle.getResource(res), expected);
control.replay();
Resource resource = loader.getResource("classpath:" + res);
assertNotNull(resource);
assertSame(expected, resource.getURL());
control.verify();
}
public void testGetBundleResource() throws Exception {
String res = "foo.txt";
URL url = new URL("file:/" + res);
control.expectAndReturn(bundle.findEntries("/", res, false), new ArrayEnumerator(new URL[] {url}));
control.replay();
Resource resource = loader.getResource("osgibundle:/" + res);
assertNotNull(resource);
assertSame(url, resource.getURL());
control.verify();
}
public void testGetRelativeResource() throws Exception {
String res = "foo.txt";
URL expected = new URL("file:/" + res);
control.replay();
Resource resource = loader.getResource("file:/" + res);
assertNotNull(resource);
assertEquals(expected, resource.getURL());
control.verify();
}
public void testGetFallbackResource() throws Exception {
String res = "foo.txt";
URL expected = new URL("http:/" + res);
control.replay();
Resource resource = loader.getResource("http:/" + res);
assertNotNull(resource);
assertEquals(expected, resource.getURL());
control.verify();
}
public void testGetResourceByPath() throws Exception {
try {
loader.getResourceByPath(null);
fail("should have thrown exception");
}
catch (Exception ex) {
// expected
}
String path = "foo";
Resource res = loader.getResourceByPath(path);
assertNotNull(res);
assertSame(OsgiBundleResource.class, res.getClass());
assertEquals(path, ((OsgiBundleResource) res).getPath());
}
}