Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: source/test/intltest/transapi.cpp

Issue 2435373002: Delete source/test (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « source/test/intltest/transapi.h ('k') | source/test/intltest/transrt.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/test/intltest/transapi.cpp
diff --git a/source/test/intltest/transapi.cpp b/source/test/intltest/transapi.cpp
deleted file mode 100644
index 24317ca8adfbda76b504cf4ef1588df15843713f..0000000000000000000000000000000000000000
--- a/source/test/intltest/transapi.cpp
+++ /dev/null
@@ -1,984 +0,0 @@
-/************************************************************************
- * COPYRIGHT:
- * Copyright (c) 2000-2009, International Business Machines Corporation
- * and others. All Rights Reserved.
- ************************************************************************/
-/************************************************************************
-* Date Name Description
-* 1/03/2000 Madhu Creation.
-************************************************************************/
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_TRANSLITERATION
-
-#include "ittrans.h"
-#include "transapi.h"
-#include "unicode/utypes.h"
-#include "unicode/translit.h"
-#include "unicode/unifilt.h"
-#include "cpdtrans.h"
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include "unicode/rep.h"
-#include "unicode/locid.h"
-#include "unicode/uniset.h"
-
-int32_t getInt(UnicodeString str)
-{
- char buffer[20];
- int len=str.length();
- if(len>=20) {
- len=19;
- }
- str.extract(0, len, buffer, "");
- buffer[len]=0;
- return atoi(buffer);
-}
-
-//---------------------------------------------
-// runIndexedTest
-//---------------------------------------------
-
-void
-TransliteratorAPITest::runIndexedTest(int32_t index, UBool exec,
- const char* &name, char* /*par*/) {
- switch (index) {
- TESTCASE(0,TestgetInverse);
- TESTCASE(1,TestgetID);
- TESTCASE(2,TestGetDisplayName);
- TESTCASE(3,TestTransliterate1);
- TESTCASE(4,TestTransliterate2);
- TESTCASE(5,TestTransliterate3);
- TESTCASE(6,TestSimpleKeyboardTransliterator);
- TESTCASE(7,TestKeyboardTransliterator1);
- TESTCASE(8,TestKeyboardTransliterator2);
- TESTCASE(9,TestKeyboardTransliterator3);
- TESTCASE(10,TestGetAdoptFilter);
- TESTCASE(11,TestClone);
- TESTCASE(12,TestNullTransliterator);
- TESTCASE(13,TestRegisterUnregister);
- TESTCASE(14,TestUnicodeFunctor);
- default: name = ""; break;
- }
-}
-
-
-void TransliteratorAPITest::TestgetID() {
- UnicodeString trans="Latin-Greek";
- UnicodeString ID;
- UParseError parseError;
- UErrorCode status = U_ZERO_ERROR;
- Transliterator* t= Transliterator::createInstance(trans, UTRANS_FORWARD, parseError, status);
- if(t==0 || U_FAILURE(status)){
- dataerrln("FAIL: construction of Latin-Greek - %s",u_errorName(status));
- return;
- }else{
- ID= t->getID();
- if(ID != trans)
- errln("FAIL: getID returned " + ID + " instead of Latin-Greek");
- delete t;
- }
- int i;
- for (i=0; i<Transliterator::countAvailableIDs(); i++){
- status = U_ZERO_ERROR;
- ID = (UnicodeString) Transliterator::getAvailableID(i);
- if(ID.indexOf("Thai")>-1){
- continue;
- }
- t = Transliterator::createInstance(ID, UTRANS_FORWARD, parseError, status);
- if(t == 0){
- errln("FAIL: " + ID);
- continue;
- }
- if(ID != t->getID())
- errln("FAIL: getID() returned " + t->getID() + " instead of " + ID);
- delete t;
- }
- ID=(UnicodeString)Transliterator::getAvailableID(i);
- if(ID != (UnicodeString)Transliterator::getAvailableID(0)){
- errln("FAIL: calling getAvailableID(index > coundAvailableIDs) should make index=0\n");
- }
-
- Transliterator* t1=Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
- Transliterator* t2=Transliterator::createInstance("Latin-Greek", UTRANS_FORWARD, parseError, status);
- if(t1 ==0 || t2 == 0){
- errln("FAIL: construction");
- return;
- }
- Transliterator* t3=t1->clone();
- Transliterator* t4=t2->clone();
-
- if(t1->getID() != t3->getID() || t2->getID() != t4->getID() ||
- t1->getID() == t4->getID() || t2->getID() == t3->getID() ||
- t1->getID()== t4->getID() )
- errln("FAIL: getID or clone failed");
-
-
- Transliterator* t5=Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
- if(t5 == 0)
- errln("FAIL: construction");
- else if(t1->getID() != t5->getID() || t5->getID() != t3->getID() || t1->getID() != t3->getID())
- errln("FAIL: getID or clone failed");
-
-
- delete t1;
- delete t2;
- delete t3;
- delete t4;
- delete t5;
-}
-
-void TransliteratorAPITest::TestgetInverse() {
- UErrorCode status = U_ZERO_ERROR;
- UParseError parseError;
- Transliterator* t1 = Transliterator::createInstance("Katakana-Latin", UTRANS_FORWARD, parseError, status);
- Transliterator* invt1 = Transliterator::createInstance("Latin-Katakana", UTRANS_FORWARD, parseError, status);
- Transliterator* t2 = Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
- Transliterator* invt2 = Transliterator::createInstance("Devanagari-Latin", UTRANS_FORWARD, parseError, status);
- if(t1 == 0 || invt1 == 0 || t2 == 0 || invt2 == 0) {
- dataerrln("FAIL: in instantiation - %s", u_errorName(status));
- return;
- }
-
- Transliterator* inverse1=t1->createInverse(status);
- Transliterator* inverse2=t2->createInverse(status);
- if(inverse1->getID() != invt1->getID() || inverse2->getID() != invt2->getID()
- || inverse1->getID() == invt2->getID() || inverse2->getID() == invt1->getID() )
- errln("FAIL: getInverse() ");
-
- UnicodeString TransID[]={
- "Halfwidth-Fullwidth",
- "Fullwidth-Halfwidth",
- "Greek-Latin" ,
- "Latin-Greek",
- //"Arabic-Latin", // removed in 2.0
- //"Latin-Arabic",
- "Katakana-Latin",
- "Latin-Katakana",
- //"Hebrew-Latin", // removed in 2.0
- //"Latin-Hebrew",
- "Cyrillic-Latin",
- "Latin-Cyrillic",
- "Devanagari-Latin",
- "Latin-Devanagari",
- "Any-Hex",
- "Hex-Any"
- };
- for(uint32_t i=0; i<sizeof(TransID)/sizeof(TransID[0]); i=i+2){
- Transliterator *trans1=Transliterator::createInstance(TransID[i], UTRANS_FORWARD, parseError, status);
- if(t1 == 0){
- errln("FAIL: in instantiation for" + TransID[i]);
- continue;
- }
- Transliterator *inver1=trans1->createInverse(status);
- if(inver1->getID() != TransID[i+1] )
- errln("FAIL :getInverse() for " + TransID[i] + " returned " + inver1->getID() + " instead of " + TransID[i+1]);
- delete inver1;
- delete trans1;
- }
- delete t1;
- delete t2;
- delete invt1;
- delete invt2;
- delete inverse1;
- delete inverse2;
-
-}
-
-void TransliteratorAPITest::TestClone(){
- Transliterator *t1, *t2, *t3, *t4;
- UErrorCode status = U_ZERO_ERROR;
- UParseError parseError;
- t1=Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
- t2=Transliterator::createInstance("Latin-Greek", UTRANS_FORWARD, parseError, status);
- if(t1 == 0 || t2 == 0){
- dataerrln("FAIL: construction - %s", u_errorName(status));
- return;
- }
- t3=t1->clone();
- t4=t2->clone();
-
- if(t1->getID() != t3->getID() || t2->getID() != t4->getID() )
- errln("FAIL: clone or getID failed");
- if(t1->getID()==t4->getID() || t2->getID()==t3->getID() || t1->getID()==t4->getID())
- errln("FAIL: clone or getID failed");
-
- delete t1;
- delete t2;
- delete t3;
- delete t4;
-
-}
-
-void TransliteratorAPITest::TestGetDisplayName() {
- UnicodeString dispNames[]= {
- //ID, displayName
- //"CurlyQuotes-StraightQuotes" ,"CurlyQuotes to StraightQuotes",
- "Any-Hex" ,"Any to Hex Escape",
- "Halfwidth-Fullwidth" ,"Halfwidth to Fullwidth" ,
- //"Latin-Arabic" ,"Latin to Arabic" ,
- "Latin-Devanagari" ,"Latin to Devanagari" ,
- "Greek-Latin" ,"Greek to Latin" ,
- //"Arabic-Latin" ,"Arabic to Latin" ,
- "Hex-Any" ,"Hex Escape to Any",
- "Cyrillic-Latin" ,"Cyrillic to Latin" ,
- "Latin-Greek" ,"Latin to Greek" ,
- "Latin-Katakana" ,"Latin to Katakana" ,
- //"Latin-Hebrew" ,"Latin to Hebrew" ,
- "Katakana-Latin" ,"Katakana to Latin"
- };
- UnicodeString name="";
- Transliterator* t;
- UnicodeString message;
- UErrorCode status = U_ZERO_ERROR;
- UParseError parseError;
-
-#if UCONFIG_NO_FORMATTING
- logln("Skipping, UCONFIG_NO_FORMATTING is set\n");
- return;
-#else
-
- for (uint32_t i=0; i<sizeof(dispNames)/sizeof(dispNames[0]); i=i+2 ) {
- t = Transliterator::createInstance(dispNames[i+0], UTRANS_FORWARD, parseError, status);
- if(t==0){
- dataerrln("FAIL: construction: " + dispNames[i+0] + " - " + u_errorName(status));
- status = U_ZERO_ERROR;
- continue;
- }
- t->getDisplayName(t->getID(), name);
- message="Display name for ID:" + t->getID();
- // doTest(message, name, dispNames[i+1]); //!!! This will obviously fail for any locale other than english and its children!!!
- name="";
- t->getDisplayName(t->getID(), Locale::getUS(), name);
- message.remove();
- message.append("Display name for on english locale ID:");
- message.append(t->getID());
- // message="Display name for on english locale ID:" + t->getID();
- doTest(message, name, dispNames[i+1]);
- name="";
-
- delete t;
- }
-#endif
-
-}
-
-void TransliteratorAPITest::TestTransliterate1(){
-
- UnicodeString Data[]={
- //ID, input string, transliterated string
- "Any-Hex", "hello", UnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F", "") ,
- "Hex-Any", UnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F", ""), "hello" ,
- "Latin-Devanagari",CharsToUnicodeString("bha\\u0304rata"), CharsToUnicodeString("\\u092D\\u093E\\u0930\\u0924") ,
- "Latin-Devanagari",UnicodeString("kra ksha khra gra cra dya dhya",""), CharsToUnicodeString("\\u0915\\u094D\\u0930 \\u0915\\u094D\\u0936 \\u0916\\u094D\\u0930 \\u0917\\u094D\\u0930 \\u091a\\u094D\\u0930 \\u0926\\u094D\\u092F \\u0927\\u094D\\u092F") ,
-
- "Devanagari-Latin", CharsToUnicodeString("\\u092D\\u093E\\u0930\\u0924"), CharsToUnicodeString("bh\\u0101rata"),
- // "Contracted-Expanded", CharsToUnicodeString("\\u00C0\\u00C1\\u0042"), CharsToUnicodeString("\\u0041\\u0300\\u0041\\u0301\\u0042") ,
- // "Expanded-Contracted", CharsToUnicodeString("\\u0041\\u0300\\u0041\\u0301\\u0042"), CharsToUnicodeString("\\u00C0\\u00C1\\u0042") ,
- //"Latin-Arabic", "aap", CharsToUnicodeString("\\u0627\\u06A4") ,
- //"Arabic-Latin", CharsToUnicodeString("\\u0627\\u06A4"), "aap"
- };
-
- UnicodeString gotResult;
- UnicodeString temp;
- UnicodeString message;
- Transliterator* t;
- logln("Testing transliterate");
- UErrorCode status = U_ZERO_ERROR;
- UParseError parseError;
-
- for(uint32_t i=0;i<sizeof(Data)/sizeof(Data[0]); i=i+3){
- t=Transliterator::createInstance(Data[i+0], UTRANS_FORWARD, parseError, status);
- if(t==0){
- dataerrln("FAIL: construction: " + Data[i+0] + " Error: " + u_errorName(status));
- dataerrln("PreContext: " + prettify(parseError.preContext) + " PostContext: " + prettify( parseError.postContext) );
- status = U_ZERO_ERROR;
- continue;
- }
- gotResult = Data[i+1];
- t->transliterate(gotResult);
- message=t->getID() + "->transliterate(UnicodeString, UnicodeString) for\n\t Source:" + prettify(Data[i+1]);
- doTest(message, gotResult, Data[i+2]);
-
- //doubt here
- temp=Data[i+1];
- t->transliterate(temp);
- message.remove();
- message.append(t->getID());
- message.append("->transliterate(Replaceable) for \n\tSource:");
- message.append(Data[i][1]);
- doTest(message, temp, Data[i+2]);
-
- callEverything(t, __LINE__);
- delete t;
- }
-}
-
-void TransliteratorAPITest::TestTransliterate2(){
- //testing tranliterate(String text, int start, int limit, StringBuffer result)
- UnicodeString Data2[]={
- //ID, input string, start, limit, transliterated string
- "Any-Hex", "hello! How are you?", "0", "5", UnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F", ""), UnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F! How are you?", "") ,
- "Any-Hex", "hello! How are you?", "7", "12", UnicodeString("\\u0048\\u006F\\u0077\\u0020\\u0061", ""), UnicodeString("hello! \\u0048\\u006F\\u0077\\u0020\\u0061re you?", ""),
- "Hex-Any", CharsToUnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F\\u0021\\u0020"), "0", "5", "hello", "hello! " ,
- // "Contracted-Expanded", CharsToUnicodeString("\\u00C0\\u00C1\\u0042"), "1", "2", CharsToUnicodeString("\\u0041\\u0301"), CharsToUnicodeString("\\u00C0\\u0041\\u0301\\u0042") ,
- "Devanagari-Latin", CharsToUnicodeString("\\u092D\\u093E\\u0930\\u0924"), "0", "1", "bha", CharsToUnicodeString("bha\\u093E\\u0930\\u0924") ,
- "Devanagari-Latin", CharsToUnicodeString("\\u092D\\u093E\\u0930\\u0924"), "1", "2", CharsToUnicodeString("\\u0314\\u0101"), CharsToUnicodeString("\\u092D\\u0314\\u0101\\u0930\\u0924")
-
- };
- logln("\n Testing transliterate(String, int, int, StringBuffer)");
- Transliterator* t;
- UnicodeString gotResBuf;
- UnicodeString temp;
- int32_t start, limit;
- UErrorCode status = U_ZERO_ERROR;
- UParseError parseError;
-
- for(uint32_t i=0; i<sizeof(Data2)/sizeof(Data2[0]); i=i+6){
- t=Transliterator::createInstance(Data2[i+0], UTRANS_FORWARD, parseError, status);
- if(t==0){
- dataerrln("FAIL: construction: " + prettify(Data2[i+0]) + " - " + u_errorName(status));
- continue;
- }
- start=getInt(Data2[i+2]);
- limit=getInt(Data2[i+3]);
- Data2[i+1].extractBetween(start, limit, gotResBuf);
- t->transliterate(gotResBuf);
- // errln("FAIL: calling transliterate on " + t->getID());
- doTest(t->getID() + ".transliterate(UnicodeString, int32_t, int32_t, UnicodeString):(" + start + "," + limit + ") for \n\t source: " + prettify(Data2[i+1]), gotResBuf, Data2[i+4]);
-
- temp=Data2[i+1];
- t->transliterate(temp, start, limit);
- doTest(t->getID() + ".transliterate(Replaceable, int32_t, int32_t, ):(" + start + "," + limit + ") for \n\t source: " + prettify(Data2[i+1]), temp, Data2[i+5]);
- status = U_ZERO_ERROR;
- callEverything(t, __LINE__);
- delete t;
- t = NULL;
- }
-
- status = U_ZERO_ERROR;
- logln("\n Try calling transliterate with illegal start and limit values");
- t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(U_FAILURE(status)) {
- errln("Error creating transliterator %s", u_errorName(status));
- delete t;
- return;
- }
- gotResBuf = temp = "try start greater than limit";
- t->transliterate(gotResBuf, 10, 5);
- if(gotResBuf == temp) {
- logln("OK: start greater than limit value handled correctly");
- } else {
- errln("FAIL: start greater than limit value returned" + gotResBuf);
- }
-
- callEverything(t, __LINE__);
- delete t;
-
-}
-void TransliteratorAPITest::TestTransliterate3(){
- UnicodeString rs="This is the replaceable String";
- UnicodeString Data[] = {
- "0", "0", "This is the replaceable String",
- "2", "3", UnicodeString("Th\\u0069s is the replaceable String", ""),
- "21", "23", UnicodeString("Th\\u0069s is the repl\\u0061\\u0063eable String", ""),
- "14", "17", UnicodeString("Th\\u0069s is t\\u0068\\u0065\\u0020repl\\u0061\\u0063eable String", ""),
- };
- int start, limit;
- UnicodeString message;
- UParseError parseError;
- UErrorCode status = U_ZERO_ERROR;
- Transliterator *t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(U_FAILURE(status)) {
- errln("Error creating transliterator %s", u_errorName(status));
- delete t;
- return;
- }
-
- if(t == 0)
- errln("FAIL : construction");
- for(uint32_t i=0; i<sizeof(Data)/sizeof(Data[0]); i=i+3){
- start=getInt(Data[i+0]);
- limit=getInt(Data[i+1]);
- t->transliterate(rs, start, limit);
- message=t->getID() + ".transliterate(ReplaceableString, start, limit):("+start+","+limit+"):";
- doTest(message, rs, Data[i+2]);
- }
- delete t;
-}
-
-void TransliteratorAPITest::TestSimpleKeyboardTransliterator(){
- logln("simple call to transliterate");
- UErrorCode status=U_ZERO_ERROR;
- UParseError parseError;
- Transliterator* t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(t == 0) {
- UnicodeString context;
-
- if (parseError.preContext[0]) {
- context += (UnicodeString)" at " + parseError.preContext;
- }
- if (parseError.postContext[0]) {
- context += (UnicodeString)" | " + parseError.postContext;
- }
- errln((UnicodeString)"FAIL: can't create Any-Hex, " +
- (UnicodeString)u_errorName(status) + context);
- return;
- }
- UTransPosition index={19,20,20,20};
- UnicodeString rs= "Transliterate this-''";
- UnicodeString insertion="abc";
- UnicodeString expected=UnicodeString("Transliterate this-'\\u0061\\u0062\\u0063'", "");
- t->transliterate(rs, index, insertion, status);
- if(U_FAILURE(status))
- errln("FAIL: " + t->getID()+ ".translitere(Replaceable, int[], UnicodeString, UErrorCode)-->" + (UnicodeString)u_errorName(status));
- t->finishTransliteration(rs, index);
- UnicodeString message="transliterate";
- doTest(message, rs, expected);
-
- logln("try calling transliterate with invalid index values");
- UTransPosition index1[]={
- //START, LIMIT, CURSOR
- {10, 10, 12, 10}, //invalid since CURSOR>LIMIT valid:-START <= CURSOR <= LIMIT
- {17, 16, 17, 17}, //invalid since START>LIMIT valid:-0<=START<=LIMIT
- {-1, 16, 14, 16}, //invalid since START<0
- {3, 50, 2, 50} //invalid since LIMIT>text.length()
- };
- for(uint32_t i=0; i<sizeof(index1)/sizeof(index1[0]); i++){
- status=U_ZERO_ERROR;
- t->transliterate(rs, index1[i], insertion, status);
- if(status == U_ILLEGAL_ARGUMENT_ERROR)
- logln("OK: invalid index values handled correctly");
- else
- errln("FAIL: invalid index values didn't throw U_ILLEGAL_ARGUMENT_ERROR throw" + (UnicodeString)u_errorName(status));
- }
-
- delete t;
-}
-void TransliteratorAPITest::TestKeyboardTransliterator1(){
- UnicodeString Data[]={
- //insertion, buffer
- "a", UnicodeString("\\u0061", "") ,
- "bbb", UnicodeString("\\u0061\\u0062\\u0062\\u0062", "") ,
- "ca", UnicodeString("\\u0061\\u0062\\u0062\\u0062\\u0063\\u0061", "") ,
- " ", UnicodeString("\\u0061\\u0062\\u0062\\u0062\\u0063\\u0061\\u0020", "") ,
- "", UnicodeString("\\u0061\\u0062\\u0062\\u0062\\u0063\\u0061\\u0020", "") ,
-
- "a", UnicodeString("\\u0061", "") ,
- "b", UnicodeString("\\u0061\\u0062", "") ,
- "z", UnicodeString("\\u0061\\u0062\\u007A", "") ,
- "", UnicodeString("\\u0061\\u0062\\u007A", "")
-
- };
- UParseError parseError;
- UErrorCode status = U_ZERO_ERROR;
- Transliterator* t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(U_FAILURE(status)) {
- errln("Error creating transliterator %s", u_errorName(status));
- delete t;
- return;
- }
- //keyboardAux(t, Data);
- UTransPosition index={0, 0, 0, 0};
- UnicodeString s;
- uint32_t i;
- logln("Testing transliterate(Replaceable, int32_t, UnicodeString, UErrorCode)");
- for (i=0; i<10; i=i+2) {
- UnicodeString log;
- if (Data[i+0] != "") {
- log = s + " + " + Data[i+0] + " -> ";
- t->transliterate(s, index, Data[i+0], status);
- if(U_FAILURE(status)){
- errln("FAIL: " + t->getID()+ ".transliterate(Replaceable, int32_t[], UnicodeString, UErrorCode)-->" + (UnicodeString)u_errorName(status));
- continue;
- }
- }else {
- log = s + " => ";
- t->finishTransliteration(s, index);
- }
- // Show the start index '{' and the cursor '|'
- displayOutput(s, Data[i+1], log, index);
-
- }
-
- s="";
- status=U_ZERO_ERROR;
- index.contextStart = index.contextLimit = index.start = index.limit = 0;
- logln("Testing transliterate(Replaceable, int32_t, UChar, UErrorCode)");
- for(i=10; i<sizeof(Data)/sizeof(Data[0]); i=i+2){
- UnicodeString log;
- if (Data[i+0] != "") {
- log = s + " + " + Data[i+0] + " -> ";
- UChar c=Data[i+0].charAt(0);
- t->transliterate(s, index, c, status);
- if(U_FAILURE(status))
- errln("FAIL: " + t->getID()+ ".transliterate(Replaceable, int32_t[], UChar, UErrorCode)-->" + (UnicodeString)u_errorName(status));
- continue;
- }else {
- log = s + " => ";
- t->finishTransliteration(s, index);
- }
- // Show the start index '{' and the cursor '|'
- displayOutput(s, Data[i+1], log, index);
- }
-
- delete t;
-}
-
-void TransliteratorAPITest::TestKeyboardTransliterator2(){
- UnicodeString Data[]={
- //insertion, buffer, index[START], index[LIMIT], index[CURSOR]
- //data for Any-Hex
- "abc", UnicodeString("Initial String: add-\\u0061\\u0062\\u0063-", ""), "19", "20", "20",
- "a", UnicodeString("In\\u0069\\u0061tial String: add-\\u0061\\u0062\\u0063-", ""), "2", "3", "2" ,
- "b", UnicodeString("\\u0062In\\u0069\\u0061tial String: add-\\u0061\\u0062\\u0063-", ""), "0", "0", "0" ,
- "", UnicodeString("\\u0062In\\u0069\\u0061tial String: add-\\u0061\\u0062\\u0063-", ""), "0", "0", "0" ,
- //data for Latin-Devanagiri
- CharsToUnicodeString("a\\u0304"), CharsToUnicodeString("Hindi -\\u0906-"), "6", "7", "6",
- CharsToUnicodeString("ma\\u0304"), CharsToUnicodeString("Hindi -\\u0906\\u092E\\u093E-"), "7", "8", "7",
- CharsToUnicodeString("ra\\u0304"), CharsToUnicodeString("Hi\\u0930\\u093Endi -\\u0906\\u092E\\u093E-"),"1", "2", "2",
- CharsToUnicodeString(""), CharsToUnicodeString("Hi\\u0930\\u093Endi -\\u0906\\u092E\\u093E-"),"1", "2", "2"
- //data for contracted-Expanded
- // CharsToUnicodeString("\\u00C1"), CharsToUnicodeString("Ad\\u0041\\u0301d here:"), "1", "2", "1" ,
- // CharsToUnicodeString("\\u00C0"), CharsToUnicodeString("Ad\\u0041\\u0301d here:\\u0041\\u0300"), "11", "11", "11",
- // "", CharsToUnicodeString("Ad\\u0041\\u0301d here:\\u0041\\u0300"), "11", "11", "11",
- };
- Transliterator *t;
- UnicodeString rs;
- UnicodeString dataStr;
- logln("Testing transliterate(Replaceable, int32_t, UnicodeString, UErrorCode)");
- UErrorCode status = U_ZERO_ERROR;
- UParseError parseError;
- rs="Initial String: add--";
- t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(t == 0)
- dataerrln("FAIL : construction - %s", u_errorName(status));
- else {
- keyboardAux(t, Data, rs, 0, 20);
- delete t;
- }
-
- rs="Hindi --";
- t=Transliterator::createInstance("Latin-Devanagari", UTRANS_FORWARD, parseError, status);
- if(t == 0)
- dataerrln("FAIL : construction - %s", u_errorName(status));
- else
- keyboardAux(t, Data, rs, 20, 40);
-
-
- // rs="Add here:";
- // t=Transliterator::createInstance("Contracted-Expanded");
- // keyboardAux(t, Data, rs, 35, 55);
-
-
- delete t;
-}
-
-void TransliteratorAPITest::TestKeyboardTransliterator3(){
- UnicodeString s="This is the main string";
- UnicodeString Data[] = {
- "0", "0", "0", "This is the main string",
- "1", "3", "2", UnicodeString("Th\\u0069s is the main string", ""),
- "20", "21", "20", UnicodeString("Th\\u0069s is the mai\\u006E string", "")
- };
-
- UErrorCode status=U_ZERO_ERROR;
- UParseError parseError;
- UTransPosition index={0, 0, 0, 0};
- logln("Testing transliterate(Replaceable, int32_t, UErrorCode)");
- Transliterator *t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(t == 0 || U_FAILURE(status)) {
- errln("Error creating transliterator %s", u_errorName(status));
- delete t;
- return;
- }
- for(uint32_t i=0; i<sizeof(Data)/sizeof(Data[0]); i=i+4){
- UnicodeString log;
- index.contextStart=getInt(Data[i+0]);
- index.contextLimit=index.limit=getInt(Data[i+1]);
- index.start=getInt(Data[i+2]);
- t->transliterate(s, index, status);
- if(U_FAILURE(status)){
- errln("FAIL: " + t->getID()+ ".transliterate(Replaceable, int32_t[], UErrorCode)-->" + (UnicodeString)u_errorName(status));
- continue;
- }
- t->finishTransliteration(s, index);
- log = s + " => ";
- // Show the start index '{' and the cursor '|'
- displayOutput(s, Data[i+3], log, index);
- }
-
- delete t;
-}
-void TransliteratorAPITest::TestNullTransliterator(){
- UErrorCode status=U_ZERO_ERROR;
- UnicodeString s("Transliterate using null transliterator");
- Transliterator *nullTrans=Transliterator::createInstance("Any-Null", UTRANS_FORWARD, status);
- int32_t transLimit;
- int32_t start=0;
- int32_t limit=s.length();
- UnicodeString replaceable=s;
- transLimit=nullTrans->transliterate(replaceable, start, limit);
- if(transLimit != limit){
- errln("ERROR: NullTransliterator->transliterate() failed");
- }
- doTest((UnicodeString)"nulTrans->transliterate", replaceable, s);
- replaceable.remove();
- replaceable.append(s);
- UTransPosition index;
- index.contextStart =start;
- index.contextLimit = limit;
- index.start = 0;
- index.limit = limit;
- nullTrans->finishTransliteration(replaceable, index);
- if(index.start != limit){
- errln("ERROR: NullTransliterator->handleTransliterate() failed");
- }
- doTest((UnicodeString)"NullTransliterator->handleTransliterate", replaceable, s);
- callEverything(nullTrans, __LINE__);
- delete nullTrans;
-
-
-}
-void TransliteratorAPITest::TestRegisterUnregister(){
-
- UErrorCode status=U_ZERO_ERROR;
- /* Make sure it doesn't exist */
- if (Transliterator::createInstance("TestA-TestB", UTRANS_FORWARD, status) != NULL) {
- errln("FAIL: TestA-TestB already registered\n");
- return;
- }
- /* Check inverse too
- if (Transliterator::createInstance("TestA-TestB",
- (UTransDirection)UTRANS_REVERSE) != NULL) {
- errln("FAIL: TestA-TestB inverse already registered\n");
- return;
- }
- */
- status =U_ZERO_ERROR;
-
- /* Create it */
- UParseError parseError;
- Transliterator *t = Transliterator::createFromRules("TestA-TestB",
- "a<>b",
- UTRANS_FORWARD, parseError,
- status);
- /* Register it */
- Transliterator::registerInstance(t);
-
- /* Now check again -- should exist now*/
- Transliterator *s = Transliterator::createInstance("TestA-TestB", UTRANS_FORWARD, status);
- if (s == NULL) {
- errln("FAIL: TestA-TestB not registered\n");
- return;
- }
- callEverything(s, __LINE__);
- callEverything(t, __LINE__);
- delete s;
-
- /* Check inverse too
- s = Transliterator::createInstance("TestA-TestB",
- (UTransDirection)UTRANS_REVERSE);
- if (s == NULL) {
- errln("FAIL: TestA-TestB inverse not registered\n");
- return;
- }
- delete s;
- */
-
- /*unregister the instance*/
- Transliterator::unregister("TestA-TestB");
- /* now Make sure it doesn't exist */
- if (Transliterator::createInstance("TestA-TestB", UTRANS_FORWARD, status) != NULL) {
- errln("FAIL: TestA-TestB isn't unregistered\n");
- return;
- }
-
-}
-
-
-int gTestFilter1ClassID = 0;
-int gTestFilter2ClassID = 0;
-int gTestFilter3ClassID = 0;
-
-/**
- * Used by TestFiltering().
- */
-class TestFilter1 : public UnicodeFilter {
- UClassID getDynamicClassID()const { return &gTestFilter1ClassID; }
- virtual UnicodeFunctor* clone() const {
- return new TestFilter1(*this);
- }
- virtual UBool contains(UChar32 c) const {
- if(c==0x63 || c==0x61 || c==0x43 || c==0x41)
- return FALSE;
- else
- return TRUE;
- }
- // Stubs
- virtual UnicodeString& toPattern(UnicodeString& result,
- UBool /*escapeUnprintable*/) const {
- return result;
- }
- virtual UBool matchesIndexValue(uint8_t /*v*/) const {
- return FALSE;
- }
- virtual void addMatchSetTo(UnicodeSet& /*toUnionTo*/) const {}
-};
-class TestFilter2 : public UnicodeFilter {
- UClassID getDynamicClassID()const { return &gTestFilter2ClassID; }
- virtual UnicodeFunctor* clone() const {
- return new TestFilter2(*this);
- }
- virtual UBool contains(UChar32 c) const {
- if(c==0x65 || c==0x6c)
- return FALSE;
- else
- return TRUE;
- }
- // Stubs
- virtual UnicodeString& toPattern(UnicodeString& result,
- UBool /*escapeUnprintable*/) const {
- return result;
- }
- virtual UBool matchesIndexValue(uint8_t /*v*/) const {
- return FALSE;
- }
- virtual void addMatchSetTo(UnicodeSet& /*toUnionTo*/) const {}
-};
-class TestFilter3 : public UnicodeFilter {
- UClassID getDynamicClassID()const { return &gTestFilter3ClassID; }
- virtual UnicodeFunctor* clone() const {
- return new TestFilter3(*this);
- }
- virtual UBool contains(UChar32 c) const {
- if(c==0x6f || c==0x77)
- return FALSE;
- else
- return TRUE;
- }
- // Stubs
- virtual UnicodeString& toPattern(UnicodeString& result,
- UBool /*escapeUnprintable*/) const {
- return result;
- }
- virtual UBool matchesIndexValue(uint8_t /*v*/) const {
- return FALSE;
- }
- virtual void addMatchSetTo(UnicodeSet& /*toUnionTo*/) const {}
-};
-
-
-void TransliteratorAPITest::TestGetAdoptFilter(){
- UErrorCode status = U_ZERO_ERROR;
- UParseError parseError;
- Transliterator *t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
- if(t == 0 || U_FAILURE(status)) {
- errln("Error creating transliterator %s", u_errorName(status));
- delete t;
- return;
- }
- const UnicodeFilter *u=t->getFilter();
- if(u != NULL){
- errln("FAIL: getFilter failed. Didn't return null when the transliterator used no filtering");
- delete t;
- return;
- }
-
- UnicodeString got, temp, message;
- UnicodeString data="ABCabcbbCBa";
- temp = data;
- t->transliterate(temp);
- t->adoptFilter(new TestFilter1);
-
- got = data;
- t->transliterate(got);
- UnicodeString exp=UnicodeString("A\\u0042Ca\\u0062c\\u0062\\u0062C\\u0042a", "");
- message="transliteration after adoptFilter(a,A,c,C) ";
- doTest(message, got, exp);
-
- logln("Testing round trip");
- t->adoptFilter((UnicodeFilter*)u);
- if(t->getFilter() == NULL)
- logln("OK: adoptFilter and getFilter round trip worked");
- else
- errln("FAIL: adoptFilter or getFilter round trip failed");
-
- got = data;
- t->transliterate(got);
- exp=UnicodeString("\\u0041\\u0042\\u0043\\u0061\\u0062\\u0063\\u0062\\u0062\\u0043\\u0042\\u0061", "");
- message="transliteration after adopting null filter";
- doTest(message, got, exp);
- message="adoptFilter round trip";
- doTest("adoptFilter round trip", got, temp);
-
- t->adoptFilter(new TestFilter2);
- callEverything(t, __LINE__);
- data="heelloe";
- exp=UnicodeString("\\u0068eell\\u006Fe", "");
- got = data;
- t->transliterate(got);
- message="transliteration using (e,l) filter";
- doTest("transliteration using (e,l) filter", got, exp);
-
- data="are well";
- exp=UnicodeString("\\u0061\\u0072e\\u0020\\u0077ell", "");
- got = data;
- t->transliterate(got);
- doTest(message, got, exp);
-
- t->adoptFilter(new TestFilter3);
- data="ho, wow!";
- exp=UnicodeString("\\u0068o\\u002C\\u0020wow\\u0021", "");
- got = data;
- t->transliterate(got);
- message="transliteration using (o,w) filter";
- doTest("transliteration using (o,w) filter", got, exp);
-
- data="owl";
- exp=UnicodeString("ow\\u006C", "");
- got = data;
- t->transliterate(got);
- doTest("transliteration using (o,w) filter", got, exp);
-
- delete t;
-
-}
-
-
-
-void TransliteratorAPITest::keyboardAux(Transliterator *t, UnicodeString DATA[], UnicodeString& s, int32_t begin, int32_t end) {
- UTransPosition index={0, 0, 0, 0};
- UErrorCode status=U_ZERO_ERROR;
- for (int32_t i=begin; i<end; i=i+5) {
- UnicodeString log;
- if (DATA[i+0] != "") {
- log = s + " + " + DATA[i] + " -> ";
- index.contextStart=getInt(DATA[i+2]);
- index.contextLimit=index.limit=getInt(DATA[i+3]);
- index.start=getInt(DATA[i+4]);
- t->transliterate(s, index, DATA[i+0], status);
- if(U_FAILURE(status)){
- errln("FAIL: " + t->getID()+ ".transliterate(Replaceable, int32_t[], UnicodeString, UErrorCode)-->" + (UnicodeString)u_errorName(status));
- continue;
- }
- log = s + " => ";
- t->finishTransliteration(s, index);
- }
- // Show the start index '{' and the cursor '|'
- displayOutput(s, DATA[i+1], log, index);
-
- }
-}
-
-void TransliteratorAPITest::displayOutput(const UnicodeString& got, const UnicodeString& expected, UnicodeString& log, UTransPosition& index){
- // Show the start index '{' and the cursor '|'
- UnicodeString a, b, c, d, e;
- got.extractBetween(0, index.contextStart, a);
- got.extractBetween(index.contextStart, index.start, b);
- got.extractBetween(index.start, index.limit, c);
- got.extractBetween(index.limit, index.contextLimit, d);
- got.extractBetween(index.contextLimit, got.length(), e);
- log.append(a).
- append((UChar)0x7b/*{*/).
- append(b).
- append((UChar)0x7c/*|*/).
- append(c).
- append((UChar)0x7c).
- append(d).
- append((UChar)0x7d/*}*/).
- append(e);
- if (got == expected)
- logln("OK:" + prettify(log));
- else
- errln("FAIL: " + prettify(log) + ", expected " + prettify(expected));
-}
-
-
-/*Internal Functions used*/
-void TransliteratorAPITest::doTest(const UnicodeString& message, const UnicodeString& result, const UnicodeString& expected){
- if (prettify(result) == prettify(expected))
- logln((UnicodeString)"Ok: " + prettify(message) + " passed \"" + prettify(expected) + "\"");
- else
- dataerrln((UnicodeString)"FAIL:" + message + " failed Got-->" + prettify(result)+ ", Expected--> " + prettify(expected) );
-}
-
-
-//
-// callEverything call all of the const (non-destructive) methods on a
-// transliterator, just to verify that they don't fail in some
-// destructive way.
-//
-#define CEASSERT(a) {if (!(a)) { \
-errln("FAIL at line %d from line %d: %s", __LINE__, line, #a); return; }}
-
-void TransliteratorAPITest::callEverything(const Transliterator *tr, int line) {
- Transliterator *clonedTR = tr->clone();
- CEASSERT(clonedTR != NULL);
-
- int32_t maxcl = tr->getMaximumContextLength();
- CEASSERT(clonedTR->getMaximumContextLength() == maxcl);
-
- UnicodeString id;
- UnicodeString clonedId;
- id = tr->getID();
- clonedId = clonedTR->getID();
- CEASSERT(id == clonedId);
-
- const UnicodeFilter *filter = tr->getFilter();
- const UnicodeFilter *clonedFilter = clonedTR->getFilter();
- if (filter == NULL || clonedFilter == NULL) {
- // If one filter is NULL they better both be NULL.
- CEASSERT(filter == clonedFilter);
- } else {
- CEASSERT(filter != clonedFilter);
- }
-
- UnicodeString rules;
- UnicodeString clonedRules;
- rules = tr->toRules(rules, FALSE);
- clonedRules = clonedTR->toRules(clonedRules, FALSE);
- CEASSERT(rules == clonedRules);
-
- UnicodeSet sourceSet;
- UnicodeSet clonedSourceSet;
- tr->getSourceSet(sourceSet);
- clonedTR->getSourceSet(clonedSourceSet);
- CEASSERT(clonedSourceSet == sourceSet);
-
- UnicodeSet targetSet;
- UnicodeSet clonedTargetSet;
- tr->getTargetSet(targetSet);
- clonedTR->getTargetSet(clonedTargetSet);
- CEASSERT(targetSet == clonedTargetSet);
-
- UClassID classID = tr->getDynamicClassID();
- CEASSERT(classID == clonedTR->getDynamicClassID());
- CEASSERT(classID != 0);
-
- delete clonedTR;
-}
-
-static const int MyUnicodeFunctorTestClassID = 0;
-class MyUnicodeFunctorTestClass : public UnicodeFunctor {
-public:
- virtual UnicodeFunctor* clone() const {return NULL;}
- static UClassID getStaticClassID(void) {return (UClassID)&MyUnicodeFunctorTestClassID;}
- virtual UClassID getDynamicClassID(void) const {return getStaticClassID();};
- virtual void setData(const TransliterationRuleData*) {}
-};
-
-void TransliteratorAPITest::TestUnicodeFunctor() {
- MyUnicodeFunctorTestClass myClass;
- if (myClass.toMatcher() != NULL) {
- errln("FAIL: UnicodeFunctor::toMatcher did not return NULL");
- }
- if (myClass.toReplacer() != NULL) {
- errln("FAIL: UnicodeFunctor::toReplacer did not return NULL");
- }
-}
-
-
-#endif /* #if !UCONFIG_NO_TRANSLITERATION */
« no previous file with comments | « source/test/intltest/transapi.h ('k') | source/test/intltest/transrt.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698