com.izforge.izpack.test.util.TestHelper.java Source code

Java tutorial

Introduction

Here is the source code for com.izforge.izpack.test.util.TestHelper.java

Source

/*
 * IzPack - Copyright 2001-2012 Julien Ponge, All Rights Reserved.
 *
 * http://izpack.org/
 * http://izpack.codehaus.org/
 *
 * Copyright 2012 Tim Anderson
 *
 * 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 com.izforge.izpack.test.util;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;

import org.apache.commons.io.FileUtils;

/**
 * Test helper.
 *
 * @author Tim Anderson
 */
public class TestHelper {

    /**
     * Helper to create a file of the specified size containing random data.
     *
     * @param dir  the parent directory
     * @param name the file name
     * @param size the file size
     * @return a new file
     * @throws IOException for any I/O error
     */
    public static File createFile(File dir, String name, int size) throws IOException {
        return createFile(new File(dir, name), size);
    }

    /**
     * Helper to create a file of the specified size containing random data.
     *
     * @param file the file
     * @param size the file size
     * @return a new file
     * @throws IOException for any I/O error
     */
    public static File createFile(File file, int size) throws IOException {
        byte[] data = new byte[size];
        Random random = new Random();
        random.nextBytes(data);
        FileOutputStream stream = new FileOutputStream(file);
        stream.write(data);
        return file;
    }

    /**
     * Verifies that two files have the same content.
     * <p/>
     * The files must have different paths.
     *
     * @param expected   the expected file
     * @param actualDir  the actual file directory
     * @param actualName the actual file name
     */
    public static void assertFileEquals(File expected, File actualDir, String actualName) {
        assertFileEquals(expected, new File(actualDir, actualName));
    }

    /**
     * Verifies that a file exists.
     *
     * @param dir  the directory
     * @param name the file name, relative to the directory
     */
    public static void assertFileExists(File dir, String name) {
        assertFileExists(new File(dir, name));
    }

    /**
     * Verifies that a file exists.
     *
     * @param file the file
     */
    public static void assertFileExists(File file) {
        assertTrue(file.exists());
    }

    /**
     * Verifies that a file doesn't exist.
     *
     * @param dir  the directory
     * @param name the file name, relative to the directory
     */
    public static void assertFileNotExists(File dir, String name) {
        assertFalse(new File(dir, name).exists());
    }

    /**
     * Verifies that a file doesn't exist.
     *
     * @param file the file
     */
    public static void assertFileNotExists(File file) {
        assertFalse(file.exists());
    }

    /**
     * Verifies that two files have the same content.
     * <p/>
     * The files must have different paths.
     *
     * @param expected the expected file
     * @param actual   the actual file
     */
    public static void assertFileEquals(File expected, File actual) {
        assertTrue(actual.exists());
        assertFalse(actual.getAbsolutePath().equals(expected.getAbsolutePath()));
        assertEquals(expected.length(), actual.length());
        try {
            assertEquals(FileUtils.checksumCRC32(expected), FileUtils.checksumCRC32(actual));
        } catch (IOException exception) {
            fail(exception.getMessage());
        }
    }
}