package wikokit.base.wikt.sql.index;
import wikokit.base.wikt.sql.index.IndexForeign;
import wikokit.base.wikt.sql.TPage;
import wikokit.base.wikipedia.sql.Connect;
import wikokit.base.wikipedia.language.LanguageType;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
public class IndexForeignTest {
public Connect ruwikt_parsed_conn;
String native_page_title;
public IndexForeignTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
ruwikt_parsed_conn = new Connect();
ruwikt_parsed_conn.Open(Connect.RUWIKT_HOST,Connect.RUWIKT_PARSED_DB,Connect.RUWIKT_USER,Connect.RUWIKT_PASS,LanguageType.ru);
Connect conn = ruwikt_parsed_conn;
native_page_title = ruwikt_parsed_conn.enc.EncodeFromJava("ru_water12");
int word_count = 7;
int wiki_link_count = 13;
boolean is_in_wiktionary = true;
String redirect_target = null;
TPage p = null;
p = TPage.get(conn, native_page_title);
if(null != p) {
TPage.delete(conn, native_page_title);
}
//TPage p0 =
TPage.insert(conn, native_page_title, word_count, wiki_link_count,
is_in_wiktionary, redirect_target);
}
@After
public void tearDown() {
Connect conn = ruwikt_parsed_conn;
// delete temporary DB record
TPage.delete(conn, native_page_title);
}
// deletes all index tables
//@Test
//public void testGenerateTables() {
// System.out.println("generateTables");
// LanguageType native_lang = LanguageType.ru;
//IndexForeign.generateTables(ruwikt_parsed_conn, native_lang); -
//}
@Test
public void testInsert() {
System.out.println("insert_ru");
Connect conn = ruwikt_parsed_conn;
TPage native_page;
String s, foreign_word, prefix_foreign_word;
LanguageType native_lang, foreign_lang;
IndexForeign[] index_foreign;
boolean foreign_has_definition;
// 0. test that foreign!=native => insert 0 records
int n_limit =-1;
foreign_has_definition = true;
foreign_word = "water12";
native_lang = LanguageType.en;
foreign_lang = LanguageType.en;
IndexForeign.insert(conn, foreign_word, foreign_has_definition,
native_page_title, native_lang, foreign_lang);
boolean b_meaning = false;
boolean b_sem_rel = false;
prefix_foreign_word = "water1";
index_foreign = IndexForeign.getByPrefixForeign(conn,
prefix_foreign_word, n_limit,
native_lang, foreign_lang,
b_meaning, b_sem_rel);
assertEquals(0, index_foreign.length);
// 1. test insert 1 records (foreign_word, native_page_title)
native_lang = LanguageType.ru;
foreign_lang = LanguageType.en;
IndexForeign.insert(conn, foreign_word, foreign_has_definition,
native_page_title, native_lang, foreign_lang);
index_foreign = IndexForeign.getByPrefixForeign(conn,
prefix_foreign_word, n_limit,
native_lang, foreign_lang,
b_meaning, b_sem_rel);
assertEquals(1, index_foreign.length);
native_page = index_foreign[0].getNativePage();
assertNotNull(native_page_title);
s = native_page.getPageTitle();
assertEquals(s, native_page_title);
// delete temporary DB record
IndexForeign.delete(conn, foreign_word, native_page_title,
native_lang, foreign_lang);
// 2. test insert only foreign_word (without native)
// todo
// delete temporary DB record
// delete record in index_native
// IndexForeign.delete(conn, foreign_word, native_page_title, foreign_lang);
// index_foreign = IndexForeign.getByNative(conn, native_page_title, foreign_lang);
// assertEquals(0, index_foreign.length);
// 3. test insert into table with complex code, e.g. index_slovio-la
native_lang = LanguageType.ru;
foreign_lang = LanguageType.slovio_la;
IndexForeign.insert(conn, foreign_word, foreign_has_definition,
native_page_title, native_lang, foreign_lang);
index_foreign = IndexForeign.getByPrefixForeign(conn,
prefix_foreign_word, n_limit,
native_lang, foreign_lang,
b_meaning, b_sem_rel);
assertEquals(1, index_foreign.length);
native_page = index_foreign[0].getNativePage();
assertNotNull(native_page_title);
s = native_page.getPageTitle();
assertEquals(s, native_page_title);
// delete temporary DB record
IndexForeign.delete(conn, foreign_word, native_page_title,
native_lang, foreign_lang);
}
@Test
public void testHasAndInsertIfAbsent() {
System.out.println("has and insertIfAbsent");
Connect conn = ruwikt_parsed_conn;
//TPage native_page;
String s, foreign_word; //prefix_foreign_word;
LanguageType native_lang, foreign_lang;
//IndexForeign[] index_foreign;
boolean foreign_has_definition, b_has;
int count;
foreign_has_definition = true;
foreign_word = "water12";
native_lang = LanguageType.en;
foreign_lang = LanguageType.en;
IndexForeign.insert(conn, foreign_word, foreign_has_definition,
native_page_title, native_lang, foreign_lang);
// 1. successfull insertion of 1 record (foreign_word, native_page_title)
native_lang = LanguageType.ru;
foreign_lang = LanguageType.en;
IndexForeign.insertIfAbsent(conn, foreign_word, foreign_has_definition,
native_page_title, native_lang, foreign_lang);
b_has = IndexForeign.has( conn, foreign_word, native_page_title,
foreign_lang);
assertTrue(b_has);
b_has = IndexForeign.has( conn, foreign_word, null,
foreign_lang);
assertFalse(b_has);
count = IndexForeign.count(conn, foreign_word, native_page_title, foreign_lang);
assertEquals(1, count);
// 2. failed insertion of the same record (foreign_word, native_page_title)
IndexForeign.insertIfAbsent(conn, foreign_word, foreign_has_definition,
native_page_title, native_lang, foreign_lang);
b_has = IndexForeign.has( conn, foreign_word, native_page_title,
foreign_lang);
assertTrue(b_has);
b_has = IndexForeign.has( conn, foreign_word, null,
foreign_lang);
assertFalse(b_has);
count = IndexForeign.count(conn, foreign_word, native_page_title, foreign_lang);
assertEquals(1, count);
// delete temporary DB record
IndexForeign.delete(conn, foreign_word, native_page_title,
native_lang, foreign_lang);
}
}