/**
*
*/
package org.jboss.jsfunit.analysis.util;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
/**
* @author ajesse
*
*/
public class FileUtilsTest extends TestCase
{
File tempFolder = null;
List<File> tempFiles = null;
String[] testFiles0 = null;
String[] testFiles1 = null;
String[] testFiles2 = null;
String[] testFiles3 = null;
String[] testFiles4 = null;
String[] testFolderName = null;
File[] testFolder = null;
static final List<String> EXTENSIONS_XHML_INC_JSPX = new ArrayList<String>();
static final List<String> EXTENSIONS_JSPX = new ArrayList<String>();
static final List<String> EXTENSIONS_XHTML = new ArrayList<String>();
{
EXTENSIONS_XHML_INC_JSPX.add("xhtml");
EXTENSIONS_XHML_INC_JSPX.add("jspx");
EXTENSIONS_XHML_INC_JSPX.add("inc");
EXTENSIONS_JSPX.add("jspx");
EXTENSIONS_XHTML.add("xhtml");
}
public class BadFile extends File
{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
* @param pathname
*/
public BadFile(String pathname)
{
super(pathname);
}
/**
*
*/
@Override
public String getCanonicalPath() throws IOException
{
throw new IOException("bad_one");
}
}
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception
{
super.setUp();
if (tempFolder == null)
{
String tmpDir = System.getProperty("java.io.tmpdir");
tempFolder = new File(tmpDir);
}
if (tempFiles == null)
{
tempFiles = new ArrayList<File>();
testFolder = new File[3];
testFolderName = new String[3];
testFolder[0] = new File(tempFolder, "FileUtilsTest");
testFolder[0].mkdir();
testFolder[1] = new File(testFolder[0], "SubFolder1");
testFolder[1].mkdir();
testFolder[2] = new File(testFolder[1], "SubFolder2");
testFolder[2].mkdir();
testFolder[0].deleteOnExit();
testFolder[1].deleteOnExit();
testFolder[2].deleteOnExit();
tempFiles.add(testFolder[0]);
tempFiles.add(testFolder[1]);
tempFiles.add(testFolder[2]);
testFolderName[0] = testFolder[0].getPath();
testFolderName[1] = testFolder[1].getPath();
testFolderName[2] = testFolder[2].getPath();
testFiles0 = new String[5];
for (int i = 0; i < 5; i++)
{
File tempFile = new File(testFolder[0], "tempFile0_" + i + ".tmp");
tempFile.deleteOnExit();
tempFile.createNewFile();
tempFiles.add(tempFile);
testFiles0[i] = tempFile.getPath();
}
testFiles1 = new String[3];
for (int i = 0; i < 3; i++)
{
File tempFile = new File(testFolder[0], "tempFile1_" + i + ".xhtml");
tempFile.deleteOnExit();
tempFile.createNewFile();
tempFiles.add(tempFile);
testFiles1[i] = tempFile.getPath();
}
testFiles2 = new String[3];
for (int i = 0; i < 3; i++)
{
File tempFile = new File(testFolder[0], "tempFile2_" + i + ".inc");
tempFile.deleteOnExit();
tempFile.createNewFile();
tempFiles.add(tempFile);
testFiles2[i] = tempFile.getPath();
}
testFiles3 = new String[10];
for (int i = 0; i < 10; i++)
{
File tempFile = new File(testFolder[1], "tempFile3_" + i + ".xhtml");
tempFile.deleteOnExit();
tempFile.createNewFile();
tempFiles.add(tempFile);
testFiles3[i] = tempFile.getPath();
}
testFiles4 = new String[3];
for (int i = 0; i < 3; i++)
{
File tempFile = new File(testFolder[2], "tempFile4_" + i + ".xhtml");
tempFile.deleteOnExit();
tempFile.createNewFile();
tempFiles.add(tempFile);
testFiles4[i] = tempFile.getPath();
}
}
}
/* (non-Javadoc)
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception
{
super.tearDown();
}
/**
* Test method for {@link org.jboss.jsfunit.analysis.util.FileUtils#findFilesRecursive(java.lang.String, java.util.List)}.
*/
public void testFindFilesRecursiveString()
{
try
{
FileUtils.findFilesRecursive((File) null, null);
fail("should have failed");
}
catch (IllegalArgumentException iae)
{
assertEquals("Folder must not be null", iae.getMessage());
}
List<String> foundFiles = FileUtils.findFilesRecursive(testFolder[0].getAbsolutePath(), null);
assertEquals(26, foundFiles.size());
foundFiles = FileUtils.findFilesRecursive(testFolder[0].getAbsolutePath(), EXTENSIONS_XHML_INC_JSPX);
assertEquals(19, foundFiles.size());
foundFiles = FileUtils.findFilesRecursive(testFolder[0].getAbsolutePath(), EXTENSIONS_JSPX);
assertEquals(0, foundFiles.size());
foundFiles = FileUtils.findFilesRecursive(testFolder[0].getAbsolutePath(), EXTENSIONS_XHTML);
assertEquals(16, foundFiles.size());
}
/**
* Test method for {@link org.jboss.jsfunit.analysis.util.FileUtils#findFilesRecursive(java.io.File, java.util.List)}.
*/
public void testFindFilesRecursiveFile()
{
try
{
FileUtils.findFilesRecursive((File) null, null);
fail("should have failed");
}
catch (IllegalArgumentException iae)
{
assertEquals("Folder must not be null", iae.getMessage());
}
List<String> foundFiles = FileUtils.findFilesRecursive(testFolder[0], null);
assertEquals(26, foundFiles.size());
foundFiles = FileUtils.findFilesRecursive(testFolder[0], EXTENSIONS_XHML_INC_JSPX);
assertEquals(19, foundFiles.size());
foundFiles = FileUtils.findFilesRecursive(testFolder[0], EXTENSIONS_JSPX);
assertEquals(0, foundFiles.size());
foundFiles = FileUtils.findFilesRecursive(testFolder[0], EXTENSIONS_XHTML);
assertEquals(16, foundFiles.size());
}
/**
* Test method for {@link org.jboss.jsfunit.analysis.util.FileUtils#findFiles(java.lang.String, java.util.List)}.
*/
public void testFindFilesString()
{
try
{
FileUtils.findFiles((File) null, null);
fail("should have failed");
}
catch (IllegalArgumentException iae)
{
assertEquals("Folder must not be null", iae.getMessage());
}
List<String> foundFiles = FileUtils.findFiles(testFolder[0].getAbsolutePath(), null);
assertEquals(12, foundFiles.size());
foundFiles = FileUtils.findFiles(testFolder[0].getAbsolutePath(), EXTENSIONS_XHML_INC_JSPX);
assertEquals(6, foundFiles.size());
foundFiles = FileUtils.findFiles(testFolder[0].getAbsolutePath(), EXTENSIONS_JSPX);
assertEquals(0, foundFiles.size());
foundFiles = FileUtils.findFiles(testFolder[0].getAbsolutePath(), EXTENSIONS_XHTML);
assertEquals(3, foundFiles.size());
}
/**
* Test method for {@link org.jboss.jsfunit.analysis.util.FileUtils#findFiles(java.io.File, java.util.List)}.
*/
public void testFindFilesFile()
{
try
{
FileUtils.findFiles((File) null, null);
fail("should have failed");
}
catch (IllegalArgumentException iae)
{
assertEquals("Folder must not be null", iae.getMessage());
}
List<String> foundFiles = FileUtils.findFiles(testFolder[0], null);
assertEquals(12, foundFiles.size());
foundFiles = FileUtils.findFiles(testFolder[0], EXTENSIONS_XHML_INC_JSPX);
assertEquals(6, foundFiles.size());
foundFiles = FileUtils.findFiles(testFolder[0], EXTENSIONS_JSPX);
assertEquals(0, foundFiles.size());
foundFiles = FileUtils.findFiles(testFolder[0], EXTENSIONS_XHTML);
assertEquals(3, foundFiles.size());
for (Iterator<String> testFiles = foundFiles.iterator(); testFiles.hasNext();)
{
String testFileName = testFiles.next();
File testFile = new File(testFileName);
assertTrue(testFile.canRead());
}
foundFiles = FileUtils.findFiles(new BadFile(testFolder[0].getAbsolutePath()), null);
assertEquals(12, foundFiles.size());
}
/**
* Test method for {@link org.jboss.jsfunit.analysis.util.FileUtils#findFiles(java.io.File, java.util.List)}.
*/
public void testFindFilesFileAndAccess()
{
List<String> foundFiles = FileUtils.findFiles(testFolder[0], EXTENSIONS_XHTML);
for (Iterator<String> testFiles = foundFiles.iterator(); testFiles.hasNext();)
{
String testFileName = testFiles.next();
File testFile = new File(testFileName);
assertTrue(testFile.canRead());
}
}
/**
* Test method for {@link org.jboss.jsfunit.analysis.util.FileUtils#extractExtension(java.lang.String)}.
*/
public void testExtractExtension()
{
assertEquals("", FileUtils.extractExtension("testFile"));
assertEquals("txt", FileUtils.extractExtension("testFile.txt"));
assertEquals("htaccess", FileUtils.extractExtension(".htaccess"));
assertEquals("", FileUtils.extractExtension(null));
assertEquals("txt", FileUtils.extractExtension("testFile.doc.txt"));
}
/**
* Test method for {@link org.jboss.jsfunit.analysis.util.FileUtils.FolderFilter#accept(File)}.
*/
public void testFolderFilterAccept()
{
FileUtils.FolderFilter folderFilter = new FileUtils.FolderFilter();
assertTrue(folderFilter.accept(tempFolder));
assertFalse(folderFilter.accept(null));
File tempFile = new File(tempFolder, "testFolderFilterAccept_1.tmp");
tempFile.deleteOnExit();
assertFalse(folderFilter.accept(tempFile));
}
/**
* Test method for {@link org.jboss.jsfunit.analysis.util.FileUtils.FileExtensionFilter#accept(File, String)}.
*/
public void testFileExtensionFilterAccept()
{
FileUtils.FileExtensionFilter filterNullExt = new FileUtils.FileExtensionFilter(null);
assertTrue(filterNullExt.accept(tempFolder, "test1.tmp"));
FileUtils.FileExtensionFilter filterNoExt = new FileUtils.FileExtensionFilter();
assertTrue(filterNoExt.accept(tempFolder, "test1.tmp"));
FileUtils.FileExtensionFilter filterEmptyExt = new FileUtils.FileExtensionFilter(new ArrayList<String>());
assertTrue(filterEmptyExt.accept(tempFolder, "test1.tmp"));
List<String> extensions = new ArrayList<String>();
extensions.add("tmp");
extensions.add("xls");
FileUtils.FileExtensionFilter filterExt = new FileUtils.FileExtensionFilter(extensions);
assertTrue(filterExt.accept(tempFolder, "test1.tmp"));
assertFalse(filterExt.accept(tempFolder, "test1.pdf"));
FileUtils.FileExtensionFilter filterLateExt = new FileUtils.FileExtensionFilter();
assertTrue(filterLateExt.accept(tempFolder, "test1.tmp"));
assertTrue(filterLateExt.accept(tempFolder, "test1.pdf"));
filterLateExt.setAllowedExtensions(extensions);
assertTrue(filterLateExt.accept(tempFolder, "test1.tmp"));
assertFalse(filterLateExt.accept(tempFolder, "test1.pdf"));
}
/**
* Test method for {@link org.jboss.jsfunit.analysis.util.FileUtils#getAllowedExtensions()}.
*/
public void testFileExtensionFilterGetAllowedExtensions()
{
FileUtils.FileExtensionFilter filter = new FileUtils.FileExtensionFilter();
assertNull(filter.getAllowedExtensions());
filter.setAllowedExtensions(EXTENSIONS_JSPX);
assertNotNull(filter.getAllowedExtensions());
assertEquals(EXTENSIONS_JSPX, filter.getAllowedExtensions());
}
}