package tests.net.sf.jabref.imports;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import net.sf.jabref.BibtexDatabase;
import net.sf.jabref.BibtexEntry;
import net.sf.jabref.imports.BibtexParser;
import net.sf.jabref.imports.EntryFromFileCreator;
import net.sf.jabref.imports.EntryFromFileCreatorManager;
import net.sf.jabref.imports.ParserResult;
/**
*
* @version 11.11.2008 | 21:51:54
*
*/
public class EntryFromFileCreatorManagerTest extends TestCase {
private BibtexDatabase database;
private File existingFile;
private File notExistingFile;
private File pdfNotInDatabase;
EntryFromFileCreatorManager manager1;
EntryFromFileCreatorManager manager2;
protected void setUp() throws Exception {
super.setUp();
existingFile = new File("src/tests/net/sf/jabref/imports/unlinkedFilesTestFolder/pdfInDatabase.pdf");
notExistingFile = new File("src/tests/net/sf/jabref/imports/unlinkedFilesTestFolder/null.pdf");
pdfNotInDatabase = new File("src/tests/net/sf/jabref/imports/unlinkedFilesTestFolder/pdfNotInDatabase.pdf");
manager1 = new EntryFromFileCreatorManager();
ParserResult result = BibtexParser.parse(new FileReader("src/tests/net/sf/jabref/util/unlinkedFilesTestBib.bib"));
database = result.getDatabase();
}
public void testGetCreator() throws Exception {
EntryFromFileCreator creator = manager1.getEntryCreator(notExistingFile);
assertNull(creator);
creator = manager1.getEntryCreator(existingFile);
assertNotNull(creator);
assertTrue(creator.accept(existingFile));
}
public void testAddEntrysFromFiles() throws Exception {
List<File> files = new ArrayList<File>();
files.add(pdfNotInDatabase);
files.add(notExistingFile);
manager2 = new EntryFromFileCreatorManager();
List<String> errors = manager2.addEntrysFromFiles(files, database, null, true);
/**
* One file doesn't exist, so adding it as an entry should lead to an
* error message.
*/
assertEquals(1, errors.size());
boolean file1Found = false, file2Found = false;
for (BibtexEntry entry : database.getEntries()) {
String filesInfo = entry.getField("file");
if (filesInfo.contains(files.get(0).getName())) {
file1Found = true;
}
if (filesInfo.contains(files.get(1).getName())) {
file2Found = true;
}
}
assertTrue(file1Found);
assertFalse(file2Found);
}
}