package yuku.alkitab.test;
import junit.framework.TestCase;
import yuku.alkitab.base.util.Jumper;
import yuku.alkitab.model.Book;
public class JumperTest extends TestCase {
public static final String TAG = JumperTest.class.getSimpleName();
static Book[] books;
static {
String[] ss = {
"Kejadian", // 0
"Keluaran",
"Imamat",
"Bilangan",
"Ulangan",
"Yosua",
"Hakim-hakim",
"Rut",
"1 Samuel",
"2 Samuel",
"1 Raja-raja", // 10
"2 Raja-raja",
"1 Tawarikh",
"2 Tawarikh",
"Ezra",
"Nehemia",
"Ester",
"Ayub",
"Mazmur",
"Amsal",
"Pengkhotbah", // 20
"Kidung Agung",
"Yesaya",
"Yeremia",
"Ratapan",
"Yehezkiel",
"Daniel",
"Hosea",
"Yoel",
"Amos",
"Obaja", // 30
"Yunus",
"Mikha",
"Nahum",
"Habakuk",
"Zefanya",
"Hagai",
"Zakharia",
"Maleakhi",
"Matius",
"Markus", // 40
"Lukas",
"Yohanes",
"Kisah Para Rasul", // 43
"Roma",
"1 Korintus",
"2 Korintus",
"Galatia",
"Efesus",
"Filipi",
"Kolose", // 50
"1 Tesalonika",
"2 Tesalonika",
"1 Timotius",
"2 Timotius",
"Titus",
"Filemon",
"Ibrani",
"Yakobus",
"1 Petrus",
"2 Petrus", // 60
"1 Yohanes",
"2 Yohanes",
"3 Yohanes",
"Yudas",
"Wahyu", // 65
};
books = new Book[ss.length];
for (int i = 0; i < ss.length; i++) {
Book k = new Book();
k.shortName = ss[i];
k.bookId = i;
books[i] = k;
}
}
void testParse(String reference, boolean expectOk, int expectBookId, int expectChapter_1, int expectVerse_1, final boolean expectHasRange) {
long startTime = System.currentTimeMillis();
//noinspection Convert2Lambda,Anonymous2MethodRef
final Jumper.Logger logger = new Jumper.Logger() {
@Override
public void d(final String msg) {
System.out.println(msg);
}
};
try {
final Jumper jumper = new Jumper(reference, logger);
boolean ok = jumper.getParseSucceeded();
if (ok) {
int bookId = jumper.getBookId(books);
assertEquals(expectBookId, bookId);
int chapter_1 = jumper.getChapter();
assertEquals(expectChapter_1, chapter_1);
int verse_1 = jumper.getVerse();
assertEquals(expectVerse_1, verse_1);
boolean hasRange = jumper.getHasRange();
assertEquals(expectHasRange, hasRange);
logger.d(reference + " -> " + expectBookId + " " + expectChapter_1 + " " + expectVerse_1);
} else {
assertEquals(expectOk, ok);
logger.d(reference + " -> false");
}
} finally {
logger.d("need " + (System.currentTimeMillis() - startTime) + " ms");
}
}
public void testParse1() throws Throwable {
testParse("Kej 1:1", true, 0, 1, 1, false);
testParse("K 1:1", true, 0, 1, 1, false);
testParse("K 1 1", true, 0, 1, 1, false);
testParse("K 1 1", true, 0, 1, 1, false);
testParse("Kej1 1", true, 0, 1, 1, false);
testParse("K1.1", true, 0, 1, 1, false);
testParse("Keluaran 1:1", true, 1, 1, 1, false);
testParse("Kel 1:1", true, 1, 1, 1, false);
testParse("Klauran 1:1", true, 1, 1, 1, false);
testParse("Kej 13", true, 0, 13, 0, false);
testParse("Kej13", true, 0, 13, 0, false);
testParse("Kej 1 3", true, 0, 1, 3, false);
testParse("Kej1 34", true, 0, 1, 34, false);
testParse("Kej", true, 0, 0, 0, false);
testParse("Kel", true, 1, 0, 0, false);
testParse("Kid", true, 21, 0, 0, false);
testParse("Kej 4 5 1 3", false, 0, 0, 0, false);
testParse("Kej 4 5 1", false, 0, 0, 0, false);
testParse("Kisah", true, 43, 0, 0, false);
testParse("Kisah 4", true, 43, 4, 0, false);
testParse("Kisah 4 999", true, 43, 4, 999, false);
testParse("Kisah para", true, 43, 0, 0, false);
testParse("Kisah para 4", true, 43, 4, 0, false);
testParse("Kisah para 4 999", true, 43, 4, 999, false);
testParse("Kisah rasul", true, 43, 0, 0, false);
testParse("Kisah rasul 4", true, 43, 4, 0, false);
testParse("Kisah rasul 4 999", true, 43, 4, 999, false);
// number at front
testParse("1yoh", true, 61, 0, 0, false);
testParse("2yo", true, 62, 0, 0, false);
testParse("3y", true, 63, 0, 0, false);
testParse("1yoh 4 5", true, 61, 4, 5, false);
testParse("2yo 4 5", true, 62, 4, 5, false);
testParse("3y 4 5", true, 63, 4, 5, false);
testParse("1 yoh 4 5", true, 61, 4, 5, false);
testParse("2 yo 4 5", true, 62, 4, 5, false);
testParse("3 y 4 5", true, 63, 4, 5, false);
testParse("1 yoh4 5", true, 61, 4, 5, false);
testParse("2 yo4 5", true, 62, 4, 5, false);
testParse("3 y4 5", true, 63, 4, 5, false);
testParse("1yoh4 5", true, 61, 4, 5, false);
testParse("2yo4 5", true, 62, 4, 5, false);
testParse("3y4 5", true, 63, 4, 5, false);
testParse("1yoh4", true, 61, 4, 0, false);
testParse("2yo4", true, 62, 4, 0, false);
testParse("3y4", true, 63, 4, 0, false);
// tanda strip di nama kitab
testParse("1raja-raja 4 999", true, 10, 4, 999, false);
testParse("2 raja-raja 4 999", true, 11, 4, 999, false);
testParse("kidung-agung 4 999", true, 21, 4, 999, false);
testParse("3-yoha 4 999", true, 63, 4, 999, false);
// with verse range!
testParse("Kejadian 1-2", true, 0, 1, 0, true);
testParse("Kejadian 1:2-3", true, 0, 1, 2, true);
testParse("Kejadian 1:2-3:4", true, 0, 1, 2, true);
testParse("Kejadian 11-22", true, 0, 11, 0, true);
testParse("Kejadian 11- 22", true, 0, 11, 0, true);
testParse("Kejadian 11 -22", true, 0, 11, 0, true);
testParse("Kejadian 11 - 22", true, 0, 11, 0, true);
testParse("Kejadian 11:22-33:44", true, 0, 11, 22, true);
// looks like verse range, but it is not actually one
testParse("Kisah-rasul", true, 43, 0, 0, false);
testParse("Kisah-rasul-4", true, 43, 4, 0, false);
testParse("Kisah-rasul-4 999", true, 43, 4, 999, false);
testParse("Kisah-rasul-4:999", true, 43, 4, 999, false);
// another verse ranges
testParse("1yoh 4-5", true, 61, 4, 0, true);
testParse("2 yo 5:6-7", true, 62, 5, 6, true);
testParse("3y6:7-8", true, 63, 6, 7, true);
// verses with a b etc
testParse("Kejadian 11:13-22", true, 0, 11, 13, true);
testParse("Kejadian 11:13b-22", true, 0, 11, 13, true);
testParse("Kejadian 11:13a-22", true, 0, 11, 13, true);
testParse("Kejadian 11:13-22c", true, 0, 11, 13, true);
testParse("Kejadian 11:13e-22", true, 0, 11, 13, true);
testParse("Kejadian 11:13e-22e", true, 0, 11, 13, true);
// OSIS without and with ranges
testParse("Gen.1", true, 0, 1, 0, false);
testParse("John.2", true, 42, 2, 0, false);
testParse("Rev.11.13", true, 65, 11, 13, false);
testParse("Gen.11-Gen.12", true, 0, 11, 0, true);
testParse("Gen.11.12-Gen.22.3", true, 0, 11, 12, true);
testParse("Rev.11.13-Rev.12", true, 65, 11, 13, true);
String[] ss = { "Kej", "Kel",
"Im", "Bil", "Ul", "Yos",
"Hak", "Rut", "1Sam", "2Sam", "1Raj", "2Raj", "1Taw", "2Taw", "Ezr",
"Neh", "Est", "Ayub", "Mazm", "Ams", "Pengkh", "Kid",
"Yes", "Yer", "Rat", "Yeh", "Dan", "Hos", "Yoel", "Am", "Ob", "Yun",
"Mi", "Nah", "Hab", "Zef", "Hag", "Za", "Mal",
"Mat", "Mr", "Luk", "Yoh", "Kis", "Rom", "1Kor", "2Kor", "Gal", "Ef", "Fili", "Kol",
"1Tes", "2Tes", "1Tim", "2Tim", "Tit",
"Filem", "Ibr", "Yak", "1Pet", "2Pet", "1Yoh", "2Yoh", "3Yoh", "Yud",
"Wahy",
};
for (int i = 0; i < ss.length; i++) {
String s = ss[i];
testParse(s, true, i, 0, 0, false);
}
}
}