/////////////////////////////////////////////////////////////////////// // File: loadlang_test.cc // Description: Test loading of All languages and Scripts for Tesseract. // Author: Shree Devi Kumar // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /////////////////////////////////////////////////////////////////////// #include "include_gunit.h" #include "baseapi.h" #include namespace { class QuickTest : public testing::Test { protected: virtual void SetUp() { start_time_ = time(nullptr); } virtual void TearDown() { const time_t end_time = time(nullptr); EXPECT_TRUE(end_time - start_time_ <=25) << "The test took too long - " << ::testing::PrintToString(end_time - start_time_); } time_t start_time_; }; void LangLoader(const char* lang, const char* tessdatadir) { tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI(); ASSERT_FALSE(api->Init(tessdatadir, lang)) << "Could not initialize tesseract for $lang."; api->End(); } // For all languages class LoadLanguage : public QuickTest , public ::testing::WithParamInterface { }; TEST_P(LoadLanguage, afr) {LangLoader("afr" , GetParam());} TEST_P(LoadLanguage, amh) {LangLoader("amh" , GetParam());} TEST_P(LoadLanguage, ara) {LangLoader("ara" , GetParam());} TEST_P(LoadLanguage, asm) {LangLoader("asm" , GetParam());} TEST_P(LoadLanguage, aze) {LangLoader("aze" , GetParam());} TEST_P(LoadLanguage, aze_cyrl) {LangLoader("aze_cyrl" , GetParam());} TEST_P(LoadLanguage, bel) {LangLoader("bel" , GetParam());} TEST_P(LoadLanguage, ben) {LangLoader("ben" , GetParam());} TEST_P(LoadLanguage, bod) {LangLoader("bod" , GetParam());} TEST_P(LoadLanguage, bos) {LangLoader("bos" , GetParam());} TEST_P(LoadLanguage, bre) {LangLoader("bre" , GetParam());} TEST_P(LoadLanguage, bul) {LangLoader("bul" , GetParam());} TEST_P(LoadLanguage, cat) {LangLoader("cat" , GetParam());} TEST_P(LoadLanguage, ceb) {LangLoader("ceb" , GetParam());} TEST_P(LoadLanguage, ces) {LangLoader("ces" , GetParam());} TEST_P(LoadLanguage, chi_sim) {LangLoader("chi_sim" , GetParam());} TEST_P(LoadLanguage, chi_sim_vert) {LangLoader("chi_sim_vert" , GetParam());} TEST_P(LoadLanguage, chi_tra) {LangLoader("chi_tra" , GetParam());} TEST_P(LoadLanguage, chi_tra_vert) {LangLoader("chi_tra_vert" , GetParam());} TEST_P(LoadLanguage, chr) {LangLoader("chr" , GetParam());} TEST_P(LoadLanguage, cos) {LangLoader("cos" , GetParam());} TEST_P(LoadLanguage, cym) {LangLoader("cym" , GetParam());} TEST_P(LoadLanguage, dan) {LangLoader("dan" , GetParam());} TEST_P(LoadLanguage, deu) {LangLoader("deu" , GetParam());} TEST_P(LoadLanguage, div) {LangLoader("div" , GetParam());} TEST_P(LoadLanguage, dzo) {LangLoader("dzo" , GetParam());} TEST_P(LoadLanguage, ell) {LangLoader("ell" , GetParam());} TEST_P(LoadLanguage, eng) {LangLoader("eng" , GetParam());} TEST_P(LoadLanguage, enm) {LangLoader("enm" , GetParam());} TEST_P(LoadLanguage, epo) {LangLoader("epo" , GetParam());} TEST_P(LoadLanguage, est) {LangLoader("est" , GetParam());} TEST_P(LoadLanguage, eus) {LangLoader("eus" , GetParam());} TEST_P(LoadLanguage, fao) {LangLoader("fao" , GetParam());} TEST_P(LoadLanguage, fas) {LangLoader("fas" , GetParam());} TEST_P(LoadLanguage, fil) {LangLoader("fil" , GetParam());} TEST_P(LoadLanguage, fin) {LangLoader("fin" , GetParam());} TEST_P(LoadLanguage, fra) {LangLoader("fra" , GetParam());} TEST_P(LoadLanguage, frk) {LangLoader("frk" , GetParam());} TEST_P(LoadLanguage, frm) {LangLoader("frm" , GetParam());} TEST_P(LoadLanguage, fry) {LangLoader("fry" , GetParam());} TEST_P(LoadLanguage, gla) {LangLoader("gla" , GetParam());} TEST_P(LoadLanguage, gle) {LangLoader("gle" , GetParam());} TEST_P(LoadLanguage, glg) {LangLoader("glg" , GetParam());} TEST_P(LoadLanguage, grc) {LangLoader("grc" , GetParam());} TEST_P(LoadLanguage, guj) {LangLoader("guj" , GetParam());} TEST_P(LoadLanguage, hat) {LangLoader("hat" , GetParam());} TEST_P(LoadLanguage, heb) {LangLoader("heb" , GetParam());} TEST_P(LoadLanguage, hin) {LangLoader("hin" , GetParam());} TEST_P(LoadLanguage, hrv) {LangLoader("hrv" , GetParam());} TEST_P(LoadLanguage, hun) {LangLoader("hun" , GetParam());} TEST_P(LoadLanguage, hye) {LangLoader("hye" , GetParam());} TEST_P(LoadLanguage, iku) {LangLoader("iku" , GetParam());} TEST_P(LoadLanguage, ind) {LangLoader("ind" , GetParam());} TEST_P(LoadLanguage, isl) {LangLoader("isl" , GetParam());} TEST_P(LoadLanguage, ita) {LangLoader("ita" , GetParam());} TEST_P(LoadLanguage, ita_old) {LangLoader("ita_old" , GetParam());} TEST_P(LoadLanguage, jav) {LangLoader("jav" , GetParam());} TEST_P(LoadLanguage, jpn) {LangLoader("jpn" , GetParam());} TEST_P(LoadLanguage, jpn_vert) {LangLoader("jpn_vert" , GetParam());} TEST_P(LoadLanguage, kan) {LangLoader("kan" , GetParam());} TEST_P(LoadLanguage, kat) {LangLoader("kat" , GetParam());} TEST_P(LoadLanguage, kat_old) {LangLoader("kat_old" , GetParam());} TEST_P(LoadLanguage, kaz) {LangLoader("kaz" , GetParam());} TEST_P(LoadLanguage, khm) {LangLoader("khm" , GetParam());} TEST_P(LoadLanguage, kir) {LangLoader("kir" , GetParam());} // TEST_P(LoadLanguage, kmr) {LangLoader("kmr" , GetParam());} TEST_P(LoadLanguage, kor) {LangLoader("kor" , GetParam());} TEST_P(LoadLanguage, kor_vert) {LangLoader("kor_vert" , GetParam());} TEST_P(LoadLanguage, lao) {LangLoader("lao" , GetParam());} TEST_P(LoadLanguage, lat) {LangLoader("lat" , GetParam());} TEST_P(LoadLanguage, lav) {LangLoader("lav" , GetParam());} TEST_P(LoadLanguage, lit) {LangLoader("lit" , GetParam());} TEST_P(LoadLanguage, ltz) {LangLoader("ltz" , GetParam());} TEST_P(LoadLanguage, mal) {LangLoader("mal" , GetParam());} TEST_P(LoadLanguage, mar) {LangLoader("mar" , GetParam());} TEST_P(LoadLanguage, mkd) {LangLoader("mkd" , GetParam());} TEST_P(LoadLanguage, mlt) {LangLoader("mlt" , GetParam());} TEST_P(LoadLanguage, mon) {LangLoader("mon" , GetParam());} TEST_P(LoadLanguage, mri) {LangLoader("mri" , GetParam());} TEST_P(LoadLanguage, msa) {LangLoader("msa" , GetParam());} TEST_P(LoadLanguage, mya) {LangLoader("mya" , GetParam());} TEST_P(LoadLanguage, nep) {LangLoader("nep" , GetParam());} TEST_P(LoadLanguage, nld) {LangLoader("nld" , GetParam());} TEST_P(LoadLanguage, nor) {LangLoader("nor" , GetParam());} TEST_P(LoadLanguage, oci) {LangLoader("oci" , GetParam());} TEST_P(LoadLanguage, ori) {LangLoader("ori" , GetParam());} TEST_P(LoadLanguage, osd) {LangLoader("osd" , GetParam());} TEST_P(LoadLanguage, pan) {LangLoader("pan" , GetParam());} TEST_P(LoadLanguage, pol) {LangLoader("pol" , GetParam());} TEST_P(LoadLanguage, por) {LangLoader("por" , GetParam());} TEST_P(LoadLanguage, pus) {LangLoader("pus" , GetParam());} TEST_P(LoadLanguage, que) {LangLoader("que" , GetParam());} TEST_P(LoadLanguage, ron) {LangLoader("ron" , GetParam());} TEST_P(LoadLanguage, rus) {LangLoader("rus" , GetParam());} TEST_P(LoadLanguage, san) {LangLoader("san" , GetParam());} TEST_P(LoadLanguage, sin) {LangLoader("sin" , GetParam());} TEST_P(LoadLanguage, slk) {LangLoader("slk" , GetParam());} TEST_P(LoadLanguage, slv) {LangLoader("slv" , GetParam());} TEST_P(LoadLanguage, snd) {LangLoader("snd" , GetParam());} TEST_P(LoadLanguage, spa) {LangLoader("spa" , GetParam());} TEST_P(LoadLanguage, spa_old) {LangLoader("spa_old" , GetParam());} TEST_P(LoadLanguage, sqi) {LangLoader("sqi" , GetParam());} TEST_P(LoadLanguage, srp) {LangLoader("srp" , GetParam());} TEST_P(LoadLanguage, srp_latn) {LangLoader("srp_latn" , GetParam());} TEST_P(LoadLanguage, sun) {LangLoader("sun" , GetParam());} TEST_P(LoadLanguage, swa) {LangLoader("swa" , GetParam());} TEST_P(LoadLanguage, swe) {LangLoader("swe" , GetParam());} TEST_P(LoadLanguage, syr) {LangLoader("syr" , GetParam());} TEST_P(LoadLanguage, tam) {LangLoader("tam" , GetParam());} TEST_P(LoadLanguage, tat) {LangLoader("tat" , GetParam());} TEST_P(LoadLanguage, tel) {LangLoader("tel" , GetParam());} TEST_P(LoadLanguage, tgk) {LangLoader("tgk" , GetParam());} TEST_P(LoadLanguage, tha) {LangLoader("tha" , GetParam());} TEST_P(LoadLanguage, tir) {LangLoader("tir" , GetParam());} TEST_P(LoadLanguage, ton) {LangLoader("ton" , GetParam());} TEST_P(LoadLanguage, tur) {LangLoader("tur" , GetParam());} TEST_P(LoadLanguage, uig) {LangLoader("uig" , GetParam());} TEST_P(LoadLanguage, ukr) {LangLoader("ukr" , GetParam());} TEST_P(LoadLanguage, urd) {LangLoader("urd" , GetParam());} TEST_P(LoadLanguage, uzb) {LangLoader("uzb" , GetParam());} TEST_P(LoadLanguage, uzb_cyrl) {LangLoader("uzb_cyrl" , GetParam());} TEST_P(LoadLanguage, vie) {LangLoader("vie" , GetParam());} TEST_P(LoadLanguage, yid) {LangLoader("yid" , GetParam());} TEST_P(LoadLanguage, yor) {LangLoader("yor" , GetParam());} INSTANTIATE_TEST_CASE_P( Tessdata_fast, LoadLanguage, ::testing::Values(TESSDATA_DIR "_fast") ); INSTANTIATE_TEST_CASE_P( Tessdata_best, LoadLanguage, ::testing::Values(TESSDATA_DIR "_best") ); INSTANTIATE_TEST_CASE_P( Tessdata, LoadLanguage, ::testing::Values(TESSDATA_DIR) ); // For all scripts class LoadScript : public QuickTest , public ::testing::WithParamInterface { }; TEST_P(LoadScript, Arabic) {LangLoader("script/Arabic" , GetParam());} TEST_P(LoadScript, Armenian) {LangLoader("script/Armenian" , GetParam());} TEST_P(LoadScript, Bengali) {LangLoader("script/Bengali" , GetParam());} TEST_P(LoadScript, Canadian_Aboriginal) {LangLoader("script/Canadian_Aboriginal" , GetParam());} TEST_P(LoadScript, Cherokee) {LangLoader("script/Cherokee" , GetParam());} TEST_P(LoadScript, Cyrillic) {LangLoader("script/Cyrillic" , GetParam());} TEST_P(LoadScript, Devanagari) {LangLoader("script/Devanagari" , GetParam());} TEST_P(LoadScript, Ethiopic) {LangLoader("script/Ethiopic" , GetParam());} TEST_P(LoadScript, Fraktur) {LangLoader("script/Fraktur" , GetParam());} TEST_P(LoadScript, Georgian) {LangLoader("script/Georgian" , GetParam());} TEST_P(LoadScript, Greek) {LangLoader("script/Greek" , GetParam());} TEST_P(LoadScript, Gujarati) {LangLoader("script/Gujarati" , GetParam());} TEST_P(LoadScript, Gurmukhi) {LangLoader("script/Gurmukhi" , GetParam());} TEST_P(LoadScript, HanS) {LangLoader("script/HanS" , GetParam());} TEST_P(LoadScript, HanS_vert) {LangLoader("script/HanS_vert" , GetParam());} TEST_P(LoadScript, HanT) {LangLoader("script/HanT" , GetParam());} TEST_P(LoadScript, HanT_vert) {LangLoader("script/HanT_vert" , GetParam());} TEST_P(LoadScript, Hangul) {LangLoader("script/Hangul" , GetParam());} TEST_P(LoadScript, Hangul_vert) {LangLoader("script/Hangul_vert" , GetParam());} TEST_P(LoadScript, Hebrew) {LangLoader("script/Hebrew" , GetParam());} TEST_P(LoadScript, Japanese) {LangLoader("script/Japanese" , GetParam());} TEST_P(LoadScript, Japanese_vert) {LangLoader("script/Japanese_vert" , GetParam());} TEST_P(LoadScript, Kannada) {LangLoader("script/Kannada" , GetParam());} TEST_P(LoadScript, Khmer) {LangLoader("script/Khmer" , GetParam());} TEST_P(LoadScript, Lao) {LangLoader("script/Lao" , GetParam());} TEST_P(LoadScript, Latin) {LangLoader("script/Latin" , GetParam());} TEST_P(LoadScript, Malayalam) {LangLoader("script/Malayalam" , GetParam());} TEST_P(LoadScript, Myanmar) {LangLoader("script/Myanmar" , GetParam());} TEST_P(LoadScript, Oriya) {LangLoader("script/Oriya" , GetParam());} TEST_P(LoadScript, Sinhala) {LangLoader("script/Sinhala" , GetParam());} TEST_P(LoadScript, Syriac) {LangLoader("script/Syriac" , GetParam());} TEST_P(LoadScript, Tamil) {LangLoader("script/Tamil" , GetParam());} TEST_P(LoadScript, Telugu) {LangLoader("script/Telugu" , GetParam());} TEST_P(LoadScript, Thaana) {LangLoader("script/Thaana" , GetParam());} TEST_P(LoadScript, Thai) {LangLoader("script/Thai" , GetParam());} TEST_P(LoadScript, Tibetan) {LangLoader("script/Tibetan" , GetParam());} TEST_P(LoadScript, Vietnamese) {LangLoader("script/Vietnamese" , GetParam());} INSTANTIATE_TEST_CASE_P( Tessdata_fast, LoadScript, ::testing::Values(TESSDATA_DIR "_fast") ); INSTANTIATE_TEST_CASE_P( Tessdata_best, LoadScript, ::testing::Values(TESSDATA_DIR "_best") ); INSTANTIATE_TEST_CASE_P( Tessdata, LoadScript, ::testing::Values(TESSDATA_DIR) ); // Use class LoadLang for languages which are NOT there in all three repos class LoadLang : public QuickTest { }; TEST_F(LoadLang, kmrFast) {LangLoader("kmr" , TESSDATA_DIR "_fast");} TEST_F(LoadLang, kmrBest) {LangLoader("kmr" , TESSDATA_DIR "_best");} // TEST_F(LoadLang, kmrBestInt) {LangLoader("kmr" , TESSDATA_DIR);} } // namespace