OpenTREP Logo  0.07.18
C++ Open Travel Request Parsing Library
Loading...
Searching...
No Matches
UnicodeTestSuite.cpp
Go to the documentation of this file.
1// /////////////////////////////////////////////////////////////////////////
2//
3// Unicode-based transformations
4//
5// Author: Denis Arnaud
6// Date: September 2012
7//
8// /////////////////////////////////////////////////////////////////////////
9// STL
10#include <sstream>
11#include <fstream>
12#include <string>
13#include <list>
14// Boost Unit Test Framework (UTF)
15#define BOOST_TEST_DYN_LINK
16#define BOOST_TEST_MAIN
17#define BOOST_TEST_MODULE UnicodeTestSuite
18#include <boost/test/unit_test.hpp>
19// OpenTrep
21
22namespace boost_utf = boost::unit_test;
23
24// (Boost) Unit Test XML Report
25std::ofstream utfReportStream ("UnicodeTestSuite_utfresults.xml");
26
30struct UnitTestConfig {
33 boost_utf::unit_test_log.set_stream (utfReportStream);
34#if defined(BOOST_VERSION) && BOOST_VERSION >= 105900
35 boost_utf::unit_test_log.set_format (boost_utf::OF_XML);
36#else // BOOST_VERSION
37 boost_utf::unit_test_log.set_format (boost_utf::XML);
38#endif // BOOST_VERSION
39 boost_utf::unit_test_log.set_threshold_level (boost_utf::log_test_units);
40 //boost_utf::unit_test_log.set_threshold_level (boost_utf::log_successful_tests);
41 }
42
46};
47
48
49// /////////////// Main: Unit Test Suite //////////////
50
51// Set the UTF configuration (re-direct the output to a specific file)
53
54// Start the test suite
55BOOST_AUTO_TEST_SUITE (master_test_suite)
56
57
60BOOST_AUTO_TEST_CASE (unicode_strings) {
61
62 // Output log File
63 std::string lLogFilename ("UnicodeTestSuite.log");
64
65 // Set the log parameters
66 std::ofstream logOutputFile;
67 // Open and clean the log outputfile
68 logOutputFile.open (lLogFilename.c_str());
69 logOutputFile.clear();
70
71 // Unicode transliterator
72 OPENTREP::OTransliterator lTransliterator;
73
74 // European
75 const std::string lFRStr = "À côté de Nice Côte d'Azur";
76 const std::string lFRTranslitStr = lTransliterator.normalise (lFRStr);
77 const std::string lFRTargetStr = "a cote de nice cote d azur";
78 const std::string lHUStr = "San Franciscó-i nemzetközi repülőtér";
79 const std::string lHUTranslitStr = lTransliterator.normalise (lHUStr);
80 const std::string lHUTargetStr = "san francisco i nemzetkozi repuloter";
81 const std::string lGRStr = "Αλφαβητικός Κατάλογος";
82 const std::string lGRTranslitStr = lTransliterator.normalise (lGRStr);
83 const std::string lGRTargetStr = "alphabetikos katalogos";
84 const std::string lRUStr = "Аэропорт «Аннаба», Биологическом";
85 const std::string lRUTranslitStr = lTransliterator.normalise (lRUStr);
86 const std::string lRUTargetStr = "aeroport annaba biologiceskom";
87 const std::string lUKStr = "Биологїческом";
88 const std::string lUKTranslitStr = lTransliterator.normalise (lUKStr);
89 const std::string lUKTargetStr = "biologiceskom";
90 const std::string lTRStr = "San Francisco Uluslararası Havalimanı";
91 const std::string lTRTranslitStr = lTransliterator.normalise (lTRStr);
92 const std::string lTRTargetStr = "san francisco uluslararası havalimanı";
93
94 // Africa - Middle-East
95 const std::string lARStr = "مطار سان فرانسيسكو الدولي";
96 const std::string lARTranslitStr = lTransliterator.normalise (lARStr);
97 const std::string lARTargetStr = "mtar san fransyskw aldwly";
98 const std::string lFAStr = "فرودگاه بین المللی سانفرانسیسکو";
99 const std::string lFATranslitStr = lTransliterator.normalise (lFAStr);
100 const std::string lFATargetStr = "frwdgah byn almlly sanfransyskw";
101
102 // Asia
103 const std::string lZHStr = "舊金山國際機場";
104 const std::string lZHTranslitStr = lTransliterator.normalise (lZHStr);
105 const std::string lZHTargetStr = "jiu jin shan guo ji ji chang";
106 const std::string lJPStr = "サンフランシスコ国際空港";
107 const std::string lJPTranslitStr = lTransliterator.normalise (lJPStr);
108 const std::string lJPTargetStr = "sanfuranshisuko guo ji kong gang";
109 const std::string lKOStr = "샌프란시스코 국제공항";
110 const std::string lKOTranslitStr = lTransliterator.normalise (lKOStr);
111 const std::string lKOTargetStr = "saenpeulansiseuko gugjegonghang";
112 const std::string lTHStr = "ท่าอากาศยานนานาชาติซานฟรานซิสโก";
113 const std::string lTHTranslitStr = lTransliterator.normalise (lTHStr);
114 const std::string lTHTargetStr = "tha xakasyan nana chat san f ran ss ko";
115 const std::string lVIStr = "Sân bay quốc tế San Francisco";
116 const std::string lVITranslitStr = lTransliterator.normalise (lVIStr);
117 const std::string lVITargetStr = "san bay quoc te san francisco";
118
119 // French (accentuated Latin)
120 logOutputFile << "[FR] " << lFRStr << " -> " << lFRTranslitStr << std::endl;
121 BOOST_CHECK_MESSAGE (lFRTranslitStr == lFRTargetStr,
122 "The French transliterated string for '" << lFRStr
123 << "' should be '" << lFRTargetStr << "'. "
124 << "However, it is '" << lFRTranslitStr << "'.");
125
126 // Hungarian (accentuated Latin)
127 logOutputFile << "[HU] " << lHUStr << " -> " << lHUTranslitStr << std::endl;
128 BOOST_CHECK_MESSAGE (lHUTranslitStr == lHUTargetStr,
129 "The Hungarian transliterated string for '" << lHUStr
130 << "' should be '" << lHUTargetStr << "'. "
131 << "However, it is '" << lHUTranslitStr << "'.");
132
133 // Greek
134 logOutputFile << "[GR] " << lGRStr << " -> " << lGRTranslitStr << std::endl;
135 BOOST_CHECK_MESSAGE (lGRTranslitStr == lGRTargetStr,
136 "The Greek transliterated string for '" << lGRStr
137 << "' should be '" << lGRTargetStr << "'. "
138 << "However, it is '" << lGRTranslitStr << "'.");
139
140 // Russian (Cyrillic)
141 logOutputFile << "[RU] " << lRUStr << " -> " << lRUTranslitStr << std::endl;
142 BOOST_CHECK_MESSAGE (lRUTranslitStr == lRUTargetStr,
143 "The Russian transliterated string for '" << lRUStr
144 << "' should be '" << lRUTargetStr << "'. "
145 << "However, it is '" << lRUTranslitStr << "'.");
146
147 // Ukrainian (Cyrillic)
148 logOutputFile << "[UK] " << lUKStr << " -> " << lUKTranslitStr << std::endl;
149 BOOST_CHECK_MESSAGE (lUKTranslitStr == lUKTargetStr,
150 "The Ukrainian transliterated string for '" << lUKStr
151 << "' should be '" << lUKTargetStr << "'. "
152 << "However, it is '" << lUKTranslitStr << "'.");
153
154 // Turkish
155 logOutputFile << "[TR] " << lTRStr << " -> " << lTRTranslitStr << std::endl;
156 BOOST_CHECK_MESSAGE (lTRTranslitStr == lTRTargetStr,
157 "The Turkish transliterated string for '" << lTRStr
158 << "' should be '" << lTRTargetStr << "'. "
159 << "However, it is '" << lTRTranslitStr << "'.");
160
161 // Arabic
162 logOutputFile << "[AR] " << lARStr << " -> " << lARTranslitStr << std::endl;
163 BOOST_CHECK_MESSAGE (lARTranslitStr == lARTargetStr,
164 "The Arabic transliterated string for '" << lARStr
165 << "' should be '" << lARTargetStr << "'. "
166 << "However, it is '" << lARTranslitStr << "'.");
167
168 // Iranian (Farsi)
169 logOutputFile << "[FA] " << lFAStr << " -> " << lFATranslitStr << std::endl;
170 BOOST_CHECK_MESSAGE (lFATranslitStr == lFATargetStr,
171 "The Arabic transliterated string for '" << lFAStr
172 << "' should be '" << lFATargetStr << "'. "
173 << "However, it is '" << lFATranslitStr << "'.");
174
175 // Chinese (Han)
176 logOutputFile << "[ZH] " << lZHStr << " -> " << lZHTranslitStr << std::endl;
177 BOOST_CHECK_MESSAGE (lZHTranslitStr == lZHTargetStr,
178 "The Chinese transliterated string for '" << lZHStr
179 << "' should be '" << lZHTargetStr << "'. "
180 << "However, it is '" << lZHTranslitStr << "'.");
181
182 // Japanese (Katakana)
183 logOutputFile << "[JP] " << lJPStr << " -> " << lJPTranslitStr << std::endl;
184 BOOST_CHECK_MESSAGE (lJPTranslitStr == lJPTargetStr,
185 "The Japanese transliterated string for '" << lJPStr
186 << "' should be '" << lJPTargetStr << "'. "
187 << "However, it is '" << lJPTranslitStr << "'.");
188
189 // Korean (Hangul)
190 logOutputFile << "[KO] " << lKOStr << " -> " << lKOTranslitStr << std::endl;
191 BOOST_CHECK_MESSAGE (lKOTranslitStr == lKOTargetStr,
192 "The Korean transliterated string for '" << lKOStr
193 << "' should be '" << lKOTargetStr << "'. "
194 << "However, it is '" << lKOTranslitStr << "'.");
195
196 // Thai
197 logOutputFile << "[TH] " << lTHStr << " -> " << lTHTranslitStr << std::endl;
198 BOOST_CHECK_MESSAGE (lTHTranslitStr == lTHTargetStr,
199 "The Korean transliterated string for '" << lTHStr
200 << "' should be '" << lTHTargetStr << "'. "
201 << "However, it is '" << lTHTranslitStr << "'.");
202
203 // Vietnamese
204 logOutputFile << "[VI] " << lVIStr << " -> " << lVITranslitStr << std::endl;
205 BOOST_CHECK_MESSAGE (lVITranslitStr == lVITargetStr,
206 "The Korean transliterated string for '" << lVIStr
207 << "' should be '" << lVITargetStr << "'. "
208 << "However, it is '" << lVITranslitStr << "'.");
209
210
211 // Close the Log outputFile
212 logOutputFile.close();
213}
214
215// End the test suite
216BOOST_AUTO_TEST_SUITE_END()
217
BOOST_AUTO_TEST_CASE(partition_small_string)
BOOST_GLOBAL_FIXTURE(UnitTestConfig)
std::ofstream utfReportStream("UnicodeTestSuite_utfresults.xml")
std::string normalise(const std::string &iString) const