From 88253d5b08aa80e5c8cf248e5ecd3857c46742de Mon Sep 17 00:00:00 2001 From: erik Date: Mon, 27 Mar 2006 12:52:55 +0000 Subject: [PATCH] --- .../test/org/wamblee/io/FileResourceTest.java | 61 +++++++++++++++++++ .../org/wamblee/test/FileSystemUtils.java | 21 +++++++ 2 files changed, 82 insertions(+) create mode 100644 support/test/org/wamblee/io/FileResourceTest.java diff --git a/support/test/org/wamblee/io/FileResourceTest.java b/support/test/org/wamblee/io/FileResourceTest.java new file mode 100644 index 00000000..86ae9342 --- /dev/null +++ b/support/test/org/wamblee/io/FileResourceTest.java @@ -0,0 +1,61 @@ +/* + * 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(); + } +} diff --git a/support/test/org/wamblee/test/FileSystemUtils.java b/support/test/org/wamblee/test/FileSystemUtils.java index da056870..7d1c2d7e 100644 --- a/support/test/org/wamblee/test/FileSystemUtils.java +++ b/support/test/org/wamblee/test/FileSystemUtils.java @@ -39,6 +39,11 @@ public final class FileSystemUtils { * 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. @@ -112,6 +117,7 @@ public final class FileSystemUtils { URL location = source.getLocation(); String protocol = location.getProtocol(); if (!protocol.equals("file")) { + LOG.warn("protocol is not 'file': " + location); return new File(aRelativePath); } @@ -120,6 +126,7 @@ public final class FileSystemUtils { 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); @@ -157,6 +164,20 @@ public final class FileSystemUtils { 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 -- 2.31.1