package yuku.alkitab.test; import android.support.annotation.Nullable; import junit.framework.TestCase; import yuku.alkitab.model.Book; import yuku.alkitab.model.FootnoteEntry; import yuku.alkitab.model.PericopeBlock; import yuku.alkitab.model.SingleChapterVerses; import yuku.alkitab.model.Version; import yuku.alkitab.model.XrefEntry; import yuku.alkitab.util.IntArrayList; import java.util.List; public class VersionTest extends TestCase { Version fakeVersion() { return new Version() { @Override public String getShortName() { return null; } @Override public String getLongName() { return null; } @Override public String getLocale() { return null; } @Override public int getMaxBookIdPlusOne() { return 0; } @Override public Book[] getConsecutiveBooks() { return new Book[0]; } @Override public Book getBook(final int bookId) { final Book res = new Book(); if (bookId == 0) { res.shortName = "Genesis"; res.abbreviation = "Gen"; res.chapter_count = 2; res.verse_counts = new int[]{31, 25}; } else if (bookId == 1) { res.shortName = "Exodus"; res.abbreviation = "Ex"; res.chapter_count = 2; res.verse_counts = new int[]{22, 25}; } return res; } @Override public Book getFirstBook() { return null; } @Nullable @Override public String loadVerseText(final int ari) { return null; } @Nullable @Override public String loadVerseText(final Book book, final int chapter_1, final int verse_1) { return null; } @Override public int loadVersesByAriRanges(final IntArrayList ariRanges, final IntArrayList result_aris, final List<String> result_verses) { return 0; } @Override public int loadPericope(final int bookId, final int chapter_1, final int[] aris, final PericopeBlock[] pericopeBlocks, final int max) { return 0; } @Override public SingleChapterVerses loadChapterText(final Book book, final int chapter_1) { return null; } @Override public SingleChapterVerses loadChapterTextLowercased(final Book book, final int chapter_1) { return null; } @Override public String loadChapterTextLowercasedWithoutSplit(final Book book, final int chapter_1) { return null; } @Override public XrefEntry getXrefEntry(final int arif) { return null; } @Override public FootnoteEntry getFootnoteEntry(final int arif) { return null; } }; } private void testReferenceRange0(final int ari_start, final int ari_end, final String result) throws Throwable { final Version version = fakeVersion(); assertEquals(result, version.referenceRange(ari_start, ari_end)); } public void testReferenceRange1() throws Throwable { testReferenceRange0(0x000101, 0x000101, "Genesis 1:1"); testReferenceRange0(0x000101, 0x000103, "Genesis 1:1–3"); testReferenceRange0(0x000101, 0x000201, "Genesis 1:1–2:1"); testReferenceRange0(0x000101, 0x000203, "Genesis 1:1–2:3"); testReferenceRange0(0x000100, 0x000100, "Genesis 1"); testReferenceRange0(0x000100, 0x000200, "Genesis 1–2"); // find out last verse by itself testReferenceRange0(0x000101, 0x000100, "Genesis 1:1–31"); testReferenceRange0(0x000201, 0x000200, "Genesis 2:1–25"); testReferenceRange0(0x000103, 0x000100, "Genesis 1:3–31"); testReferenceRange0(0x000203, 0x000200, "Genesis 2:3–25"); testReferenceRange0(0x000103, 0x000200, "Genesis 1:3–2:25"); testReferenceRange0(0x000903, 0x000900, "Genesis 9:3–end"); testReferenceRange0(0x010103, 0x010100, "Exodus 1:3–22"); testReferenceRange0(0x010203, 0x010200, "Exodus 2:3–25"); testReferenceRange0(0x010103, 0x010200, "Exodus 1:3–2:25"); testReferenceRange0(0x010903, 0x010900, "Exodus 9:3–end"); // first verse implied testReferenceRange0(0x000100, 0x000108, "Genesis 1:1–8"); testReferenceRange0(0x000200, 0x000208, "Genesis 2:1–8"); testReferenceRange0(0x000100, 0x000208, "Genesis 1:1–2:8"); testReferenceRange0(0x000200, 0x000908, "Genesis 2:1–9:8"); testReferenceRange0(0x000200, 0x000900, "Genesis 2–9"); testReferenceRange0(0x000203, 0x000900, "Genesis 2:3–9:end"); // different book testReferenceRange0(0x000100, 0x010100, "Genesis 1–Exodus 1"); testReferenceRange0(0x000100, 0x010107, "Genesis 1:1–Exodus 1:7"); testReferenceRange0(0x000107, 0x010100, "Genesis 1:7–Exodus 1:22"); testReferenceRange0(0x000107, 0x010107, "Genesis 1:7–Exodus 1:7"); } }