-/*
- * 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.test;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.MappedByteBuffer;
-import java.nio.channels.FileChannel;
-
-import junit.framework.Assert;
-
-/**
- * @author Erik Test support utility.
- *
- * @author Erik Brakkee
- */
-public final class TestSupport {
-
- /**
- * Disabled constructor.
- *
- */
- private TestSupport() {
- // Empty
- }
-
- /**
- * Obtain root directory of JUnit tests.
- *
- * @return Directory name.
- */
- public static File getTestRootDir() {
- return new File("testdata");
- }
-
- /**
- * Returns a temporary directory.
- *
- * @return Temporary directory.
- */
- public static File getTmpDir() {
- return new File(getTestRootDir(), "tmpdir");
- }
-
- /**
- * Recursively remove a directory.
- *
- * @param aSrc
- * Directoryto remove.
- */
- public static void removeDir(File aSrc) {
- if (!aSrc.exists()) {
- return;
- }
- Assert.assertTrue(aSrc.getPath(), aSrc.isDirectory());
- File[] files = aSrc.listFiles();
- for (int i = 0; i < files.length; i++) {
- File file = files[i];
- if (file.isDirectory()) {
- removeDir(file);
- } else {
- Assert.assertTrue(file.getPath(), file.delete());
- }
- }
- Assert.assertTrue(aSrc.getPath(), aSrc.delete());
- }
-
- /**
- * Recursively copy a directory.
- *
- * @param aSrc
- * Source directory
- * @param aTarget
- * Target directory.
- */
- public static void copyDir(File aSrc, File aTarget) {
- Assert.assertTrue(aSrc.isDirectory());
- Assert.assertTrue(!aTarget.exists());
-
- aTarget.mkdirs();
-
- File[] files = aSrc.listFiles();
- for (int i = 0; i < files.length; i++) {
- File file = files[i];
- if (file.isDirectory()) {
- if (!file.getName().equals(".svn")) {
- copyDir(new File(aSrc, file.getName()), new File(aTarget,
- file.getName()));
- }
- } else {
- copyFile(file, new File(aTarget, file.getName()));
- }
- }
- }
-
- /**
- * Copy a file. If copying fails then the testcase will fail.
- *
- * @param aSrc
- * Source file.
- * @param aTarget
- * Target file.
- */
- public static void copyFile(File aSrc, File aTarget) {
-
- try {
- FileInputStream fis = new FileInputStream(aSrc);
- FileOutputStream fos = new FileOutputStream(aTarget);
- FileChannel fcin = fis.getChannel();
- FileChannel fcout = fos.getChannel();
-
- // map input file
-
- MappedByteBuffer mbb = fcin.map(FileChannel.MapMode.READ_ONLY, 0,
- fcin.size());
-
- // do the file copy
- fcout.write(mbb);
-
- // finish up
-
- fcin.close();
- fcout.close();
- fis.close();
- fos.close();
- } catch (IOException e) {
- Assert.assertTrue("Copying file " + aSrc.getPath() + " to "
- + aTarget.getPath() + " failed.", false);
- }
- }
-
- /**
- * Remove a file or directory. The test case will fail if this does not
- * succeed.
- *
- * @param aFile
- * entry to remove.
- */
- public static void delete(File aFile) {
- Assert
- .assertTrue("Could not delete " + aFile.getPath(), aFile
- .delete());
- }
-
- /**
- * Remove all files within a given directory including the directory itself.
- * This only attempts to remove regular files and not directories within the
- * directory. If the directory contains a nested directory, the deletion
- * will fail. The test case will fail if this fails.
- *
- * @param aDir
- * Directory to remove.
- */
- public static void deleteDir(File aDir) {
- cleanDir(aDir);
- delete(aDir);
- }
-
- /**
- * Remove all regular files within a given directory.
- *
- * @param outputDirName
- */
- public static void cleanDir(File aDir) {
- if (!aDir.exists()) {
- return; // nothing to do.
- }
- File[] entries = aDir.listFiles();
- for (int i = 0; i < entries.length; i++) {
- File file = entries[i];
- if (file.isFile()) {
- Assert.assertTrue("Could not delete " + entries[i].getPath(),
- entries[i].delete());
- }
- }
- }
-
- /**
- * Creates directory if it does not already exist. The test case will fail
- * if the directory cannot be created.
- *
- * @param aDir
- * Directory to create.
- */
- public static void createDir(File aDir) {
- if (aDir.isDirectory()) {
- return; // nothing to do.
- }
- Assert.assertTrue("Could not create directory " + aDir.getPath(), aDir
- .mkdirs());
- }
-}