package wikokit.base.wikt.sql;
import wikokit.base.wikt.sql.TPage;
import wikokit.base.wikt.sql.TLang;
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.*;
import wikokit.base.wikipedia.sql.Connect;
import wikokit.base.wikipedia.language.LanguageType;
public class TPageTest {
public Connect ruwikt_parsed_conn, ruwikt_sqlite;
public TPageTest() {
}
@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);
// ruwikt_parsed_conn_sqlite
//ruwikt_sqlite = new Connect();
//ruwikt_sqlite.OpenSQLite(Connect.RUWIKT_HOST,Connect.RUWIKT_PARSED_DB,Connect.RUWIKT_USER,Connect.RUWIKT_PASS,LanguageType.ru);
}
@After
public void tearDown() {
ruwikt_parsed_conn.Close();
}
@Test
public void testInsert() {
System.out.println("insert_ru");
String page_title;
Connect conn = ruwikt_parsed_conn;
//page_title = "test_тыблоко";
page_title = ruwikt_parsed_conn.enc.EncodeFromJava("test_tybloko_3");
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, page_title);
if(null != p) {
TPage.delete(conn, page_title);
}
TPage p0 = TPage.insert(conn, page_title, word_count, wiki_link_count,
is_in_wiktionary, redirect_target);
assertTrue(null != p0);
p = TPage.get(conn, page_title);
assertTrue(null != p);
assertEquals(p0.getID(), p.getID());
assertTrue(p != null);
assertTrue(p.getID() > 0);
assertEquals(p.getWordCount(), word_count);
assertEquals(p.getWikiLinkCount(), wiki_link_count);
assertEquals(p.isInWiktionary(), is_in_wiktionary);
// delete temporary DB record
TPage.delete(conn, page_title);
p = TPage.get(conn, page_title);
assertTrue(p == null);
}
//TPage (Connect connect,int id) {
@Test
public void testGetByID() {
System.out.println("getByID_ru");
String page_title;
Connect conn = ruwikt_parsed_conn;
page_title = ruwikt_parsed_conn.enc.EncodeFromJava("test_tybloko_2");
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, page_title);
if(null != p) {
TPage.delete(conn, page_title);
}
TPage.insert(conn, page_title, word_count, wiki_link_count,
is_in_wiktionary, redirect_target);
p = TPage.get(conn, page_title);
assertTrue(p != null);
assertTrue(p.getID() > 0);
TPage p2 = TPage.getByID(conn, p.getID());
assertTrue(p2 != null);
assertEquals(p.getPageTitle(), p2.getPageTitle());
// delete temporary DB record
TPage.delete(conn, page_title);
p = TPage.get(conn, page_title);
assertTrue(p == null);
}
@Test // tests Insert() Get() and GetByID() with redirects
public void testRedirect() {
System.out.println("redirect_ru");
String page_title;
Connect conn = ruwikt_parsed_conn;
page_title = ruwikt_parsed_conn.enc.EncodeFromJava("test_neletnwi");
int word_count = 7;
int wiki_link_count = 13;
boolean is_in_wiktionary = true;
String redirect_target = ruwikt_parsed_conn.enc.EncodeFromJava("test_нелётный");
TPage p = null;
p = TPage.get(conn, page_title);
if(null != p) {
TPage.delete(conn, page_title);
}
TPage.insert(conn, page_title, word_count, wiki_link_count,
is_in_wiktionary, redirect_target);
p = TPage.get(conn, page_title);
assertTrue(p != null);
assertTrue(p.getID() > 0);
TPage p2 = TPage.getByID(conn, p.getID());
assertTrue(p2 != null);
assertEquals(p.getPageTitle(), p2.getPageTitle());
// test the valid redirect
assertTrue(p2.isRedirect());
String result_redirect = p2.getRedirect();
assertTrue(result_redirect.equalsIgnoreCase(redirect_target));
// delete temporary DB record
TPage.delete(conn, page_title);
p = TPage.get(conn, page_title);
assertTrue(p == null);
}
@Test
public void test_getByPrefix() {
System.out.println("getByPrefix");
int limit;
String prefix;
Connect conn = ruwikt_parsed_conn;
String word1 = "zzzz1";
String word2 = "zzzz2";
String word3 = "zzzz3_with_redirect";
prefix = ruwikt_parsed_conn.enc.EncodeFromJava("zzzz");
int word_count = 7;
int wiki_link_count = 13;
boolean is_in_wiktionary = true;
String redirect_target = null;
TPage p[] = null;
//TPage.insert(conn, page_title, word_count, wiki_link_count, is_in_wiktionary);
TPage.insert(conn, word1, word_count, wiki_link_count, is_in_wiktionary, redirect_target);
TPage.insert(conn, word2, word_count, wiki_link_count, is_in_wiktionary, redirect_target);
redirect_target = ruwikt_parsed_conn.enc.EncodeFromJava("test_redirect_target");
TPage.insert(conn, word3, word_count, wiki_link_count, is_in_wiktionary, redirect_target);
// tests
limit = 0;
boolean b_skip_redirects = true;
boolean b_meaning = false;
boolean b_sem_rel = false;
TLang source_lang[] = new TLang [0];
p = TPage.getByPrefix(conn, prefix, limit, b_skip_redirects,
source_lang,
b_meaning, b_sem_rel);
assertEquals(p.length, 0);
limit = 1;
p = TPage.getByPrefix(conn, prefix, limit, b_skip_redirects,
source_lang,
b_meaning, b_sem_rel);
assertEquals(p.length, 1);
limit = -1;
p = TPage.getByPrefix(conn, prefix, limit, b_skip_redirects,
source_lang,
b_meaning, b_sem_rel);
assertEquals(p.length, 2);
limit = 3;
b_skip_redirects = false;
p = TPage.getByPrefix(conn, prefix, limit, b_skip_redirects,
source_lang,
b_meaning, b_sem_rel);
assertEquals(p.length, 3);
assertTrue(!p[0].isRedirect());
assertTrue(!p[1].isRedirect());
assertTrue( p[2].isRedirect());
assertEquals(p[0].getWordCount(), word_count);
assertEquals(p[0].getWikiLinkCount(), wiki_link_count);
assertEquals(p[0].isInWiktionary(), is_in_wiktionary);
// delete temporary DB record
TPage.delete(conn, word1);
TPage.delete(conn, word2);
TPage.delete(conn, word3);
}
}