]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/test/intltest/tsdcfmsy.cpp
ICU-511.32.tar.gz
[apple/icu.git] / icuSources / test / intltest / tsdcfmsy.cpp
index e243eec1a1f27cb8c9e5c21b7e2f704341c1ad3d..7ddaf3aaee617a77fce29bfa109733966c6900e7 100644 (file)
@@ -1,6 +1,6 @@
 /********************************************************************
- * COPYRIGHT: 
- * Copyright (c) 1997-2001, International Business Machines Corporation and
+ * COPYRIGHT:
+ * Copyright (c) 1997-2010, International Business Machines Corporation and
  * others. All Rights Reserved.
  ********************************************************************/
 
@@ -17,7 +17,7 @@ void IntlTestDecimalFormatSymbols::runIndexedTest( int32_t index, UBool exec, co
 {
     if (exec) logln("TestSuite DecimalFormatSymbols");
     switch (index) {
-        case 0: name = "DecimalFormatSymbols test"; 
+        case 0: name = "DecimalFormatSymbols test";
                 if (exec) {
                     logln("DecimalFormatSymbols test---"); logln("");
                     testSymbols(/*par*/);
@@ -37,13 +37,15 @@ void IntlTestDecimalFormatSymbols::testSymbols(/* char *par */)
 
     DecimalFormatSymbols fr(Locale::getFrench(), status);
     if(U_FAILURE(status)) {
-        errln("ERROR: Couldn't create French DecimalFormatSymbols");
+        errcheckln(status, "ERROR: Couldn't create French DecimalFormatSymbols - %s", u_errorName(status));
+        return;
     }
 
     status = U_ZERO_ERROR;
     DecimalFormatSymbols en(Locale::getEnglish(), status);
     if(U_FAILURE(status)) {
-        errln("ERROR: Couldn't create English DecimalFormatSymbols");
+        errcheckln(status, "ERROR: Couldn't create English DecimalFormatSymbols - %s", u_errorName(status));
+        return;
     }
 
     if(en == fr || ! (en != fr) ) {
@@ -113,16 +115,62 @@ void IntlTestDecimalFormatSymbols::testSymbols(/* char *par */)
     if(fr.getSymbol(DecimalFormatSymbols::kMinusSignSymbol) != en.getSymbol(DecimalFormatSymbols::kMinusSignSymbol)) {
         errln("ERROR: get/set MinusSign failed");
     }
+
     UnicodeString exponential(en.getSymbol(DecimalFormatSymbols::kExponentialSymbol));
     fr.setSymbol(DecimalFormatSymbols::kExponentialSymbol, exponential);
     if(fr.getSymbol(DecimalFormatSymbols::kExponentialSymbol) != en.getSymbol(DecimalFormatSymbols::kExponentialSymbol)) {
         errln("ERROR: get/set Exponential failed");
     }
 
+    // Test get currency spacing before the currency.
+    status = U_ZERO_ERROR;
+    for (int32_t i = 0; i < (int32_t)UNUM_CURRENCY_SPACING_COUNT; i++) {
+        UnicodeString enCurrencyPattern = en.getPatternForCurrencySpacing(
+             (UCurrencySpacing)i, TRUE, status);
+        if(U_FAILURE(status)) {
+            errln("Error: cannot get CurrencyMatch for locale:en");
+            status = U_ZERO_ERROR;
+        }
+        UnicodeString frCurrencyPattern = fr.getPatternForCurrencySpacing(
+             (UCurrencySpacing)i, TRUE, status);
+        if(U_FAILURE(status)) {
+            errln("Error: cannot get CurrencyMatch for locale:fr");
+        }
+        if (enCurrencyPattern != frCurrencyPattern) {
+           errln("ERROR: get CurrencySpacing failed");
+        }
+    }
+    // Test get currencySpacing after the currency.
+    status = U_ZERO_ERROR;
+    for (int32_t i = 0; i < UNUM_CURRENCY_SPACING_COUNT; i++) {
+        UnicodeString enCurrencyPattern = en.getPatternForCurrencySpacing(
+            (UCurrencySpacing)i, FALSE, status);
+        if(U_FAILURE(status)) {
+            errln("Error: cannot get CurrencyMatch for locale:en");
+            status = U_ZERO_ERROR;
+        }
+        UnicodeString frCurrencyPattern = fr.getPatternForCurrencySpacing(
+             (UCurrencySpacing)i, FALSE, status);
+        if(U_FAILURE(status)) {
+            errln("Error: cannot get CurrencyMatch for locale:fr");
+        }
+        if (enCurrencyPattern != frCurrencyPattern) {
+            errln("ERROR: get CurrencySpacing failed");
+        }
+    }
+    // Test set curerncySpacing APIs
+    status = U_ZERO_ERROR;
+    UnicodeString dash = UnicodeString("-");
+    en.setPatternForCurrencySpacing(UNUM_CURRENCY_INSERT, TRUE, dash);
+    UnicodeString enCurrencyInsert = en.getPatternForCurrencySpacing(
+        UNUM_CURRENCY_INSERT, TRUE, status);
+    if (dash != enCurrencyInsert) {
+        errln("Error: Failed to setCurrencyInsert for locale:en");
+    }
+
     status = U_ZERO_ERROR;
     DecimalFormatSymbols foo(status);
-    
+
     DecimalFormatSymbols bar(foo);
 
     en = fr;
@@ -149,21 +197,20 @@ void IntlTestDecimalFormatSymbols::testSymbols(/* char *par */)
                   UnicodeString((UChar32)(0x10330 + i)));
         }
     }
-   
-   
+
     DecimalFormatSymbols sym(Locale::getUS(), status);
 
     UnicodeString customDecSeperator("S");
     Verify(34.5, (UnicodeString)"00.00", sym, (UnicodeString)"34.50");
-    sym.setSymbol((DecimalFormatSymbols::ENumberFormatSymbol)0, customDecSeperator);
+    sym.setSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol, customDecSeperator);
     Verify(34.5, (UnicodeString)"00.00", sym, (UnicodeString)"34S50");
-    sym.setSymbol((DecimalFormatSymbols::ENumberFormatSymbol)3, (UnicodeString)"P");
+    sym.setSymbol(DecimalFormatSymbols::kPercentSymbol, (UnicodeString)"P");
     Verify(34.5, (UnicodeString)"00 %", sym, (UnicodeString)"3450 P");
-    sym.setSymbol((DecimalFormatSymbols::ENumberFormatSymbol)8, (UnicodeString)"D");
+    sym.setSymbol(DecimalFormatSymbols::kCurrencySymbol, (UnicodeString)"D");
     Verify(34.5, CharsToUnicodeString("\\u00a4##.##"), sym, (UnicodeString)"D34.5");
-    sym.setSymbol((DecimalFormatSymbols::ENumberFormatSymbol)1, (UnicodeString)"|");
+    sym.setSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol, (UnicodeString)"|");
     Verify(3456.5, (UnicodeString)"0,000.##", sym, (UnicodeString)"3|456S5");
-    
+
 }
 
 void IntlTestDecimalFormatSymbols::Verify(double value, const UnicodeString& pattern, DecimalFormatSymbols sym, const UnicodeString& expected){
@@ -176,7 +223,7 @@ void IntlTestDecimalFormatSymbols::Verify(double value, const UnicodeString& pat
     FieldPosition pos(FieldPosition::DONT_CARE);
     buffer = df->format(value, buffer, pos);
     if(buffer != expected){
-        errln((UnicodeString)"ERROR: format failed after setSymbols()\n Expected " + 
+        errln((UnicodeString)"ERROR: format failed after setSymbols()\n Expected " +
             expected + ", Got " + buffer);
     }
     delete df;