package wikokit.base.wikt.sql.index.test;

import wikokit.base.wikipedia.language.LanguageType;
import wikokit.base.wikipedia.sql.Connect;
import wikokit.base.wikt.sql.TLang;
import wikokit.base.wikt.sql.TLangPOS;
import wikokit.base.wikt.sql.TPOS;
import wikokit.base.wikt.sql.TPage;
import wikokit.base.wikt.sql.index.IndexNative;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import junit.framework.TestCase;

public class IndexNativeTest extends TestCase {

    public Context context = null;
    Connect ruwikt_conn;
    SQLiteDatabase db;
    
    TPage page;
    String page_title;
    TLangPOS tlang_pos;
    TLangPOS[] array_lang_pos;
    
    protected void setUp() throws Exception {
        super.setUp();
        
        ruwikt_conn = new Connect(context, LanguageType.ru);
        ruwikt_conn.openDatabase();
        db = ruwikt_conn.getDB();
        TLang.createFastMaps(db);
        TPOS.createFastMaps (db);    // once upon a time: use Wiktionary parsed db
        
        page_title = "колокольчик";
        page = TPage.get(db, page_title);
        assertNotNull(page);
        
        // let's found ID:
        // array_lang_pos = TLangPOS.get(db, page);
        /* array_lang_pos = TLangPOS.getRecursive(db, page);
        
        assertNotNull(array_lang_pos);
        assertTrue   (array_lang_pos.length > 0);
        tlang_pos = array_lang_pos[0];
        int lang_pos_id = tlang_pos.getID();
        assertTrue(lang_pos_id > 0);*/
    }

    protected void tearDown() throws Exception {
        super.tearDown();
        ruwikt_conn.close();
    }

    public void testCountNumberPOSWithDefinition() {
        int n_native_POS = IndexNative.countNumberPOSWithDefinition(db);
        assertTrue(n_native_POS > 50000); // number of Russian words in Russian Wiktionary
    }

    public void testGet() {
        
        IndexNative i = IndexNative.get(db, page_title);
        
        assertNotNull(i);
        assertTrue(i.getID() > 0);
        assertTrue(i.hasRelation());

        String s = i.getPageTitle();
        assertEquals(s, page_title);
    }

}
