/* The contents of this file are subject to the license and copyright terms
* detailed in the license directory at the root of the source tree (also
* available online at http://fedora-commons.org/license/).
*/
package fedora.client.utility.validate.process;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
/**
* @author Jim Blake
*/
public class TestPidfileIterator {
private static final String FIRST_PID = "firstPid";
private static final String SECOND_PID = "secondPid";
private static final String THIRD_PID = "thirdPid";
@Test(expected = NullPointerException.class)
public void rejectNullArgument() {
new PidfileIterator(null);
}
@Test(expected = IllegalStateException.class)
public void ioExceptionBecomesIllegalStateException() {
new PidfileIterator(new File("/bogus/file"));
}
/**
* Confirm that we iterate over the lines, ignoring comment lines and blank
* or empty lines.
*/
@Test
public void simpleExerciseWithPidsBlanksAndComments() throws IOException {
String[] lines =
new String[] {"#comment", " #comment start with space",
FIRST_PID, SECOND_PID, "", THIRD_PID, " "};
File dummyFile = null;
try {
dummyFile =
File.createTempFile("TestValidatorProcessParameter",
"dummyFile");
dummyFile.deleteOnExit();
loadPidFile(dummyFile, lines);
PidfileIterator iterator = new PidfileIterator(dummyFile);
assertTrue("has first line", iterator.hasNext());
assertEquals("first line", FIRST_PID, iterator.next());
assertTrue("has second line", iterator.hasNext());
assertEquals("second line", SECOND_PID, iterator.next());
assertTrue("has third line", iterator.hasNext());
assertEquals("third line", THIRD_PID, iterator.next());
assertFalse("no fourth line", iterator.hasNext());
} finally {
if (dummyFile != null || dummyFile.exists()) {
dummyFile.delete();
}
}
}
/**
* Fill the file with these lines.
*/
private void loadPidFile(File file, String[] lines) throws IOException {
Writer writer = null;
try {
writer = new FileWriter(file);
for (String line : lines) {
writer.write(line + '\n');
}
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
System.err.println("failed to close writer on file '"
+ file + "'");
}
}
}
}
}