aboutsummaryrefslogtreecommitdiffstats
path: root/tests/translittest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/translittest.cpp')
-rw-r--r--tests/translittest.cpp142
1 files changed, 142 insertions, 0 deletions
diff --git a/tests/translittest.cpp b/tests/translittest.cpp
new file mode 100644
index 0000000..1b2bddf
--- /dev/null
+++ b/tests/translittest.cpp
@@ -0,0 +1,142 @@
+#include <iostream>
+#include <string>
+
+#include "unicode/udata.h" /* Data structures */
+#include "unicode/ures.h" /* Data structures */
+#include "unicode/utypes.h" /* Basic ICU data types */
+#include "unicode/ucnv.h" /* C Converter API */
+#include "unicode/convert.h" /* C++ Converter API */
+#include "unicode/ustring.h" /* some more string fcns*/
+
+#include "unicode/translit.h"
+
+#include "utf8transliterator.h"
+
+// Print the given string to stdout
+void uprintf(const UnicodeString &str) {
+ char *buf = 0;
+ int32_t len = str.length();
+ // int32_t bufLen = str.extract(0, len, buf); // Preflight
+ /* Preflighting seems to be broken now, so assume 1-1 conversion,
+ plus some slop. */
+ int32_t bufLen = len + 16;
+ int32_t actualLen;
+ buf = new char[bufLen + 1];
+ actualLen = str.extract(0, len, buf/*, bufLen*/); // Default codepage conversion
+ buf[actualLen] = 0;
+ //printf("%s", buf);
+ std::cout << buf;
+ delete buf;
+}
+
+
+int main() {
+
+
+ UErrorCode status = U_ZERO_ERROR;
+ UDataMemory *pappData = udata_open("/usr/local/lib/sword/swicu",
+ "res", "root", &status);
+ if (U_FAILURE(status))
+ {
+ std::cout << "error: " << status << ":" <<
+ u_errorName(status) << std::endl;
+ return 0;
+ }
+ UChar * uBuf;
+ UChar * target;
+ UConverter *conv;
+ //UParseError perr = U_ZERO_ERROR;
+ int32_t uBufSize = 0, uLength = 0;
+ void * pAppData=NULL;
+ char * samplestring = "If this compiles and runs without errors, apparently ICU is working.";
+ //ures_open("/usr/local/lib/sword/swicu.dat",
+ // NULL, &status);
+ //UDataMemory *pappData = udata_open("/usr/local/lib/sword/swicu",
+// "res", "root", &status);
+ if (U_FAILURE(status))
+ {
+ std::cout << "error: " << status << ":" <<
+ u_errorName(status) << std::endl;
+ return 0;
+ }
+ //UDataMemory *pappData2 = udata_open("/usr/local/lib/sword/swicu",
+// "res", "translit_Latin_Gothic", &status);
+ std::cout << status << std::endl;
+ if (U_FAILURE(status))
+ {
+ std::cout << "error: " << status << ":" <<
+ u_errorName(status) << std::endl;
+ return 0;
+ }
+ std::cout << "available " << Transliterator::countAvailableIDs() << std::endl;
+ //udata_setAppData("/usr/local/lib/sword/swicu.dat" , pAppData, &status);
+ //if (U_FAILURE(status))
+ //{
+ //std::cout << "error: " << status << ":" <<
+ // u_errorName(status) << std::endl;
+ //return 0;
+ //}
+
+ int32_t i_ids = Transliterator::countAvailableIDs();
+
+ std::cout << "available " << i_ids << std::endl;
+ for (int i=0; i<i_ids;i++)
+ {
+ std::cout << "id " << i << ": ";
+ uprintf(Transliterator::getAvailableID(i));
+ std::cout << std::endl;
+ }
+
+
+ //UTF8Transliterator utran = new UTF8Transliterator();
+ std::cout << "creating transliterator 2" << std::endl;
+ Transliterator *btrans = Transliterator::createInstance("NFD;Latin-Greek;NFC",
+ UTRANS_FORWARD, status);
+ if (U_FAILURE(status))
+ {
+ std::cout << "error: " << status << ":" <<
+ u_errorName(status) << std::endl;
+ return 0;
+ }
+ std::cout << "creating transliterator 1" << std::endl;
+ Transliterator *trans = Transliterator::createInstance("NFD;Latin-Gothic;NFC",
+ UTRANS_FORWARD, status);
+ if (U_FAILURE(status))
+ {
+ delete btrans;
+ std::cout << "error: " << status << ":" <<
+ u_errorName(status) << std::endl;
+ return 0;
+ }
+
+ std::cout << "deleting transliterator 1" << std::endl;
+ delete trans;
+ std::cout << "deleting transliterator 2" << std::endl;
+ delete btrans;
+ std::cout << "the rest" << std::endl;
+ uLength = strlen(samplestring);
+ conv = ucnv_open("utf-8", &status);
+ if (U_FAILURE(status))
+ {
+ std::cout << "error: " << status << ":" <<
+ u_errorName(status) << std::endl;
+ return 0;
+ }
+ uBufSize = (uLength/ucnv_getMinCharSize(conv));
+ uBuf = (UChar*)malloc(uBufSize * sizeof(UChar));
+
+ target = uBuf;
+
+ ucnv_toUChars(conv, target, uLength,
+ samplestring, uLength, &status);
+ if (U_FAILURE(status))
+ {
+ std::cout << "error: " << status << ":" <<
+ u_errorName(status) << std::endl;
+ return 0;
+ }
+
+ cout << samplestring << endl;
+
+ return 0;
+}