package tests.net.sf.jabref.gui; import java.awt.event.ActionEvent; import java.io.File; import junit.framework.TestCase; import net.sf.jabref.BibtexDatabase; import net.sf.jabref.BibtexEntry; import net.sf.jabref.EntryEditor; import net.sf.jabref.FieldEditor; import net.sf.jabref.FieldTextArea; import net.sf.jabref.Globals; import net.sf.jabref.JabRef; import net.sf.jabref.JabRefPreferences; import net.sf.jabref.autocompleter.AbstractAutoCompleter; import net.sf.jabref.autocompleter.AutoCompleterFactory; import net.sf.jabref.autocompleter.DefaultAutoCompleter; import net.sf.jabref.autocompleter.NameFieldAutoCompleter; import net.sf.jabref.imports.ParserResult; import tests.net.sf.jabref.testutils.TestUtils; /** * * @author kahlert, cordes * */ public class AutoCompleterTest extends TestCase { private static final String OTHER_FIELD = "title"; private static final String AUTHOR_FIELD = "author"; private static final String CROSSREF_FIELD = "crossref"; private static final String ENTIRE_FIELD = "journal"; public static final String PATH_TO_TEST_BIBTEX = "src/tests/net/sf/jabref/bibtexFiles/test.bib"; public void testAutoCompleterFactory() { AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(AUTHOR_FIELD); assertTrue(autoCompleter instanceof NameFieldAutoCompleter); autoCompleter = AutoCompleterFactory.getFor(OTHER_FIELD); assertTrue(autoCompleter instanceof DefaultAutoCompleter); } public void testDefaultAutoCompleter() { AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(OTHER_FIELD); for (BibtexEntry entry : getDatabse().getEntries()) { autoCompleter.addBibtexEntry(entry); } assertEquals("authentication", autoCompleter.complete("authentication")[0]); assertEquals(1, autoCompleter.complete("authentication").length); assertEquals("authentication", autoCompleter.complete("aut")[0]); assertEquals(1, autoCompleter.complete("aut").length); assertEquals("context", autoCompleter.complete("con")[0]); assertEquals(1, autoCompleter.complete("con").length); assertEquals(0, autoCompleter.complete("osta").length); assertEquals(0, autoCompleter.complete("osta").length); } public void testCrossRefCompleter() { AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(CROSSREF_FIELD); for (BibtexEntry entry : getDatabse().getEntries()) { autoCompleter.addBibtexEntry(entry); } assertEquals("1102917", autoCompleter.complete("1102917")[0]); assertEquals(1, autoCompleter.complete("1102917").length); assertEquals("1102917", autoCompleter.complete("11029")[0]); assertEquals(1, autoCompleter.complete("11029").length); assertEquals(0, autoCompleter.complete("osta").length); assertEquals(0, autoCompleter.complete("osta").length); } public void testEntireFieldCompleter() { AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(ENTIRE_FIELD); for (BibtexEntry entry : getDatabse().getEntries()) { autoCompleter.addBibtexEntry(entry); } assertEquals("Personal Ubiquitous Comput.", autoCompleter.complete("Personal Ubiquitous Comput.")[0]); assertEquals(1, autoCompleter.complete("Personal Ubiquitous Comput.").length); assertEquals("Personal Ubiquitous Comput.", autoCompleter.complete("Pers")[0]); assertEquals(1, autoCompleter.complete("Pers").length); assertEquals(0, autoCompleter.complete("osta").length); assertEquals(0, autoCompleter.complete("osta").length); } public void testNameFieldCompleter() { AbstractAutoCompleter autoCompleter = AutoCompleterFactory.getFor(AUTHOR_FIELD); for (BibtexEntry entry : getDatabse().getEntries()) { autoCompleter.addBibtexEntry(entry); } assertEquals("Kostakos, V.", autoCompleter.complete("Kostakos")[0]); assertEquals(2, autoCompleter.complete("Kostakos").length); assertEquals("Kostakos, V.", autoCompleter.complete("Kosta")[0]); assertEquals(2, autoCompleter.complete("Kosta").length); assertEquals("Kostakos, Vassilis", autoCompleter.complete("Kostakos, Va")[0]); assertEquals(1, autoCompleter.complete("Kostakos, Va").length); assertEquals("Vassilis Kostakos", autoCompleter.complete("Va")[0]); assertEquals(1, autoCompleter.complete("Va").length); assertEquals(0, autoCompleter.complete("osta").length); assertEquals(0, autoCompleter.complete("osta").length); assertEquals("Eric von Hippel", autoCompleter.complete("Eric")[0]); assertEquals(1, autoCompleter.complete("Eric").length); assertEquals("von Hippel, E.", autoCompleter.complete("von")[0]); assertEquals(2, autoCompleter.complete("von").length); assertEquals("Reagle, Jr., J. M.", autoCompleter.complete("Reagle")[0]); assertEquals(2, autoCompleter.complete("Reagle").length); assertEquals("Reagle, Jr., Joseph M.", autoCompleter.complete("Reagle, Jr., Jo")[0]); assertEquals(1, autoCompleter.complete("Reagle, Jr., Jo").length); assertEquals("Joseph M. Reagle, Jr.", autoCompleter.complete("Joseph")[0]); assertEquals(1, autoCompleter.complete("Joseph").length); assertEquals("van den Huevel, Jr., J. A.", autoCompleter.complete("van den")[0]); assertEquals(2, autoCompleter.complete("van den").length); assertEquals("Johan A van den Huevel, Jr.", autoCompleter.complete("Joh")[0]); assertEquals(1, autoCompleter.complete("Joh").length); assertEquals("Jr. Sherry, John F.", autoCompleter.complete("Jr. S")[0]); assertEquals(1, autoCompleter.complete("Jr.").length); assertEquals("Sherry, John F., J.", autoCompleter.complete("Sherry")[0]); assertEquals(2, autoCompleter.complete("Sherry").length); } public void testEntryEditorForNameFieldAutoCompleter() { // construct an EntryEditor ... JabRef jabref = TestUtils.getInitializedJabRef(); BibtexEntry bibtexEntry = new BibtexEntry(); bibtexEntry.setField("author", "Brigitte Laurant"); FieldEditor authorTextField = new FieldTextArea("author", "Hans Meiser"); EntryEditor editor = new EntryEditor(jabref.jrf, jabref.jrf.basePanel(), bibtexEntry); // perform action ... editor.storeFieldAction.actionPerformed(new ActionEvent(authorTextField, 0, "")); // test content of stored words in autocompleter ... AbstractAutoCompleter autoCompleter = jabref.jrf.basePanel().getAutoCompleter("author"); assertTrue(autoCompleter.indexContainsWord("Hans Meiser")); assertTrue(autoCompleter.indexContainsWord("Meiser, Hans")); TestUtils.closeJabRef(); } public void testEntryEditorForFieldAnotherAutoCompleter() { // construct an EntryEditor ... JabRef jabref = TestUtils.getInitializedJabRef(); BibtexEntry bibtexEntry = new BibtexEntry(); bibtexEntry.setField("journal", "Testtext"); FieldEditor authorTextField = new FieldTextArea("journal", "New Testtext"); EntryEditor editor = new EntryEditor(jabref.jrf, jabref.jrf.basePanel(), bibtexEntry); // perform action ... editor.storeFieldAction.actionPerformed(new ActionEvent(authorTextField, 0, "")); // test content of stored words in autocompleter ... AbstractAutoCompleter autoCompleter = jabref.jrf.basePanel().getAutoCompleter("journal"); assertTrue(autoCompleter.indexContainsWord("New Testtext")); TestUtils.closeJabRef(); } private BibtexDatabase getDatabse() { Globals.prefs = JabRefPreferences.getInstance(); File fileToLoad = new File(PATH_TO_TEST_BIBTEX); ParserResult pr = JabRef.openBibFile(fileToLoad.getPath(), true); BibtexDatabase filledDatabase = pr.getDatabase(); return filledDatabase; } }