Skip to content

Commit 16e45d2

Browse files
committed
Test load of all langs and scripts for all 3 tessdata repos
1 parent 87635c1 commit 16e45d2

File tree

2 files changed

+244
-0
lines changed

2 files changed

+244
-0
lines changed

unittest/Makefile.am

+5
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ check_PROGRAMS = \
5656
intsimdmatrix_test \
5757
matrix_test \
5858
osd_test \
59+
loadlang_test \
5960
tesseracttests
6061

6162

@@ -80,6 +81,9 @@ matrix_test_LDADD = $(GTEST_LIBS) $(TESS_LIBS)
8081
osd_test_SOURCES = osd_test.cc
8182
osd_test_LDADD = $(GTEST_LIBS) $(TESS_LIBS) $(LEPTONICA_LIBS)
8283

84+
loadlang_test_SOURCES = loadlang_test.cc
85+
loadlang_test_LDADD = $(GTEST_LIBS) $(TESS_LIBS) $(LEPTONICA_LIBS)
86+
8387
tesseracttests_SOURCES = ../tests/tesseracttests.cpp
8488
tesseracttests_LDADD = $(GTEST_LIBS) $(TESS_LIBS) $(LEPTONICA_LIBS)
8589

@@ -89,6 +93,7 @@ apiexample_test_LDADD += -lws2_32
8993
intsimdmatrix_test_LDADD += -lws2_32
9094
matrix_test_LDADD += -lws2_32
9195
osd_test_LDADD += -lws2_32
96+
loadlang_test_LDADD += -lws2_32
9297
tesseracttests_LDADD += -lws2_32
9398
endif
9499

unittest/loadlang_test.cc

+239
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,239 @@
1+
///////////////////////////////////////////////////////////////////////
2+
// File: loadlang_test.cc
3+
// Description: Test loading of All languages and Scripts for Tesseract.
4+
// Author: Shree Devi Kumar
5+
//
6+
// Licensed under the Apache License, Version 2.0 (the "License");
7+
// you may not use this file except in compliance with the License.
8+
// You may obtain a copy of the License at
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
// Unless required by applicable law or agreed to in writing, software
11+
// distributed under the License is distributed on an "AS IS" BASIS,
12+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
// See the License for the specific language governing permissions and
14+
// limitations under the License.
15+
///////////////////////////////////////////////////////////////////////
16+
17+
#include "include_gunit.h"
18+
#include "baseapi.h"
19+
#include <time.h>
20+
21+
namespace {
22+
23+
class QuickTest : public testing::Test {
24+
protected:
25+
virtual void SetUp() {
26+
start_time_ = time(nullptr);
27+
}
28+
virtual void TearDown() {
29+
const time_t end_time = time(nullptr);
30+
EXPECT_TRUE(end_time - start_time_ <=25) << "The test took too long - " << ::testing::PrintToString(end_time - start_time_);
31+
}
32+
time_t start_time_;
33+
};
34+
35+
void LangLoader(const char* lang, const char* tessdatadir) {
36+
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
37+
ASSERT_FALSE(api->Init(tessdatadir, lang)) << "Could not initialize tesseract for $lang.";
38+
api->End();
39+
}
40+
41+
// For all languages
42+
43+
class LoadLanguage : public QuickTest ,
44+
public ::testing::WithParamInterface<const char*> {
45+
};
46+
47+
TEST_P(LoadLanguage, afr) {LangLoader("afr" , GetParam());}
48+
TEST_P(LoadLanguage, amh) {LangLoader("amh" , GetParam());}
49+
TEST_P(LoadLanguage, ara) {LangLoader("ara" , GetParam());}
50+
TEST_P(LoadLanguage, asm) {LangLoader("asm" , GetParam());}
51+
TEST_P(LoadLanguage, aze) {LangLoader("aze" , GetParam());}
52+
TEST_P(LoadLanguage, aze_cyrl) {LangLoader("aze_cyrl" , GetParam());}
53+
TEST_P(LoadLanguage, bel) {LangLoader("bel" , GetParam());}
54+
TEST_P(LoadLanguage, ben) {LangLoader("ben" , GetParam());}
55+
TEST_P(LoadLanguage, bod) {LangLoader("bod" , GetParam());}
56+
TEST_P(LoadLanguage, bos) {LangLoader("bos" , GetParam());}
57+
TEST_P(LoadLanguage, bre) {LangLoader("bre" , GetParam());}
58+
TEST_P(LoadLanguage, bul) {LangLoader("bul" , GetParam());}
59+
TEST_P(LoadLanguage, cat) {LangLoader("cat" , GetParam());}
60+
TEST_P(LoadLanguage, ceb) {LangLoader("ceb" , GetParam());}
61+
TEST_P(LoadLanguage, ces) {LangLoader("ces" , GetParam());}
62+
TEST_P(LoadLanguage, chi_sim) {LangLoader("chi_sim" , GetParam());}
63+
TEST_P(LoadLanguage, chi_sim_vert) {LangLoader("chi_sim_vert" , GetParam());}
64+
TEST_P(LoadLanguage, chi_tra) {LangLoader("chi_tra" , GetParam());}
65+
TEST_P(LoadLanguage, chi_tra_vert) {LangLoader("chi_tra_vert" , GetParam());}
66+
TEST_P(LoadLanguage, chr) {LangLoader("chr" , GetParam());}
67+
TEST_P(LoadLanguage, cos) {LangLoader("cos" , GetParam());}
68+
TEST_P(LoadLanguage, cym) {LangLoader("cym" , GetParam());}
69+
TEST_P(LoadLanguage, dan) {LangLoader("dan" , GetParam());}
70+
TEST_P(LoadLanguage, deu) {LangLoader("deu" , GetParam());}
71+
TEST_P(LoadLanguage, div) {LangLoader("div" , GetParam());}
72+
TEST_P(LoadLanguage, dzo) {LangLoader("dzo" , GetParam());}
73+
TEST_P(LoadLanguage, ell) {LangLoader("ell" , GetParam());}
74+
TEST_P(LoadLanguage, eng) {LangLoader("eng" , GetParam());}
75+
TEST_P(LoadLanguage, enm) {LangLoader("enm" , GetParam());}
76+
TEST_P(LoadLanguage, epo) {LangLoader("epo" , GetParam());}
77+
TEST_P(LoadLanguage, est) {LangLoader("est" , GetParam());}
78+
TEST_P(LoadLanguage, eus) {LangLoader("eus" , GetParam());}
79+
TEST_P(LoadLanguage, fao) {LangLoader("fao" , GetParam());}
80+
TEST_P(LoadLanguage, fas) {LangLoader("fas" , GetParam());}
81+
TEST_P(LoadLanguage, fil) {LangLoader("fil" , GetParam());}
82+
TEST_P(LoadLanguage, fin) {LangLoader("fin" , GetParam());}
83+
TEST_P(LoadLanguage, fra) {LangLoader("fra" , GetParam());}
84+
TEST_P(LoadLanguage, frk) {LangLoader("frk" , GetParam());}
85+
TEST_P(LoadLanguage, frm) {LangLoader("frm" , GetParam());}
86+
TEST_P(LoadLanguage, fry) {LangLoader("fry" , GetParam());}
87+
TEST_P(LoadLanguage, gla) {LangLoader("gla" , GetParam());}
88+
TEST_P(LoadLanguage, gle) {LangLoader("gle" , GetParam());}
89+
TEST_P(LoadLanguage, glg) {LangLoader("glg" , GetParam());}
90+
TEST_P(LoadLanguage, grc) {LangLoader("grc" , GetParam());}
91+
TEST_P(LoadLanguage, guj) {LangLoader("guj" , GetParam());}
92+
TEST_P(LoadLanguage, hat) {LangLoader("hat" , GetParam());}
93+
TEST_P(LoadLanguage, heb) {LangLoader("heb" , GetParam());}
94+
TEST_P(LoadLanguage, hin) {LangLoader("hin" , GetParam());}
95+
TEST_P(LoadLanguage, hrv) {LangLoader("hrv" , GetParam());}
96+
TEST_P(LoadLanguage, hun) {LangLoader("hun" , GetParam());}
97+
TEST_P(LoadLanguage, hye) {LangLoader("hye" , GetParam());}
98+
TEST_P(LoadLanguage, iku) {LangLoader("iku" , GetParam());}
99+
TEST_P(LoadLanguage, ind) {LangLoader("ind" , GetParam());}
100+
TEST_P(LoadLanguage, isl) {LangLoader("isl" , GetParam());}
101+
TEST_P(LoadLanguage, ita) {LangLoader("ita" , GetParam());}
102+
TEST_P(LoadLanguage, ita_old) {LangLoader("ita_old" , GetParam());}
103+
TEST_P(LoadLanguage, jav) {LangLoader("jav" , GetParam());}
104+
TEST_P(LoadLanguage, jpn) {LangLoader("jpn" , GetParam());}
105+
TEST_P(LoadLanguage, jpn_vert) {LangLoader("jpn_vert" , GetParam());}
106+
TEST_P(LoadLanguage, kan) {LangLoader("kan" , GetParam());}
107+
TEST_P(LoadLanguage, kat) {LangLoader("kat" , GetParam());}
108+
TEST_P(LoadLanguage, kat_old) {LangLoader("kat_old" , GetParam());}
109+
TEST_P(LoadLanguage, kaz) {LangLoader("kaz" , GetParam());}
110+
TEST_P(LoadLanguage, khm) {LangLoader("khm" , GetParam());}
111+
TEST_P(LoadLanguage, kir) {LangLoader("kir" , GetParam());}
112+
// TEST_P(LoadLanguage, kmr) {LangLoader("kmr" , GetParam());}
113+
TEST_P(LoadLanguage, kor) {LangLoader("kor" , GetParam());}
114+
TEST_P(LoadLanguage, kor_vert) {LangLoader("kor_vert" , GetParam());}
115+
TEST_P(LoadLanguage, lao) {LangLoader("lao" , GetParam());}
116+
TEST_P(LoadLanguage, lat) {LangLoader("lat" , GetParam());}
117+
TEST_P(LoadLanguage, lav) {LangLoader("lav" , GetParam());}
118+
TEST_P(LoadLanguage, lit) {LangLoader("lit" , GetParam());}
119+
TEST_P(LoadLanguage, ltz) {LangLoader("ltz" , GetParam());}
120+
TEST_P(LoadLanguage, mal) {LangLoader("mal" , GetParam());}
121+
TEST_P(LoadLanguage, mar) {LangLoader("mar" , GetParam());}
122+
TEST_P(LoadLanguage, mkd) {LangLoader("mkd" , GetParam());}
123+
TEST_P(LoadLanguage, mlt) {LangLoader("mlt" , GetParam());}
124+
TEST_P(LoadLanguage, mon) {LangLoader("mon" , GetParam());}
125+
TEST_P(LoadLanguage, mri) {LangLoader("mri" , GetParam());}
126+
TEST_P(LoadLanguage, msa) {LangLoader("msa" , GetParam());}
127+
TEST_P(LoadLanguage, mya) {LangLoader("mya" , GetParam());}
128+
TEST_P(LoadLanguage, nep) {LangLoader("nep" , GetParam());}
129+
TEST_P(LoadLanguage, nld) {LangLoader("nld" , GetParam());}
130+
TEST_P(LoadLanguage, nor) {LangLoader("nor" , GetParam());}
131+
TEST_P(LoadLanguage, oci) {LangLoader("oci" , GetParam());}
132+
TEST_P(LoadLanguage, ori) {LangLoader("ori" , GetParam());}
133+
TEST_P(LoadLanguage, osd) {LangLoader("osd" , GetParam());}
134+
TEST_P(LoadLanguage, pan) {LangLoader("pan" , GetParam());}
135+
TEST_P(LoadLanguage, pol) {LangLoader("pol" , GetParam());}
136+
TEST_P(LoadLanguage, por) {LangLoader("por" , GetParam());}
137+
TEST_P(LoadLanguage, pus) {LangLoader("pus" , GetParam());}
138+
TEST_P(LoadLanguage, que) {LangLoader("que" , GetParam());}
139+
TEST_P(LoadLanguage, ron) {LangLoader("ron" , GetParam());}
140+
TEST_P(LoadLanguage, rus) {LangLoader("rus" , GetParam());}
141+
TEST_P(LoadLanguage, san) {LangLoader("san" , GetParam());}
142+
TEST_P(LoadLanguage, sin) {LangLoader("sin" , GetParam());}
143+
TEST_P(LoadLanguage, slk) {LangLoader("slk" , GetParam());}
144+
TEST_P(LoadLanguage, slv) {LangLoader("slv" , GetParam());}
145+
TEST_P(LoadLanguage, snd) {LangLoader("snd" , GetParam());}
146+
TEST_P(LoadLanguage, spa) {LangLoader("spa" , GetParam());}
147+
TEST_P(LoadLanguage, spa_old) {LangLoader("spa_old" , GetParam());}
148+
TEST_P(LoadLanguage, sqi) {LangLoader("sqi" , GetParam());}
149+
TEST_P(LoadLanguage, srp) {LangLoader("srp" , GetParam());}
150+
TEST_P(LoadLanguage, srp_latn) {LangLoader("srp_latn" , GetParam());}
151+
TEST_P(LoadLanguage, sun) {LangLoader("sun" , GetParam());}
152+
TEST_P(LoadLanguage, swa) {LangLoader("swa" , GetParam());}
153+
TEST_P(LoadLanguage, swe) {LangLoader("swe" , GetParam());}
154+
TEST_P(LoadLanguage, syr) {LangLoader("syr" , GetParam());}
155+
TEST_P(LoadLanguage, tam) {LangLoader("tam" , GetParam());}
156+
TEST_P(LoadLanguage, tat) {LangLoader("tat" , GetParam());}
157+
TEST_P(LoadLanguage, tel) {LangLoader("tel" , GetParam());}
158+
TEST_P(LoadLanguage, tgk) {LangLoader("tgk" , GetParam());}
159+
TEST_P(LoadLanguage, tha) {LangLoader("tha" , GetParam());}
160+
TEST_P(LoadLanguage, tir) {LangLoader("tir" , GetParam());}
161+
TEST_P(LoadLanguage, ton) {LangLoader("ton" , GetParam());}
162+
TEST_P(LoadLanguage, tur) {LangLoader("tur" , GetParam());}
163+
TEST_P(LoadLanguage, uig) {LangLoader("uig" , GetParam());}
164+
TEST_P(LoadLanguage, ukr) {LangLoader("ukr" , GetParam());}
165+
TEST_P(LoadLanguage, urd) {LangLoader("urd" , GetParam());}
166+
TEST_P(LoadLanguage, uzb) {LangLoader("uzb" , GetParam());}
167+
TEST_P(LoadLanguage, uzb_cyrl) {LangLoader("uzb_cyrl" , GetParam());}
168+
TEST_P(LoadLanguage, vie) {LangLoader("vie" , GetParam());}
169+
TEST_P(LoadLanguage, yid) {LangLoader("yid" , GetParam());}
170+
TEST_P(LoadLanguage, yor) {LangLoader("yor" , GetParam());}
171+
172+
INSTANTIATE_TEST_CASE_P( Tessdata_fast, LoadLanguage,
173+
::testing::Values(TESSDATA_DIR "_fast") );
174+
INSTANTIATE_TEST_CASE_P( Tessdata_best, LoadLanguage,
175+
::testing::Values(TESSDATA_DIR "_best") );
176+
INSTANTIATE_TEST_CASE_P( Tessdata, LoadLanguage,
177+
::testing::Values(TESSDATA_DIR) );
178+
179+
// For all scripts
180+
181+
class LoadScript : public QuickTest ,
182+
public ::testing::WithParamInterface<const char*> {
183+
};
184+
185+
TEST_P(LoadScript, Arabic) {LangLoader("script/Arabic" , GetParam());}
186+
TEST_P(LoadScript, Armenian) {LangLoader("script/Armenian" , GetParam());}
187+
TEST_P(LoadScript, Bengali) {LangLoader("script/Bengali" , GetParam());}
188+
TEST_P(LoadScript, Canadian_Aboriginal) {LangLoader("script/Canadian_Aboriginal" , GetParam());}
189+
TEST_P(LoadScript, Cherokee) {LangLoader("script/Cherokee" , GetParam());}
190+
TEST_P(LoadScript, Cyrillic) {LangLoader("script/Cyrillic" , GetParam());}
191+
TEST_P(LoadScript, Devanagari) {LangLoader("script/Devanagari" , GetParam());}
192+
TEST_P(LoadScript, Ethiopic) {LangLoader("script/Ethiopic" , GetParam());}
193+
TEST_P(LoadScript, Fraktur) {LangLoader("script/Fraktur" , GetParam());}
194+
TEST_P(LoadScript, Georgian) {LangLoader("script/Georgian" , GetParam());}
195+
TEST_P(LoadScript, Greek) {LangLoader("script/Greek" , GetParam());}
196+
TEST_P(LoadScript, Gujarati) {LangLoader("script/Gujarati" , GetParam());}
197+
TEST_P(LoadScript, Gurmukhi) {LangLoader("script/Gurmukhi" , GetParam());}
198+
TEST_P(LoadScript, HanS) {LangLoader("script/HanS" , GetParam());}
199+
TEST_P(LoadScript, HanS_vert) {LangLoader("script/HanS_vert" , GetParam());}
200+
TEST_P(LoadScript, HanT) {LangLoader("script/HanT" , GetParam());}
201+
TEST_P(LoadScript, HanT_vert) {LangLoader("script/HanT_vert" , GetParam());}
202+
TEST_P(LoadScript, Hangul) {LangLoader("script/Hangul" , GetParam());}
203+
TEST_P(LoadScript, Hangul_vert) {LangLoader("script/Hangul_vert" , GetParam());}
204+
TEST_P(LoadScript, Hebrew) {LangLoader("script/Hebrew" , GetParam());}
205+
TEST_P(LoadScript, Japanese) {LangLoader("script/Japanese" , GetParam());}
206+
TEST_P(LoadScript, Japanese_vert) {LangLoader("script/Japanese_vert" , GetParam());}
207+
TEST_P(LoadScript, Kannada) {LangLoader("script/Kannada" , GetParam());}
208+
TEST_P(LoadScript, Khmer) {LangLoader("script/Khmer" , GetParam());}
209+
TEST_P(LoadScript, Lao) {LangLoader("script/Lao" , GetParam());}
210+
TEST_P(LoadScript, Latin) {LangLoader("script/Latin" , GetParam());}
211+
TEST_P(LoadScript, Malayalam) {LangLoader("script/Malayalam" , GetParam());}
212+
TEST_P(LoadScript, Myanmar) {LangLoader("script/Myanmar" , GetParam());}
213+
TEST_P(LoadScript, Oriya) {LangLoader("script/Oriya" , GetParam());}
214+
TEST_P(LoadScript, Sinhala) {LangLoader("script/Sinhala" , GetParam());}
215+
TEST_P(LoadScript, Syriac) {LangLoader("script/Syriac" , GetParam());}
216+
TEST_P(LoadScript, Tamil) {LangLoader("script/Tamil" , GetParam());}
217+
TEST_P(LoadScript, Telugu) {LangLoader("script/Telugu" , GetParam());}
218+
TEST_P(LoadScript, Thaana) {LangLoader("script/Thaana" , GetParam());}
219+
TEST_P(LoadScript, Thai) {LangLoader("script/Thai" , GetParam());}
220+
TEST_P(LoadScript, Tibetan) {LangLoader("script/Tibetan" , GetParam());}
221+
TEST_P(LoadScript, Vietnamese) {LangLoader("script/Vietnamese" , GetParam());}
222+
223+
INSTANTIATE_TEST_CASE_P( Tessdata_fast, LoadScript,
224+
::testing::Values(TESSDATA_DIR "_fast") );
225+
INSTANTIATE_TEST_CASE_P( Tessdata_best, LoadScript,
226+
::testing::Values(TESSDATA_DIR "_best") );
227+
INSTANTIATE_TEST_CASE_P( Tessdata, LoadScript,
228+
::testing::Values(TESSDATA_DIR) );
229+
230+
// Use class LoadLang for languages which are NOT there in all three repos
231+
232+
class LoadLang : public QuickTest {
233+
};
234+
235+
TEST_F(LoadLang, kmrFast) {LangLoader("kmr" , TESSDATA_DIR "_fast");}
236+
TEST_F(LoadLang, kmrBest) {LangLoader("kmr" , TESSDATA_DIR "_best");}
237+
// TEST_F(LoadLang, kmrBestInt) {LangLoader("kmr" , TESSDATA_DIR);}
238+
239+
} // namespace

0 commit comments

Comments
 (0)