]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/test/intltest/tsnmfmt.cpp
ICU-64243.0.1.tar.gz
[apple/icu.git] / icuSources / test / intltest / tsnmfmt.cpp
index 57d49ecce4cebaa13e33f2746084fe2b204d735f..845206f266e07fa0510f9ecdccdfa05deb51b1c0 100644 (file)
@@ -1,6 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /***********************************************************************
  * COPYRIGHT: 
 /***********************************************************************
  * COPYRIGHT: 
- * Copyright (c) 1997-2004, International Business Machines Corporation
+ * Copyright (c) 1997-2012, International Business Machines Corporation
  * and others. All Rights Reserved.
  ***********************************************************************/
 
  * and others. All Rights Reserved.
  ***********************************************************************/
 
@@ -11,6 +13,7 @@
 #include "unicode/decimfmt.h"
 #include "tsnmfmt.h"
 #include "putilimp.h"
 #include "unicode/decimfmt.h"
 #include "tsnmfmt.h"
 #include "putilimp.h"
+#include "cstring.h"
 #include <float.h>
 #include <stdlib.h>
 
 #include <float.h>
 #include <stdlib.h>
 
@@ -93,6 +96,14 @@ IntlTestNumberFormat::testLocale(/* char* par, */const Locale& locale, const Uni
     fStatus = U_ZERO_ERROR;
     fFormat = NumberFormat::createPercentInstance(locale, fStatus);
     testFormat(/* par */);
     fStatus = U_ZERO_ERROR;
     fFormat = NumberFormat::createPercentInstance(locale, fStatus);
     testFormat(/* par */);
+       
+    if (uprv_strcmp(locale.getName(), "en_US_POSIX") != 0) {
+        name = "Scientific test";
+        logln((UnicodeString)name + " (" + localeName + ")");
+        fStatus = U_ZERO_ERROR;
+        fFormat = NumberFormat::createScientificInstance(locale, fStatus);
+        testFormat(/* par */);
+    }
 }
 
 double IntlTestNumberFormat::randDouble()
 }
 
 double IntlTestNumberFormat::randDouble()
@@ -150,7 +161,7 @@ IntlTestNumberFormat::testFormat(/* char* par */)
 {
     if (U_FAILURE(fStatus))
     { 
 {
     if (U_FAILURE(fStatus))
     { 
-        errln((UnicodeString)"**** FAIL: createXxxInstance failed.");
+        dataerrln((UnicodeString)"**** FAIL: createXxxInstance failed. - " + u_errorName(fStatus));
         if (fFormat != 0)
             errln("**** FAIL: Non-null format returned by createXxxInstance upon failure.");
         delete fFormat;
         if (fFormat != 0)
             errln("**** FAIL: Non-null format returned by createXxxInstance upon failure.");
         delete fFormat;
@@ -170,7 +181,7 @@ IntlTestNumberFormat::testFormat(/* char* par */)
     DecimalFormat *s = (DecimalFormat*)fFormat;
     logln((UnicodeString)"  Pattern " + s->toPattern(str));
 
     DecimalFormat *s = (DecimalFormat*)fFormat;
     logln((UnicodeString)"  Pattern " + s->toPattern(str));
 
-#if defined(OS390) || defined(OS400)
+#if U_PF_OS390 <= U_PLATFORM && U_PLATFORM <= U_PF_OS400
     tryIt(-2.02147304840132e-68);
     tryIt(3.88057859588817e-68); // Test rounding when only some digits are shown because exponent is close to -maxfrac
     tryIt(-2.64651110485945e+65); // Overflows to +INF when shown as a percent
     tryIt(-2.02147304840132e-68);
     tryIt(3.88057859588817e-68); // Test rounding when only some digits are shown because exponent is close to -maxfrac
     tryIt(-2.64651110485945e+65); // Overflows to +INF when shown as a percent
@@ -187,7 +198,7 @@ IntlTestNumberFormat::testFormat(/* char* par */)
     // These fail due to round-off
     // The least significant digit drops by one during each format-parse cycle.
     // Both numbers DON'T have a round-off problem when multiplied by 100! (shown as %)
     // These fail due to round-off
     // The least significant digit drops by one during each format-parse cycle.
     // Both numbers DON'T have a round-off problem when multiplied by 100! (shown as %)
-#ifdef OS390
+#if U_PLATFORM == U_PF_OS390
     tryIt(-9.18228054496402e+64);
     tryIt(-9.69413034454191e+64);
 #else
     tryIt(-9.18228054496402e+64);
     tryIt(-9.69413034454191e+64);
 #else
@@ -195,7 +206,7 @@ IntlTestNumberFormat::testFormat(/* char* par */)
     tryIt(-9.69413034454191e+273);
 #endif
 
     tryIt(-9.69413034454191e+273);
 #endif
 
-#ifndef OS390
+#if U_PLATFORM != U_PF_OS390
     tryIt(1.234e-200);
     tryIt(-2.3e-168);
 
     tryIt(1.234e-200);
     tryIt(-2.3e-168);
 
@@ -210,6 +221,8 @@ IntlTestNumberFormat::testFormat(/* char* par */)
     tryIt(1.234e-50);
     tryIt(9.99999999999996);
     tryIt(9.999999999999996);
     tryIt(1.234e-50);
     tryIt(9.99999999999996);
     tryIt(9.999999999999996);
+       
+       tryIt(5.06e-27);
 
     tryIt((int32_t)INT32_MIN);
     tryIt((int32_t)INT32_MAX);
 
     tryIt((int32_t)INT32_MIN);
     tryIt((int32_t)INT32_MAX);
@@ -358,7 +371,7 @@ IntlTestNumberFormat::tryIt(int32_t aNumber)
     fFormat->format(number, stringNum, status);
     if (U_FAILURE(status))
     {
     fFormat->format(number, stringNum, status);
     if (U_FAILURE(status))
     {
-        errln("**** FAIL: Formatting " + aNumber);
+        errln(UnicodeString("**** FAIL: Formatting ") + aNumber);
         return;
     }
     fFormat->parse(stringNum, number, status);
         return;
     }
     fFormat->parse(stringNum, number, status);
@@ -401,7 +414,7 @@ void IntlTestNumberFormat::testAvailableLocales(/* char* par */)
         logln(all);
     }
     else
         logln(all);
     }
     else
-        errln((UnicodeString)"**** FAIL: Zero available locales or null array pointer");
+        dataerrln((UnicodeString)"**** FAIL: Zero available locales or null array pointer");
 }
 
 void IntlTestNumberFormat::monsterTest(/* char* par */)
 }
 
 void IntlTestNumberFormat::monsterTest(/* char* par */)