Index: source/test/intltest/tufmtts.cpp |
diff --git a/source/test/intltest/tufmtts.cpp b/source/test/intltest/tufmtts.cpp |
index 8ed9b9f7956a9f16c677bc46fe6bf54ef5a5e4ac..6b1ed5a0080f2878a43725ae3a12f3d3992164cf 100644 |
--- a/source/test/intltest/tufmtts.cpp |
+++ b/source/test/intltest/tufmtts.cpp |
@@ -1,5 +1,5 @@ |
/******************************************************************** |
- * Copyright (c) 2008-2014, International Business Machines Corporation and |
+ * Copyright (c) 2008-2015, International Business Machines Corporation and |
* others. All Rights Reserved. |
********************************************************************/ |
@@ -11,9 +11,9 @@ |
#include "unicode/tmunit.h" |
#include "unicode/tmutamt.h" |
#include "unicode/tmutfmt.h" |
-#include "tufmtts.h" |
-#include "cmemory.h" |
#include "unicode/ustring.h" |
+#include "cmemory.h" |
+#include "intltest.h" |
//TODO: put as compilation flag |
//#define TUFMTTS_DEBUG 1 |
@@ -22,16 +22,60 @@ |
#include <iostream> |
#endif |
-void TimeUnitTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) { |
- if (exec) logln("TestSuite TimeUnitTest"); |
- switch (index) { |
- TESTCASE(0, testBasic); |
- TESTCASE(1, testAPI); |
- TESTCASE(2, testGreekWithFallback); |
- TESTCASE(3, testGreekWithSanitization); |
- TESTCASE(4, test10219Plurals); |
- default: name = ""; break; |
+class TimeUnitTest : public IntlTest { |
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/ ) { |
+ if (exec) logln("TestSuite TimeUnitTest"); |
+ TESTCASE_AUTO_BEGIN; |
+ TESTCASE_AUTO(testBasic); |
+ TESTCASE_AUTO(testAPI); |
+ TESTCASE_AUTO(testGreekWithFallback); |
+ TESTCASE_AUTO(testGreekWithSanitization); |
+ TESTCASE_AUTO(test10219Plurals); |
+ TESTCASE_AUTO(TestBritishShortHourFallback); |
+ TESTCASE_AUTO_END; |
} |
+ |
+public: |
+ /** |
+ * Performs basic tests |
+ **/ |
+ void testBasic(); |
+ |
+ /** |
+ * Performs API tests |
+ **/ |
+ void testAPI(); |
+ |
+ /** |
+ * Performs tests for Greek |
+ * This tests that requests for short unit names correctly fall back |
+ * to long unit names for a locale where the locale data does not |
+ * provide short unit names. As of CLDR 1.9, Greek is one such language. |
+ **/ |
+ void testGreekWithFallback(); |
+ |
+ /** |
+ * Performs tests for Greek |
+ * This tests that if the plural count listed in time unit format does not |
+ * match those in the plural rules for the locale, those plural count in |
+ * time unit format will be ingored and subsequently, fall back will kick in |
+ * which is tested above. |
+ * Without data sanitization, setNumberFormat() would crash. |
+ * As of CLDR shiped in ICU4.8, Greek is one such language. |
+ */ |
+ void testGreekWithSanitization(); |
+ |
+ /** |
+ * Performs unit test for ticket 10219 making sure that plurals work |
+ * correctly with rounding. |
+ */ |
+ void test10219Plurals(); |
+ |
+ void TestBritishShortHourFallback(); |
+}; |
+ |
+extern IntlTest *createTimeUnitTest() { |
+ return new TimeUnitTest(); |
} |
// This function is more lenient than equals operator as it considers integer 3 hours and |
@@ -469,4 +513,16 @@ void TimeUnitTest::test10219Plurals() { |
} |
} |
+void TimeUnitTest::TestBritishShortHourFallback() { |
+ // See ticket #11986 "incomplete fallback in MeasureFormat". |
+ UErrorCode status = U_ZERO_ERROR; |
+ Formattable oneHour(new TimeUnitAmount(1, TimeUnit::UTIMEUNIT_HOUR, status)); |
+ Locale en_GB("en_GB"); |
+ TimeUnitFormat formatter(en_GB, UTMUTFMT_ABBREVIATED_STYLE, status); |
+ UnicodeString result; |
+ formatter.format(oneHour, result, status); |
+ assertSuccess("TestBritishShortHourFallback()", status); |
+ assertEquals("TestBritishShortHourFallback()", UNICODE_STRING_SIMPLE("1 hr"), result); |
+} |
+ |
#endif |