package wikokit.base.wikt.sql; 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 wikipedia.sql.UtilSQL; import wikokit.base.wikipedia.language.LanguageType; //import wikt.constant.ContextLabel; //import wikt.util.WikiWord; //import wikt.word.WQuote; import wikokit.base.wikt.word.WMeaning; import wikokit.base.wikt.multi.ru.WMeaningRu; public class TWikiTextTest { public Connect ruwikt_parsed_conn; public TWikiTextTest() { } @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); } @After public void tearDown() { ruwikt_parsed_conn.Close(); } @Test public void testStoreToDB() { System.out.println("storeToDB_ru_en"); String text = "test_TWikiText_storeToDB_ru"; Connect conn = ruwikt_parsed_conn; LanguageType lang_section; String page_title; page_title = "airplane"; lang_section = LanguageType.en; // English word String _definition = "A programmable_test calculation_tests_test"; String line = "# A [[programmable_test]] [[calculation_test]]s_test"; WMeaning wmeaning = WMeaningRu.parseOneDefinition(page_title, lang_section, line); assertNotNull(wmeaning); assertTrue(wmeaning.getDefinition().equalsIgnoreCase(_definition)); String line2 = wmeaning.getWikifiedText(); assertTrue(line2.equalsIgnoreCase("A [[programmable_test]] [[calculation_test]]s_test")); // without "# " TWikiText twiki_text = TWikiText.storeToDB (conn, wmeaning.getWikiText()); assertNotNull(twiki_text); // check that two pages should appear in table 'page': "programmable" and "calculation" TPage page_programmable = TPage.get(conn, "programmable_test"); TPage page_calculation = TPage.get(conn, "calculation_test"); assertNotNull(page_programmable); assertNotNull(page_calculation); // check that 1 record should appear in table 'wiki_text' TWikiText wiki_text = TWikiText.get(conn, _definition); assertNotNull(wiki_text); // check that 1 record should appear in tables 'inflection', 'page_inflection' TInflection infl_calculations = TInflection.get(conn, "calculation_tests_test"); assertNotNull(infl_calculations); TPageInflection pti_calc = TPageInflection.get(conn, page_calculation, infl_calculations); assertNotNull(pti_calc); // check that 2 record should appear in table 'wiki_text_words' TWikiTextWords w_calc = TWikiTextWords.getByWikiTextAndPageAndInflection(conn, wiki_text, page_calculation, pti_calc); TWikiTextWords w_prog = TWikiTextWords.getByWikiTextAndPageAndInflection(conn, wiki_text, page_programmable, null); assertNotNull(w_calc); assertNotNull(w_prog); // delete temporary records // wiki_text = "A programmable_test calculation_tests_test" // Attention: words of this wiki_text should be deleted before the line "TWikiText.deleteWithWords(conn, w_text);" TWikiText.deleteWithWords(conn, twiki_text); String[] pages_test = {"programmable_test", "calculation_test"}; for(String p: pages_test) { TWikiText w_text = TWikiText.get(conn, p); if(null != w_text) TWikiText.deleteWithWords(conn, w_text); TPage.delete(conn, p); } // inflection = "calculation_tests_test" TInflection.delete(conn, infl_calculations); TPageInflection.delete(conn, pti_calc); } @Test public void testInsert() { System.out.println("insert_ru"); String text = "test_TWikiText_insert_ru"; String wikified_text = "[[test_TWikiText_insert_ru]]"; Connect conn = ruwikt_parsed_conn; // insert page, get wiki_text.id TWikiText p = null, p2=null, p3=null; p = TWikiText.get(conn, text); if(null != p) { TWikiText.delete(conn, p); } // p == p2 p = TWikiText.insert(conn, text, wikified_text); p2 = TWikiText.get(conn, text); p3 = TWikiText.getByID(conn, p.getID()); assertTrue(p != null); assertTrue(p2 != null); assertTrue(p3 != null); assertTrue(p.getID() > 0); assertEquals(p.getID(), p2.getID()); assertEquals(p.getText(), p3.getText()); TWikiText.delete(conn, p); // delete temporary DB record p = TWikiText.getByID(conn, p.getID()); // check deletion assertTrue(p == null); p2 = TWikiText.getByID(conn, p2.getID()); assertTrue(p2 == null); } @Test public void testInsert_backslash() { System.out.println("insert__backslash"); String wikified_text = " A [[backslash]] (symbol \"\\\")."; String text = " A backslash (symbol \"\\\")."; Connect conn = ruwikt_parsed_conn; // insert page, get wiki_text.id TWikiText p = null, p2=null, p3=null; p = TWikiText.get(conn, text); if(null != p) { TWikiText.delete(conn, p); } // p == p2 p = TWikiText.insert(conn, text, wikified_text); p2 = TWikiText.get(conn, text); p3 = TWikiText.getByID(conn, p.getID()); assertTrue(p != null); assertTrue(p2 != null); assertTrue(p3 != null); assertTrue(p.getID() > 0); assertEquals(p.getID(), p2.getID()); assertEquals(p.getText(), p3.getText()); TWikiText.delete(conn, p); // delete temporary DB record p = TWikiText.getByID(conn, p.getID()); // check deletion assertTrue(p == null); p2 = TWikiText.getByID(conn, p2.getID()); assertTrue(p2 == null); } }