package org.jabref.model.database;
import org.jabref.model.entry.BibEntry;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class DuplicationCheckerTest {
private BibDatabase database;
@Before
public void setUp() {
database = new BibDatabase();
}
@Test
public void addEntry() {
BibEntry entry = new BibEntry();
entry.setCiteKey("AAA");
database.insertEntry(entry);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 1);
}
@Test
public void addAndRemoveEntry() {
BibEntry entry = new BibEntry();
entry.setCiteKey("AAA");
database.insertEntry(entry);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 1);
database.removeEntry(entry);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 0);
}
@Test
public void changeCiteKey() {
BibEntry entry = new BibEntry();
entry.setCiteKey("AAA");
database.insertEntry(entry);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 1);
entry.setCiteKey("BBB");
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 0);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("BBB"), 1);
}
@Test
public void setCiteKeySameKeyDifferentEntries() {
BibEntry entry0 = new BibEntry();
entry0.setCiteKey("AAA");
database.insertEntry(entry0);
BibEntry entry1 = new BibEntry();
entry1.setCiteKey("BBB");
database.insertEntry(entry1);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 1);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("BBB"), 1);
entry1.setCiteKey("AAA");
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 2);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("BBB"), 0);
}
@Test
public void removeMultipleCiteKeys(){
BibEntry entry0 = new BibEntry();
entry0.setCiteKey("AAA");
database.insertEntry(entry0);
BibEntry entry1 = new BibEntry();
entry1.setCiteKey("AAA");
database.insertEntry(entry1);
BibEntry entry2 = new BibEntry();
entry2.setCiteKey("AAA");
database.insertEntry(entry2);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 3);
database.removeEntry(entry2);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 2);
database.removeEntry(entry1);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 1);
database.removeEntry(entry0);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 0);
}
@Test
public void addEmptyCiteKey(){
BibEntry entry = new BibEntry();
entry.setCiteKey("");
database.insertEntry(entry);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences(""), 0);
}
@Test
public void removeEmptyCiteKey(){
BibEntry entry = new BibEntry();
entry.setCiteKey("AAA");
database.insertEntry(entry);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 1);
entry.setCiteKey("");
database.removeEntry(entry);
assertEquals(database.getDuplicationChecker().getNumberOfKeyOccurrences("AAA"), 0);
}
}