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 BibtexKeyAutoCompleterTest {
@SuppressWarnings("unused")
@Test(expected = NullPointerException.class)
public void initAutoCompleterWithNullPreferenceThrowsException() {
new BibtexKeyAutoCompleter(null);
}
@Test
public void completeWithoutAddingAnythingReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeAfterAddingNullReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
autoCompleter.addBibtexEntry(null);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeAfterAddingEmptyEntryReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
BibEntry entry = new BibEntry();
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeKeyReturnsKey() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
BibEntry entry = new BibEntry();
entry.setCiteKey("testKey");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("testKey");
Assert.assertEquals(Arrays.asList("testKey"), result);
}
@Test
public void completeBeginnigOfKeyReturnsKey() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
BibEntry entry = new BibEntry();
entry.setCiteKey("testKey");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Arrays.asList("testKey"), result);
}
@Test
public void completeLowercaseKeyReturnsKey() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
BibEntry entry = new BibEntry();
entry.setCiteKey("testKey");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("testkey");
Assert.assertEquals(Arrays.asList("testKey"), result);
}
@Test
public void completeNullReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
BibEntry entry = new BibEntry();
entry.setCiteKey("testKey");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete(null);
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeEmptyStringReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
BibEntry entry = new BibEntry();
entry.setCiteKey("testKey");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("");
Assert.assertEquals(Collections.emptyList(), result);
}
@Test
public void completeReturnsMultipleResults() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
BibEntry entryOne = new BibEntry();
entryOne.setCiteKey("testKeyOne");
autoCompleter.addBibtexEntry(entryOne);
BibEntry entryTwo = new BibEntry();
entryTwo.setCiteKey("testKeyTwo");
autoCompleter.addBibtexEntry(entryTwo);
List<String> result = autoCompleter.complete("testKey");
Assert.assertEquals(Arrays.asList("testKeyOne", "testKeyTwo"), result);
}
@Test
public void completeShortKeyReturnsKey() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
BibEntry entry = new BibEntry();
entry.setCiteKey("key");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("k");
Assert.assertEquals(Arrays.asList("key"), result);
}
@Test
public void completeTooShortInputReturnsNothing() {
AutoCompletePreferences preferences = mock(AutoCompletePreferences.class);
when(preferences.getShortestLengthToComplete()).thenReturn(100);
BibtexKeyAutoCompleter autoCompleter = new BibtexKeyAutoCompleter(preferences);
BibEntry entry = new BibEntry();
entry.setCiteKey("testKey");
autoCompleter.addBibtexEntry(entry);
List<String> result = autoCompleter.complete("test");
Assert.assertEquals(Collections.emptyList(), result);
}
}