]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/test/intltest/compactdecimalformattest.cpp
ICU-64232.0.1.tar.gz
[apple/icu.git] / icuSources / test / intltest / compactdecimalformattest.cpp
index da0660eff82fa529586d28656dea5f6916fa3ff8..b88cf00e09edbeaadc40121ff17b49c0b7dbaa0b 100644 (file)
@@ -119,15 +119,15 @@ static ExpectedResult kSwahiliShort[] = {
   {1234.0, "elfu\\u00a01.2"},
   {12345.0, "elfu\\u00a012"},
   {123456.0, "elfu\\u00a0120"},
-  {1234567.0, "M1.2"},
-  {12345678.0, "M12"},
-  {123456789.0, "M120"},
-  {1.23456789E9, "B1.2"},
-  {1.23456789E10, "B12"},
-  {1.23456789E11, "B120"},
-  {1.23456789E12, "T1.2"},
-  {1.23456789E13, "T12"},
-  {1.23456789E15, "T1200"}};
+  {1234567.0, "1.2M"},
+  {12345678.0, "12M"},
+  {123456789.0, "120M"},
+  {1.23456789E9, "1.2B"},
+  {1.23456789E10, "12B"},
+  {1.23456789E11, "120B"},
+  {1.23456789E12, "1.2T"},
+  {1.23456789E13, "12T"},
+  {1.23456789E15, "1200T"}};
 
 static ExpectedResult kCsShort[] = {
   {1000.0, "1\\u00a0tis."},
@@ -154,35 +154,35 @@ static ExpectedResult kSwahiliShortNegative[] = {
   {-1234.0, "elfu\\u00a0-1.2"},
   {-12345.0, "elfu\\u00a0-12"},
   {-123456.0, "elfu\\u00a0-120"},
-  {-1234567.0, "M-1.2"},
-  {-12345678.0, "M-12"},
-  {-123456789.0, "M-120"},
-  {-1.23456789E9, "B-1.2"},
-  {-1.23456789E10, "B-12"},
-  {-1.23456789E11, "B-120"},
-  {-1.23456789E12, "T-1.2"},
-  {-1.23456789E13, "T-12"},
-  {-1.23456789E15, "T-1200"}};
+  {-1234567.0, "-1.2M"},
+  {-12345678.0, "-12M"},
+  {-123456789.0, "-120M"},
+  {-1.23456789E9, "-1.2B"},
+  {-1.23456789E10, "-12B"},
+  {-1.23456789E11, "-120B"},
+  {-1.23456789E12, "-1.2T"},
+  {-1.23456789E13, "-12T"},
+  {-1.23456789E15, "-1200T"}};
 
 static ExpectedResult kArabicLong[] = {
   {-5300.0, "\\u061C-\\u0665\\u066B\\u0663 \\u0623\\u0644\\u0641"}};
 
 static ExpectedResult kChineseCurrencyTestData[] = {
-        {1.0, "\\uFFE51"},
-        {12.0, "\\uFFE512"},
-        {123.0, "\\uFFE5120"},
-        {1234.0, "\\uFFE51200"},
-        {12345.0, "\\uFFE51.2\\u4E07"},
-        {123456.0, "\\uFFE512\\u4E07"},
-        {1234567.0, "\\uFFE5120\\u4E07"},
-        {12345678.0, "\\uFFE51200\\u4E07"},
-        {123456789.0, "\\uFFE51.2\\u4EBF"},
-        {1234567890.0, "\\uFFE512\\u4EBF"},
-        {12345678901.0, "\\uFFE5120\\u4EBF"},
-        {123456789012.0, "\\uFFE51200\\u4EBF"},
-        {1234567890123.0, "\\uFFE51.2\\u5146"},
-        {12345678901234.0, "\\uFFE512\\u5146"},
-        {123456789012345.0, "\\uFFE5120\\u5146"},
+        {1.0, "\\u00A51"},
+        {12.0, "\\u00A512"},
+        {123.0, "\\u00A5120"},
+        {1234.0, "\\u00A51200"},
+        {12345.0, "\\u00A51.2\\u4E07"},
+        {123456.0, "\\u00A512\\u4E07"},
+        {1234567.0, "\\u00A5120\\u4E07"},
+        {12345678.0, "\\u00A51200\\u4E07"},
+        {123456789.0, "\\u00A51.2\\u4EBF"},
+        {1234567890.0, "\\u00A512\\u4EBF"},
+        {12345678901.0, "\\u00A5120\\u4EBF"},
+        {123456789012.0, "\\u00A51200\\u4EBF"},
+        {1234567890123.0, "\\u00A51.2\\u5146"},
+        {12345678901234.0, "\\u00A512\\u5146"},
+        {123456789012345.0, "\\u00A5120\\u5146"},
 };
 static ExpectedResult kGermanCurrencyTestData[] = {
         {1.0, u8"1\\u00A0\\u20AC"},
@@ -269,9 +269,9 @@ void CompactDecimalFormatTest::runIndexedTest(
   TESTCASE_AUTO(TestSerbianLongNegative);
   TESTCASE_AUTO(TestJapaneseShort);
   TESTCASE_AUTO(TestSwahiliShort);
-  //TESTCASE_AUTO(TestEnglishCurrency);
-  //TESTCASE_AUTO(TestGermanCurrency);
-  //TESTCASE_AUTO(TestChineseCurrency);
+  TESTCASE_AUTO(TestEnglishCurrency);
+  TESTCASE_AUTO(TestGermanCurrency);
+  TESTCASE_AUTO(TestChineseCurrency);
   TESTCASE_AUTO(TestCsShort);
   TESTCASE_AUTO(TestSkLong);
   TESTCASE_AUTO(TestSwahiliShortNegative);
@@ -279,7 +279,7 @@ void CompactDecimalFormatTest::runIndexedTest(
   TESTCASE_AUTO(TestFieldPosition);
   TESTCASE_AUTO(TestDefaultSignificantDigits);
   TESTCASE_AUTO(TestAPIVariants);
-  //TESTCASE_AUTO(TestBug12975);
+  TESTCASE_AUTO(TestBug12975);
   TESTCASE_AUTO_END;
 }
 
@@ -367,11 +367,12 @@ void CompactDecimalFormatTest::TestDefaultSignificantDigits() {
     dataerrln("Unable to create format object - %s", u_errorName(status));
     return;
   }
-  // We expect 3 significant digits by default (ICU 61 behavior)
+  // We are expecting two significant digits for compact formats with one or two zeros,
+  // and rounded to the unit for compact formats with three or more zeros.
   UnicodeString actual;
   assertEquals("Default significant digits", u"123K", cdf->format(123456, actual.remove()));
-  assertEquals("Default significant digits", u"12.3K", cdf->format(12345, actual.remove()));
-  assertEquals("Default significant digits", u"1.23K", cdf->format(1234, actual.remove()));
+  assertEquals("Default significant digits", u"12K", cdf->format(12345, actual.remove()));
+  assertEquals("Default significant digits", u"1.2K", cdf->format(1234, actual.remove()));
   assertEquals("Default significant digits", u"123", cdf->format(123, actual.remove()));
 }
 
@@ -412,9 +413,10 @@ void CompactDecimalFormatTest::TestAPIVariants() {
   pos.setEndIndex(0);
   status = U_ZERO_ERROR;
   cdf->format((double)123456.0, actual, &posIter, status);
-  if (status != U_UNSUPPORTED_ERROR) {
-    errln(UnicodeString("Fail format(double,UnicodeString&,FieldPositionIterator*,UErrorCode&): Expected status U_UNSUPPORTED_ERROR;") +
-                                                              "Got status " + u_errorName(status));
+  posIter.next(pos);
+  if (actual != expected || pos.getEndIndex() != 3 || status != U_ZERO_ERROR) {
+    errln(UnicodeString("Fail format(int32_t,UnicodeString&,FieldPosition&,UErrorCode&): Expected: \"") + expected + "\", first pos 3, status U_ZERO_ERROR; " +
+          "Got: \"" + actual + "\", pos " + pos.getEndIndex() + ", status " + u_errorName(status));
   }
 
   actual.remove();
@@ -441,9 +443,10 @@ void CompactDecimalFormatTest::TestAPIVariants() {
   pos.setEndIndex(0);
   status = U_ZERO_ERROR;
   cdf->format((int32_t)123456, actual, &posIter, status);
-  if (status != U_UNSUPPORTED_ERROR) {
-    errln(UnicodeString("Fail format(int32_t,UnicodeString&,FieldPositionIterator*,UErrorCode&): Expected status U_UNSUPPORTED_ERROR;") +
-                                                              "Got status " + u_errorName(status));
+  posIter.next(pos);
+  if (actual != expected || pos.getEndIndex() != 3 || status != U_ZERO_ERROR) {
+    errln(UnicodeString("Fail format(int32_t,UnicodeString&,FieldPosition&,UErrorCode&): Expected: \"") + expected + "\", first pos 3, status U_ZERO_ERROR; " +
+          "Got: \"" + actual + "\", pos " + pos.getEndIndex() + ", status " + u_errorName(status));
   }
 
   actual.remove();
@@ -470,9 +473,10 @@ void CompactDecimalFormatTest::TestAPIVariants() {
   pos.setEndIndex(0);
   status = U_ZERO_ERROR;
   cdf->format((int64_t)123456, actual, &posIter, status);
-  if (status != U_UNSUPPORTED_ERROR) {
-    errln(UnicodeString("Fail format(int64_t,UnicodeString&,FieldPositionIterator*,UErrorCode&): Expected status U_UNSUPPORTED_ERROR;") +
-                                                              "Got status " + u_errorName(status));
+  posIter.next(pos);
+  if (actual != expected || pos.getEndIndex() != 3 || status != U_ZERO_ERROR) {
+    errln(UnicodeString("Fail format(int32_t,UnicodeString&,FieldPosition&,UErrorCode&): Expected: \"") + expected + "\", first pos 3, status U_ZERO_ERROR; " +
+          "Got: \"" + actual + "\", pos " + pos.getEndIndex() + ", status " + u_errorName(status));
   }
 
 }
@@ -483,10 +487,10 @@ void CompactDecimalFormatTest::TestBug12975() {
     LocalPointer<CompactDecimalFormat> cdf(CompactDecimalFormat::createInstance(locale, UNUM_SHORT, status));
     if (assertSuccess("", status, true, __FILE__, __LINE__)) {
         UnicodeString resultCdf;
-        cdf->format(120000, resultCdf);
+        cdf->format(12000, resultCdf);
         LocalPointer<DecimalFormat> df((DecimalFormat*) DecimalFormat::createInstance(locale, status));
         UnicodeString resultDefault;
-        df->format(120000, resultDefault);
+        df->format(12000, resultDefault);
         assertEquals("CompactDecimalFormat should use default pattern when compact pattern is unavailable",
                      resultDefault, resultCdf);
     }