package org.wikibrain.core.dao;
import gnu.trove.map.TIntIntMap;
import gnu.trove.set.TIntSet;
import org.junit.Test;
import org.wikibrain.core.dao.sql.RedirectSqlDao;
import org.wikibrain.core.dao.sql.TestDaoUtil;
import org.wikibrain.core.dao.sql.WpDataSource;
import org.wikibrain.core.lang.Language;
import org.wikibrain.core.lang.LanguageInfo;
import org.wikibrain.core.model.LocalPage;
import org.wikibrain.core.model.NameSpace;
import org.wikibrain.core.model.Title;
import java.io.IOException;
import java.sql.SQLException;
/**
*/
public class TestRedirectDao {
@Test
public void test() throws ClassNotFoundException, IOException, SQLException, DaoException{
WpDataSource wpDs = TestDaoUtil.getWpDataSource();
LanguageInfo langInfo = LanguageInfo.getByLangCode("en");
Language lang = langInfo.getLanguage();
RedirectSqlDao redirectDao = new RedirectSqlDao(wpDs);
redirectDao.beginLoad();
redirectDao.save(lang, 0, 5);
redirectDao.save(lang, 1, 5);
redirectDao.save(lang, 2, 6);
redirectDao.save(LanguageInfo.getByLangCode("la").getLanguage(), 3, 5);
redirectDao.endLoad();
assert (redirectDao.isRedirect(lang, 0));
assert (redirectDao.isRedirect(lang, 1));
assert (redirectDao.isRedirect(lang, 2));
assert (!redirectDao.isRedirect(lang, 3));
assert (redirectDao.resolveRedirect(lang, 0)==5);
assert (redirectDao.resolveRedirect(lang, 1)==5);
assert (redirectDao.resolveRedirect(lang, 2)==6);
LocalPage lp = new LocalPage(lang, 5, new Title("The Joy of Testing: The GLaDoS Story", langInfo), NameSpace.ARTICLE);
TIntSet redirects = redirectDao.getRedirects(lp);
assert (redirects.contains(0));
assert (redirects.contains(1));
assert (!redirects.contains(2));
TIntIntMap allRedirects = redirectDao.getAllRedirectIdsToDestIds(lang);
assert (allRedirects.get(0)==5);
assert (allRedirects.get(1)==5);
assert (allRedirects.get(2)==6);
assert (allRedirects.get(3)==-1);
}
}