package org.jabref.logic.autocompleter;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.jabref.model.entry.BibEntry;
import org.junit.Assert;
import org.junit.Test;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class EntireFieldAutoCompleterTest {
@SuppressWarnings("unused")
@Test(expected = NullPointerException.class)
public void initAutoCompleterWithNullPreferenceThrowsException() {
new EntireFieldAutoCompleter("field", null);
}
@SuppressWarnings("unused")
@Test(expected = NullPointerException.class)
public void initAutoCompleterWithNullFieldThrowsException() {
new EntireFieldAutoCompleter(null, mock(AutoCompletePreferences.class));
}
@Test
public void completeWithoutAddingAnythingReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeAfterAddingNullReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
autoCompleter.addBibtexEntry(null);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeAfterAddingEmptyEntryReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeAfterAddingEntryWithoutFieldReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("title", "testTitle");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeValueReturnsValue() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "testValue");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("testValue");
Assert.assertEquals(Arrays.asList("testValue"), result);
}
@Test
public void completeBeginnigOfValueReturnsValue() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "testValue");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Arrays.asList("testValue"), result);
}
@Test
public void completeLowercaseValueReturnsValue() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "testValue");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("testvalue");
Assert.assertEquals(Arrays.asList("testValue"), result);
}
@Test
public void completeNullReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "testKey");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete(null);
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeEmptyStringReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "testKey");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeReturnsMultipleResults() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entryOne = new BibEntry();
entryOne.setField("field", "testValueOne");
autoCompleter.addBibtexEntry(entryOne);
BibEntry entryTwo = new BibEntry();
entryTwo.setField("field", "testValueTwo");
autoCompleter.addBibtexEntry(entryTwo);
List<String> result = autoCompleter.complete("testValue");
Assert.assertEquals(Arrays.asList("testValueOne", "testValueTwo"), result);
}
@Test
public void completeShortStringReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "val");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("va");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeTooShortInputReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
when(preferences.getShortestLengthToComplete()).thenReturn(100);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "testValue");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeBeginnigOfSecondWordReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "test value");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("val");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completePartOfWordReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "test value");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("lue");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeReturnsWholeFieldValue() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
EntireFieldAutoCompleter autoCompleter = new EntireFieldAutoCompleter("field", preferences);
BibEntry entry = new BibEntry();
entry.setField("field", "test value");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("te");
Assert.assertEquals(Arrays.asList("test value"), result);
}
}