package net.bible.service.download;
import org.crosswire.jsword.book.Book;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.Matchers.contains;
import static org.junit.Assert.assertThat;
public class RepoBookDeduplicatorTest {
private RepoBookDeduplicator repoBookDeduplicator;
@Before
public void setUp() throws Exception {
repoBookDeduplicator = new RepoBookDeduplicator();
}
@After
public void tearDown() throws Exception {
}
@Test
public void testAdd1() throws Exception {
Book svBook = FakeSwordBookFactory.createFakeRepoBook("DEF", "[DEF]\nLang=sv\nCategory=Biblical Texts\nVersion=1.0.0", null);
List<Book> books = Arrays.asList(svBook);
repoBookDeduplicator.addAll(books);
assertThat(repoBookDeduplicator.getBooks(), contains(svBook));
}
@Test
public void testAddNewer() throws Exception {
Book svBook = FakeSwordBookFactory.createFakeRepoBook("DEF", "[DEF]\nLang=sv\nCategory=Biblical Texts\nVersion=1.0.0", null);
List<Book> books1 = Arrays.asList(svBook);
repoBookDeduplicator.addAll(books1);
Book svBookNewer = FakeSwordBookFactory.createFakeRepoBook("DEF", "[DEF]\nLang=sv\nCategory=Biblical Texts\nVersion=1.0.1", null);
List<Book> books2 = Arrays.asList(svBookNewer);
repoBookDeduplicator.addAll(books2);
assertThat(repoBookDeduplicator.getBooks(), contains(svBookNewer));
assertThat(repoBookDeduplicator.getBooks().get(0).getProperty("Version"), equalTo("1.0.1"));
}
@Test
public void testAddOlder() throws Exception {
Book svBook = FakeSwordBookFactory.createFakeRepoBook("DEF", "[DEF]\nLang=sv\nCategory=Biblical Texts\nVersion=1.0.1", null);
List<Book> books1 = Arrays.asList(svBook);
repoBookDeduplicator.addAll(books1);
Book svBookOlder = FakeSwordBookFactory.createFakeRepoBook("DEF", "[DEF]\nLang=sv\nCategory=Biblical Texts\nVersion=1.0.0", null);
List<Book> books2 = Arrays.asList(svBookOlder);
repoBookDeduplicator.addAll(books2);
assertThat(repoBookDeduplicator.getBooks(), contains(svBook));
assertThat(repoBookDeduplicator.getBooks().get(0).getProperty("Version"), equalTo("1.0.1"));
}
@Test
public void testAddIfNotExists() throws Exception {
Book svBook = FakeSwordBookFactory.createFakeRepoBook("DEF", "[DEF]\nLang=sv\nCategory=Biblical Texts\nVersion=1.0.0", null);
List<Book> books1 = Arrays.asList(svBook);
repoBookDeduplicator.addAll(books1);
repoBookDeduplicator.addIfNotExists(books1);
assertThat(repoBookDeduplicator.getBooks(), contains(svBook));
assertThat(repoBookDeduplicator.getBooks().get(0).getProperty("Version"), equalTo("1.0.0"));
}
@Test
public void testAddIfNotExistsNewer() throws Exception {
Book svBook = FakeSwordBookFactory.createFakeRepoBook("DEF", "[DEF]\nLang=sv\nCategory=Biblical Texts\nVersion=1.0.0", null);
List<Book> books1 = Arrays.asList(svBook);
repoBookDeduplicator.addAll(books1);
Book svBookNewer = FakeSwordBookFactory.createFakeRepoBook("DEF", "[DEF]\nLang=sv\nCategory=Biblical Texts\nVersion=1.0.1", null);
List<Book> books2 = Arrays.asList(svBookNewer);
repoBookDeduplicator.addIfNotExists(books2);
assertThat(repoBookDeduplicator.getBooks(), contains(svBook));
assertThat(repoBookDeduplicator.getBooks().get(0).getProperty("Version"), equalTo("1.0.0"));
}
}