--- /dev/null
+/*
+ * Copyright 2005 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.wamblee.io;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.wamblee.test.FileSystemUtils;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests the file resource.
+ */
+public class FileResourceTest extends TestCase {
+
+ /**
+ * Loads an existing resource. Verifies it is found.
+ *
+ */
+ public void testResourceFound() throws IOException {
+ FileResource resource = new FileResource( new File(
+ FileSystemUtils.getTestInputDir(FileResourceTest.class),
+ "myresource.txt"));
+ InputStream is = resource.getInputStream();
+ String data = FileSystemUtils.read(is);
+ assertEquals("This is my resource", data);
+ }
+
+ /**
+ * Loads a non-existing resource. Verifies that an IO
+ * exception is thrown.
+ *
+ */
+ public void testResourceNotFound() {
+ try {
+ FileResource resource = new FileResource( new File(
+ FileSystemUtils.getTestInputDir(FileResourceTest.class),
+ "myresource-nonexistent.txt"));
+ InputStream is = resource.getInputStream();
+ } catch (IOException e) {
+ return; // ok
+ }
+ fail();
+ }
+}
* Test output directory relative to the sub project.
*/
private static final String TEST_OUTPUT_DIR = "resources/testoutput";
+
+ /**
+ * Test input directory relative to the sub project.
+ */
+ private static final String TEST_INPUT_DIR = "resources/test";
/*
* Disabled.
URL location = source.getLocation();
String protocol = location.getProtocol();
if (!protocol.equals("file")) {
+ LOG.warn("protocol is not 'file': " + location);
return new File(aRelativePath);
}
path = URLDecoder.decode(location.getPath(), "UTF-8");
} catch (UnsupportedEncodingException e) {
// ignore it.. just don't decode
+ LOG.warn("Decoding path failed: '" + location.getPath() + "'", e );
}
return new File(new File(path).getParentFile(), aRelativePath);
String packagePath = packageName.replaceAll("\\.", "/");
return new File(file, packagePath);
}
+
+ /**
+ * Gets the test input directory for a specific test class.
+ *
+ * @param aTestClass
+ * Test class.
+ * @return Test input directory.
+ */
+ public static File getTestInputDir(Class aTestClass) {
+ File file = getPath(TEST_INPUT_DIR, aTestClass);
+ String packageName = aTestClass.getPackage().getName();
+ String packagePath = packageName.replaceAll("\\.", "/");
+ return new File(file, packagePath);
+ }
/**
* Creates a directory hierarchy for the output directory of a test class if