package org.marketcetera.util.file;
import java.io.File;
//import java.util.Locale;
//import org.apache.log4j.Level;
import org.junit.Test;
//import org.marketcetera.util.log.ActiveLocale;
import org.marketcetera.util.misc.OperatingSystem;
import org.marketcetera.util.test.TestCaseBase;
import static org.junit.Assert.*;
import static org.junit.Assume.*;
import static org.marketcetera.util.file.FileType.*;
/**
* @author tlerios@marketcetera.com
* @since 0.5.0
* @version $Id: FileTypeTest.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class FileTypeTest
extends TestCaseBase
{
// private static final String TEST_CATEGORY=
// FileType.class.getName();
// private static final String TEST_LOCATION=
// TEST_CATEGORY;
private static final String TEST_ROOT=
DIR_ROOT+File.separator+"file_type"+File.separator;
private static final String TEST_PLAIN_FILE=
TEST_ROOT+"file.txt";
private static final String TEST_PLAIN_DIR=
TEST_ROOT+"dir";
private static final String TEST_NONEXISTENT_FILE=
TEST_ROOT+"nonexistent";
private static final String TEST_FILE_LINK=
TEST_ROOT+"file_link";
private static final String TEST_DIR_LINK=
TEST_ROOT+"dir_link";
private static final String TEST_DANGLING_LINK=
TEST_ROOT+"dangling_link";
private static final String TEST_RECURSIVE_LINK=
TEST_ROOT+"recursive_link";
private static final String TEST_UNKNOWN_FILE=
"/dev/null";
private static final String TEST_ALIASED_FILE=
TEST_ROOT+"dir_link"+File.separator+"file.txt";
private static final String TEST_ALIASED_DIR=
TEST_ROOT+"dir_link"+File.separator+"dir";
private static final String TEST_ALIASED_NONEXISTENT_FILE=
TEST_ROOT+"dir_link"+File.separator+"nonexistent";
private static final String TEST_ALIASED_FILE_LINK=
TEST_ROOT+"dir_link"+File.separator+"file_link";
private static final String TEST_ALIASED_DIR_LINK=
TEST_ROOT+"dir_link"+File.separator+"dir_link";
private static final String TEST_ALIASED_DANGLING_LINK=
TEST_ROOT+"dir_link"+File.separator+"dangling_link";
private static final String TEST_ALIASED_RECURSIVE_LINK=
TEST_ROOT+"dir_link"+File.separator+"recursive_link";
private static final String TEST_DP_DIRECT_FILE_LINK=
TEST_ROOT+"dp_direct_file_link";
private static final String TEST_DP_DIRECT_DIR_LINK=
TEST_ROOT+"dp_direct_dir_link";
private static final String TEST_DP_DIRECT_DANGLING_LINK=
TEST_ROOT+"dp_direct_dangling_link";
private static final String TEST_DP_INDIRECT_FILE_LINK=
TEST_ROOT+"dp_indirect_file_link";
private static final String TEST_DP_INDIRECT_DIR_LINK=
TEST_ROOT+"dp_indirect_dir_link";
private static final String TEST_DP_INDIRECT_DANGLING_LINK=
TEST_ROOT+"dp_indirect_dangling_link";
private static final String TEST_DP_RECURSIVE_LINK=
TEST_ROOT+"dp_recursive_link";
private static void singleTest
(FileType type,
boolean isSymbolicLink,
boolean isDirectory,
boolean isFile)
{
assertEquals(isSymbolicLink,type.isSymbolicLink());
assertEquals(isDirectory,type.isDirectory());
assertEquals(isFile,type.isFile());
}
@Test
public void all()
{
singleTest(NONEXISTENT, false,false,false);
singleTest(LINK_DIR, true, true, false);
singleTest(DIR, false,true, false);
singleTest(LINK_FILE, true, false,true);
singleTest(FILE, false,false,true);
singleTest(LINK_UNKNOWN, true, false,false);
singleTest(UNKNOWN, false,false,false);
}
@Test
public void commonTypes()
{
assertEquals(FILE,get(TEST_PLAIN_FILE));
assertEquals(DIR,get(TEST_PLAIN_DIR));
assertEquals(NONEXISTENT,get(TEST_NONEXISTENT_FILE));
assertEquals(UNKNOWN,get((String)null));
assertEquals(UNKNOWN,get((File)null));
}
@Test
public void unixTypes()
{
assumeTrue(OperatingSystem.LOCAL.isUnix());
assertEquals(LINK_FILE,get(TEST_FILE_LINK));
assertEquals(LINK_DIR,get(TEST_DIR_LINK));
assertEquals(LINK_UNKNOWN,get(TEST_DANGLING_LINK));
assertEquals(LINK_UNKNOWN,get(TEST_RECURSIVE_LINK));
assertEquals(UNKNOWN,get(TEST_UNKNOWN_FILE));
assertEquals(FILE,get(TEST_ALIASED_FILE));
assertEquals(DIR,get(TEST_ALIASED_DIR));
assertEquals(NONEXISTENT,get(TEST_ALIASED_NONEXISTENT_FILE));
assertEquals(LINK_FILE,get(TEST_ALIASED_FILE_LINK));
assertEquals(LINK_DIR,get(TEST_ALIASED_DIR_LINK));
assertEquals(LINK_UNKNOWN,get(TEST_ALIASED_DANGLING_LINK));
assertEquals(LINK_UNKNOWN,get(TEST_ALIASED_RECURSIVE_LINK));
assertEquals(LINK_FILE,get(TEST_DP_DIRECT_FILE_LINK));
assertEquals(LINK_DIR,get(TEST_DP_DIRECT_DIR_LINK));
assertEquals(LINK_UNKNOWN,get(TEST_DP_DIRECT_DANGLING_LINK));
assertEquals(LINK_FILE,get(TEST_DP_INDIRECT_FILE_LINK));
assertEquals(LINK_DIR,get(TEST_DP_INDIRECT_DIR_LINK));
assertEquals(LINK_UNKNOWN,get(TEST_DP_INDIRECT_DANGLING_LINK));
assertEquals(LINK_UNKNOWN,get(TEST_DP_RECURSIVE_LINK));
}
/*
* EXTREME TEST 1: run alone (no other tests in the same file,
* and no other units test) after uncommenting sections in main
* class.
@Test
public void exceptionThrown()
{
ActiveLocale.setProcessLocale(Locale.ROOT);
setLevel(TEST_CATEGORY,Level.WARN);
assertEquals(UNKNOWN,get(TEST_PLAIN_FILE));
assertSingleEvent
(Level.WARN,TEST_CATEGORY,
"Cannot determine type of file '"+
(new File(TEST_PLAIN_FILE)).getAbsolutePath()+"'",TEST_LOCATION);
}
*/
}