package net.bible.android.control.versification; import net.bible.android.control.navigation.DocumentBibleBooksFactory; import org.crosswire.jsword.book.Books; import org.crosswire.jsword.book.basic.AbstractPassageBook; import org.crosswire.jsword.passage.Verse; import org.crosswire.jsword.passage.VerseRange; import org.crosswire.jsword.versification.BibleBook; import org.crosswire.jsword.versification.Versification; import org.crosswire.jsword.versification.system.SystemKJV; import org.crosswire.jsword.versification.system.Versifications; import org.junit.Before; import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsEqual.equalTo; import static org.mockito.Mockito.mock; /** * @author Martin Denham [mjdenham at gmail dot com] * @see gnu.lgpl.License for license details.<br> * The copyright to this program is held by it's author. */ public class BibleTraverserTest { private BibleTraverser bibleTraverser; private AbstractPassageBook testBook; @Before public void setup() { DocumentBibleBooksFactory mockDocumentBibleBooksFactory = mock(DocumentBibleBooksFactory.class); bibleTraverser = new BibleTraverser(mockDocumentBibleBooksFactory); testBook = (AbstractPassageBook) Books.installed().getBook("ESV"); } @Test public void testGetNextVerseWrapsToNextChapter() throws Exception { assertThat(bibleTraverser.getNextVerse(testBook, TestData.KJV_PS_14_7).getVerse(), equalTo(1)); } @Test public void testGetPreviousVerseWrapsToPreviousChapter() throws Exception { assertThat(bibleTraverser.getPrevVerse(testBook, TestData.KJV_PS_14_1).getVerse(), equalTo(6)); } @Test public void testGetNextVerseRangeWrapsToNextChapter() throws Exception { assertThat(bibleTraverser.getNextVerseRange(testBook, TestData.KJV_PS_14).getStart(), equalTo(new Verse(TestData.KJV, BibleBook.PS, 15, 1))); assertThat(bibleTraverser.getNextVerseRange(testBook, TestData.KJV_PS_14).getEnd(), equalTo(new Verse(TestData.KJV, BibleBook.PS, 16, 2))); } @Test public void testGetPreviousVerseRangeWrapsToPreviousChapter() throws Exception { assertThat(bibleTraverser.getPreviousVerseRange(testBook, TestData.KJV_PS_14).getStart(), equalTo(new Verse(TestData.KJV, BibleBook.PS, 12, 8))); assertThat(bibleTraverser.getPreviousVerseRange(testBook, TestData.KJV_PS_14).getEnd(), equalTo(new Verse(TestData.KJV, BibleBook.PS, 13, 6))); } @Test public void testGetNextVerseRangeCanStopBeforeNextChapter() throws Exception { assertThat(bibleTraverser.getNextVerseRange(testBook, TestData.KJV_PS_14, false), equalTo(TestData.KJV_PS_14)); } interface TestData { Versification KJV = Versifications.instance().getVersification(SystemKJV.V11N_NAME); Verse KJV_PS_14_7 = new Verse(KJV, BibleBook.PS, 14, 7); Verse KJV_PS_14_1 = new Verse(KJV, BibleBook.PS, 14, 1); VerseRange KJV_PS_14 = new VerseRange(KJV, KJV_PS_14_1, KJV_PS_14_7); } }