package wikipedia.sql_idf;
import wikipedia.sql.Connect;
import junit.framework.*;
public class RelatedPageTest extends TestCase {
public Connect idfruwiki_conn;
public Connect idfsimplewiki_conn;
public RelatedPageTest(String testName) {
super(testName);
}
protected void setUp() throws Exception {
idfruwiki_conn = new Connect();
idfruwiki_conn.Open(Connect.IDF_RU_HOST, Connect.IDF_RU_DB, Connect.IDF_RU_USER, Connect.IDF_RU_PASS);
idfsimplewiki_conn = new Connect();
idfsimplewiki_conn.Open(Connect.IDF_SIMPLE_HOST, Connect.IDF_SIMPLE_DB, Connect.IDF_SIMPLE_USER, Connect.IDF_SIMPLE_PASS);
}
protected void tearDown() throws Exception {
idfruwiki_conn.Close();
idfsimplewiki_conn.Close();
}
/**
* Test of add method, of class wikipedia.sql_idf.RelatedPage.
*/
public void testAdd_simple() {
System.out.println("add_simple");
java.sql.Connection conn = idfsimplewiki_conn.conn;
String page_title = "test ' and \"";
String new_related_list = "all tests are related|test2|test3";
String result_related_list = "all_tests_are_related|test2|test3";
String related_list = null;
RelatedPage.delete(conn, page_title);
Page.delete(conn, page_title);
RelatedPage rp = new RelatedPage ();
if(rp.isInTable_RelatedPage(conn, page_title)) {
// unreachable statement
related_list = rp.getRelatedTitlesAsString();
} else {
rp.add(conn, page_title, new_related_list);
}
assertEquals(null, related_list);
if(rp.isInTable_RelatedPage(conn, page_title)) {
related_list = rp.getRelatedTitlesAsString();
}
assertTrue(related_list.equalsIgnoreCase(result_related_list));
// test delete
RelatedPage.delete(conn, page_title);
assertFalse(rp.isInTable_RelatedPage(conn, page_title));
Page.delete(conn, page_title);
}
/**
* Test that empty list of related pages is added.
*/
public void testAdd_empty_simple() {
System.out.println("add_empty_simple");
java.sql.Connection conn = idfsimplewiki_conn.conn;
String page_title = "test ' and \"";
String new_related_list = "";
String result_related_list = "";
String related_list = null;
RelatedPage.delete(conn, page_title);
Page.delete(conn, page_title);
RelatedPage rp = new RelatedPage ();
if(rp.isInTable_RelatedPage(conn, page_title)) {
// unreachable statement
related_list = rp.getRelatedTitlesAsString();
} else {
rp.add(conn, page_title, new_related_list);
}
if(rp.isInTable_RelatedPage(conn, page_title)) {
related_list = rp.getRelatedTitlesAsString();
}
assertEquals(0, related_list.length());
assertTrue(related_list.equalsIgnoreCase(result_related_list));
// delete
RelatedPage.delete(conn, page_title);
Page.delete(conn, page_title);
}
/**
* Test that empty list of related pages is added.
*/
public void testAdd_null_simple() {
System.out.println("add_null_simple");
java.sql.Connection conn = idfsimplewiki_conn.conn;
String page_title = "test ' and \"";
String new_related_list = null;
String result_related_list = "";
String related_list = null;
RelatedPage.delete(conn, page_title);
Page.delete(conn, page_title);
RelatedPage rp = new RelatedPage ();
if(rp.isInTable_RelatedPage(conn, page_title)) {
// unreachable statement
related_list = rp.getRelatedTitlesAsString();
} else {
rp.add(conn, page_title, new_related_list);
}
if(rp.isInTable_RelatedPage(conn, page_title)) {
related_list = rp.getRelatedTitlesAsString();
}
assertEquals(0, related_list.length());
assertTrue(related_list.equalsIgnoreCase(result_related_list));
// delete
RelatedPage.delete(conn, page_title);
Page.delete(conn, page_title);
}
/**
* Test add(title) when title exists in page, but it's absent in related_page.
* It should be chosen INSERT instead of UPDATE to the table related_page.
*/
public void testAdd_insert_or_update_simple() {
System.out.println("insert_or_update_simple");
java.sql.Connection conn = idfsimplewiki_conn.conn;
String page_title = "test_insert_or_update_simple";
String related_list = "test_related_pages_for_test_insert_or_update_simple";
String related_list_result = "";
int word_count = 84;
RelatedPage.delete(conn, page_title);
Page.delete(conn, page_title);
Page p = Page.getOrInsert(conn, page_title, word_count);
int page_id = p.getPageID();
assertTrue(page_id > 0);
assertEquals(word_count, p.getWordCount());
RelatedPage rp = new RelatedPage ();
boolean b = rp.isInTable_RelatedPage(conn, page_title);
assertFalse (b);
// main test:
rp.add(conn, page_title, related_list);
b = rp.isInTable_RelatedPage(conn, page_title);
assertTrue (b);
related_list_result = rp.getRelatedTitlesAsString();
assertTrue(related_list_result.length() > 0);
assertTrue(related_list.equalsIgnoreCase(related_list_result));
// delete
RelatedPage.delete(conn, page_title);
Page.delete(conn, page_title);
}
/**
* Test of getRelatedTitlesAsString method, of class wikipedia.sql_idf.RelatedPage.
*/
public void testGetRelatedTitlesAsString_simple() {
System.out.println("getRelatedTitlesAsString_simple");
java.sql.Connection conn = idfsimplewiki_conn.conn;
RelatedPage rp = new RelatedPage();
String page_title = "absent title";
String expResult = "";
String related_list = null;;
if(rp.isInTable_RelatedPage(conn, page_title)) {
// unreachable statement
related_list = rp.getRelatedTitlesAsString();
}
assertEquals(related_list, null);
}
/**
* Test of getRelatedTitlesAsArray method, of class wikipedia.sql_idf.RelatedPage.
*/
public void testGetRelatedTitlesAsArray() {
System.out.println("getRelatedTitlesAsArray");
java.sql.Connection conn = idfsimplewiki_conn.conn;
String page_title = "test ' and \"";
String new_related_list = "tests '|test2 \"|test3";
RelatedPage.delete(conn, page_title);
Page.delete(conn, page_title);
RelatedPage rp = new RelatedPage ();
rp.add(conn, page_title, new_related_list);
String[] list = null;
if(rp.isInTable_RelatedPage(conn, page_title)) {
list = rp.getRelatedTitlesAsArray();
}
assertTrue(3 == list.length);
// delete
RelatedPage.delete(conn, page_title);
Page.delete(conn, page_title);
}
}