package wikokit.base.wikt.sql; 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.language.LanguageType; import wikokit.base.wikipedia.sql.Connect; public class TLangTest { public Connect ruwikt_parsed_conn; public TLangTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { ruwikt_parsed_conn = new Connect(); // MySQL ruwikt_parsed_conn.Open(Connect.RUWIKT_HOST,Connect.RUWIKT_PARSED_DB,Connect.RUWIKT_USER,Connect.RUWIKT_PASS,LanguageType.ru); // SQLite //Connect.testSQLite(); //ruwikt_parsed_conn.OpenSQLite(Connect.RUWIKT_SQLITE, LanguageType.ru); // initialize languages TLang.createFastMaps(ruwikt_parsed_conn); } @After public void tearDown() { ruwikt_parsed_conn.Close(); } @Test public void testInsert() { System.out.println("insert_ru"); /* Connect conn = ruwikt_parsed_conn; String code = "ru"; //String lang_name = ruwikt_parsed_conn.enc.EncodeFromJava("Русский"); String name = ruwikt_parsed_conn.enc.EncodeFromJava("Russian"); TLang p = null; // blockhead test p = TLang.get(conn, null); assertTrue(null == p); LanguageType lt = LanguageType.ru; p = TLang.get(conn, lt); if(null != p) { TLang.delete(conn, lt); } //System.out.println("One warnings should be..."); TLang.insert(conn, code, name); p = TLang.get(conn, lt); assertTrue(p != null); int id = p.getID(); assertTrue(id > 0); lt = p.getLanguage(); assertTrue(lt.getCode().equalsIgnoreCase(code)); assertTrue(lt.getName().equalsIgnoreCase(name)); // todo lang_name also */ // delete temporary DB record //TLang.delete(conn, lt); //p = TLang.get(conn, lt); //assertTrue(p == null); } @Test public void testGetID() { System.out.println("getID"); // once upon a time: create Wiktionary parsed db // TLang.recreateTable(ruwikt_parsed_conn); // once upon a time: use Wiktionary parsed db TLang.createFastMaps(ruwikt_parsed_conn); // and every usual day int os_id = TLang.getIDFast(LanguageType.os); TLang tlang = TLang.get(ruwikt_parsed_conn, LanguageType.os); assertNotNull(tlang); assertEquals(tlang.getID(), os_id); } @Test public void testUpdate() { System.out.println("update"); int n_foreign_POS_old, n_translations_old; int n_foreign_POS, n_translations; TLang tlang = TLang.get(ruwikt_parsed_conn, LanguageType.os); assertNotNull(tlang); // save old values n_foreign_POS_old = tlang.getNumberPOS(); n_translations_old= tlang.getNumberTranslations(); TLang.update(ruwikt_parsed_conn, LanguageType.os, 111, 333); tlang = TLang.get(ruwikt_parsed_conn, LanguageType.os); assertNotNull(tlang); n_foreign_POS = tlang.getNumberPOS(); n_translations= tlang.getNumberTranslations(); assertEquals(111, n_foreign_POS); assertEquals(333, n_translations); // restore old values TLang.update(ruwikt_parsed_conn, LanguageType.os, n_foreign_POS_old, n_translations_old); } /* This test should go after testInsert(), else you will got a mess in the table 'lang'. */ @Test public void testRecreateTable() { System.out.println("recreateTable, fill table `lang`"); // TLang.recreateTable(ruwikt_parsed_conn); } @Test public void testParseLangCode() { System.out.println("parseLangCode"); String str; TLang[] langs; str = ""; langs = TLang.parseLangCode(str); assertTrue(langs != null); assertTrue(langs.length == 0); str = " not_valid language-code"; langs = TLang.parseLangCode(str); assertTrue(langs != null); assertTrue(langs.length == 0); str = " en only-one-valid-code"; langs = TLang.parseLangCode(str); assertTrue(langs != null); assertTrue(langs.length == 1); str = " en lt ru os fr it's enough"; langs = TLang.parseLangCode(str); assertTrue(langs != null); assertTrue(langs.length == 5); } @Test public void testIsEquals() { System.out.println("isEquals"); String str_lang2; TLang tlang1[]; boolean res; // isEquals(TLang tlang1[], String str_lang2) tlang1 = new TLang[0]; // source_lang[0] = TLang.get(LanguageType.en); // 0 == 0 str_lang2 = ""; res = TLang.isEquals(tlang1, str_lang2); assertTrue(res); // empty codes are equal // 0 == 0 str_lang2 = "non-language_code"; res = TLang.isEquals(tlang1, str_lang2); assertTrue(res); // "en" != 0 str_lang2 = "non-language_code and one language code en"; res = TLang.isEquals(tlang1, str_lang2); assertFalse(res); // "en" != "de" str_lang2 = "en"; tlang1 = new TLang[1]; tlang1[0] = TLang.get(LanguageType.de); res = TLang.isEquals(tlang1, str_lang2); assertFalse(res); // "os fr" == "fr os" str_lang2 = "os fr"; tlang1 = new TLang[2]; tlang1[0] = TLang.get(LanguageType.fr); tlang1[1] = TLang.get(LanguageType.os); res = TLang.isEquals(tlang1, str_lang2); assertTrue(res); } }