package com.limegroup.gnutella;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import junit.framework.Test;
import com.limegroup.gnutella.util.CommonUtils;
/**
* Test the public methods of the <tt>FileDesc</tt> class.
*/
public final class FileDescTest extends com.limegroup.gnutella.util.BaseTestCase {
private static final long MAX_FILE_SIZE = 3L * 1024L * 1024;
public FileDescTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(FileDescTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
/**
* Tests the FileDesc construcotor for invalid arguments
*/
public void testInvalidConstructorArguments() throws Exception {
File file = CommonUtils.getResourceFile("build.xml");
Set urns = calculateAndCacheURN(file);
try {
new FileDesc(null, urns, 0);
fail("null file should not be permitted for FileDesc constructor");
} catch(NullPointerException ignored) {}
try {
new FileDesc(file, null, 0);
fail("null urns should not be permitted for FileDesc constructor");
} catch(NullPointerException ignored) {}
try {
new FileDesc(file, urns, -1);
fail("negative index should not be permitted for FileDesc constructor");
} catch(IndexOutOfBoundsException ignored) {}
try {
new FileDesc(file, Collections.EMPTY_SET, 0);
fail("no sha1 urn should not be permitted for FileDesc constructor");
} catch(IllegalArgumentException ignored) {}
}
/**
* Tests the FileDesc construcotor for valid arguments
*/
public void testValidConstructorArguments() throws Exception {
File current = CommonUtils.getCurrentDirectory();
File parDir = current.getParentFile();
File[] allFiles = parDir.listFiles();
List fileList = new ArrayList();
for(int i=0; i<allFiles.length; i++) {
if(allFiles[i].isFile()
&& allFiles[i].length() < MAX_FILE_SIZE) {
fileList.add(allFiles[i]);
}
}
// Make sure we're running at least one check!
assertFalse(fileList.isEmpty());
Iterator it = fileList.iterator();
for(int i = 0; it.hasNext(); i++) {
File file = (File)it.next();
Set urns = calculateAndCacheURN(file);
new FileDesc(file, urns, i);
}
}
}