]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/test/intltest/trnserr.cpp
ICU-57166.0.1.tar.gz
[apple/icu.git] / icuSources / test / intltest / trnserr.cpp
index 46155390103327464c688b981bb6d4fe7a5e4b07..727f0aed60018050732375cb5206e910db4b7cad 100644 (file)
@@ -1,17 +1,15 @@
 /********************************************************************
- * COPYRIGHT: 
- * Copyright (c) 2001-2004, International Business Machines Corporation and
- * others. All Rights Reserved.
+ * Copyright (c) 2001-2009, International Business Machines
+ * Corporation and others. All Rights Reserved.
+ *********************************************************************
+ *   This test program is intended for testing error conditions of the 
+ *   transliterator APIs to make sure the exceptions are raised where
+ *   necessary.
+ *
+ *   Date        Name        Description
+ *   11/14/2001  hshih       Creation.
+ * 
  ********************************************************************/
-/************************************************************************
-*   This test program is intended for testing error conditions of the 
-*   transliterator APIs to make sure the exceptions are raised where
-*   necessary.
-*
-*   Date        Name        Description
-*   11/14/2001  hshih       Creation.
-* 
-************************************************************************/
 
 #include "unicode/utypes.h"
 
 #include "unicode/utypes.h"
 #include "unicode/translit.h"
 #include "unicode/uniset.h"
-#include "rbt.h"
 #include "unicode/unifilt.h"
 #include "cpdtrans.h"
-#include "nultrans.h"
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -43,6 +39,7 @@ TransliteratorErrorTest::runIndexedTest(int32_t index, UBool exec,
         TESTCASE(0,TestTransliteratorErrors);
         TESTCASE(1, TestUnicodeSetErrors);
         TESTCASE(2, TestRBTErrors);
+        TESTCASE(3, TestCoverage);
         //TESTCASE(3, TestUniToHexErrors);
         //TESTCASE(4, TestHexToUniErrors);
         // TODO: Add a subclass to test clone().
@@ -66,7 +63,7 @@ void TransliteratorErrorTest::TestTransliteratorErrors() {
 
     Transliterator* t= Transliterator::createInstance(trans, UTRANS_FORWARD, parseError, status);
     if(t==0 || U_FAILURE(status)){
-        errln("FAIL: construction of Latin-Greek");
+        dataerrln("FAIL: construction of Latin-Greek - %s", u_errorName(status));
         return;
     }
     pos.contextLimit = 0;
@@ -140,11 +137,9 @@ void TransliteratorErrorTest::TestTransliteratorErrors() {
     if(t1!=0 || U_SUCCESS(status)){
         delete t1;
         errln("FAIL: construction of bogus ID \"LATINGREEK-GREEKLATIN\"");
-    } else {
-        delete t1;
     }
     status = U_ZERO_ERROR;
-    Transliterator* t2 = new RuleBasedTransliterator(newID, newIDRules, UTRANS_FORWARD, status);
+    Transliterator* t2 = Transliterator::createFromRules(newID, newIDRules, UTRANS_FORWARD, parseError, status);
     if (U_SUCCESS(status)) {
         Transliterator* t3 = t2->createInverse(status);
         if (U_SUCCESS(status)) {
@@ -218,18 +213,18 @@ void TransliteratorErrorTest::TestRBTErrors() {
 
     UnicodeString rules="ab>y";
     UnicodeString id="MyRandom-YReverse";
-    UnicodeString goodPattern="[[:L:]&[\\u0000-\\uFFFF]]"; /* all BMP letters */
+    //UnicodeString goodPattern="[[:L:]&[\\u0000-\\uFFFF]]"; /* all BMP letters */
     UErrorCode status = U_ZERO_ERROR;
     UParseError parseErr;
-    UnicodeSet *set = new UnicodeSet(goodPattern, status);
+    /*UnicodeSet *set = new UnicodeSet(goodPattern, status);
     if (U_FAILURE(status)) {
         errln("FAIL: Was not able to create a good UnicodeSet based on valid patterns.");
         return;
-    }
-    RuleBasedTransliterator *t = new RuleBasedTransliterator(id, rules, UTRANS_REVERSE, set, parseErr, status);
+    }*/
+    Transliterator *t = Transliterator::createFromRules(id, rules, UTRANS_REVERSE, parseErr, status);
     if (U_FAILURE(status)) {
         errln("FAIL: Was not able to create a good RBT to test registration.");
-        delete set;
+        //delete set;
         return;
     }
     Transliterator::registerInstance(t);
@@ -264,4 +259,25 @@ void TransliteratorErrorTest::TestRBTErrors() {
 //    delete t;
 //}
 
+class StubTransliterator: public Transliterator{
+public:
+    StubTransliterator(): Transliterator(UNICODE_STRING_SIMPLE("Any-Null"), 0) {}
+    virtual void handleTransliterate(Replaceable& ,UTransPosition& offsets,UBool) const {
+        offsets.start = offsets.limit;
+    }
+
+    virtual UClassID getDynamicClassID() const{
+        static char classID = 0;
+        return (UClassID)&classID; 
+    }
+};
+
+void TransliteratorErrorTest::TestCoverage() {
+    StubTransliterator stub;
+
+    if (stub.clone() != NULL){
+        errln("FAIL: default Transliterator::clone() should return NULL");
+    }
+}
+
 #endif /* #if !UCONFIG_NO_TRANSLITERATION */