package net.jangaroo.utils;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import static junit.framework.Assert.assertEquals;
/**
*
*/
public class PathHandlerTest {
@Rule
public TemporaryFolder outputFolder = new TemporaryFolder();
protected static class PathValueHolder {
private List<File> sourcePath;
@Argument(metaVar = "path", handler = PathHandler.class)
public void setSourceFiles(List<File> sourcePath) {
this.sourcePath = new ArrayList<File>(sourcePath);
}
}
@Test(expected = CmdLineException.class)
public void testDirectoryDoesNotExists() throws Exception {
PathValueHolder holder = new PathValueHolder();
CmdLineParser parser = new CmdLineParser(holder);
parser.parseArgument("xyz");
}
@Test
public void testWithOneDirectory() throws Exception {
PathValueHolder holder = new PathValueHolder();
CmdLineParser parser = new CmdLineParser(holder);
parser.parseArgument(outputFolder.getRoot().toString());
assertEquals("One folder", 1, holder.sourcePath.size());
}
@Test
public void testWithNull() throws Exception {
PathValueHolder holder = new PathValueHolder();
CmdLineParser parser = new CmdLineParser(holder);
parser.parseArgument("");
assertEquals("Empty", 0, holder.sourcePath.size());
}
@Test
public void testWithMoreDirectories() throws Exception {
PathValueHolder holder = new PathValueHolder();
CmdLineParser parser = new CmdLineParser(holder);
File one = outputFolder.newFile("one");
File two = outputFolder.newFile("two");
File three = outputFolder.newFile("three");
String arg = one.getAbsolutePath() + File.pathSeparator + two.getAbsolutePath() + File.pathSeparator + three.getAbsolutePath();
parser.parseArgument(arg);
assertEquals("three files", 3, holder.sourcePath.size());
}
}