OSDN Git Service

Skip locale dependent libcore tests if required locales are not present.
authorBrett Chabot <brettchabot@android.com>
Fri, 18 Dec 2009 23:32:59 +0000 (15:32 -0800)
committerBrett Chabot <brettchabot@android.com>
Tue, 22 Dec 2009 20:45:36 +0000 (12:45 -0800)
Previously these tests were marked as KnownFailures - which is undesirable since
they can pass if the right Locale's are present on target.

Bug 2335906

Change-Id: I1d9b205f740b71880c57b48f069c302c5cec8792

14 files changed:
libcore/luni/src/test/java/tests/api/java/io/PrintStreamTest.java
libcore/luni/src/test/java/tests/api/java/io/PrintWriterTest.java
libcore/luni/src/test/java/tests/api/java/util/CalendarTest.java
libcore/luni/src/test/java/tests/api/java/util/CurrencyTest.java
libcore/luni/src/test/java/tests/api/java/util/FormatterTest.java
libcore/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java
libcore/luni/src/test/java/tests/api/java/util/LocaleTest.java
libcore/luni/src/test/java/tests/api/java/util/ScannerTest.java
libcore/luni/src/test/java/tests/api/java/util/TimeZoneTest.java
libcore/support/src/test/java/tests/support/Support_Locale.java [new file with mode: 0644]
libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DateFormatTest.java
libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatSymbolsTest.java
libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatTest.java
libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/NumberFormatTest.java

index 2ec5feb..fed1aed 100644 (file)
@@ -29,11 +29,12 @@ import java.io.UnsupportedEncodingException;
 import java.util.IllegalFormatException;
 import java.util.Locale;
 
-import dalvik.annotation.KnownFailure;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
 
+import tests.support.Support_Locale;
+
 @TestTargetClass(PrintStream.class) 
 public class PrintStreamTest extends junit.framework.TestCase {
 
@@ -987,8 +988,12 @@ public class PrintStreamTest extends junit.framework.TestCase {
         method = "format",
         args = {java.util.Locale.class, java.lang.String.class, java.lang.Object[].class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatLjava_util_Locale_Ljava_lang_String_$Ljava_lang_Object() {
+        Locale[] requiredLocales = {Locale.US, Locale.GERMANY};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         PrintStream tobj;
 
         tobj = new PrintStream(baos, false);
@@ -1100,8 +1105,12 @@ public class PrintStreamTest extends junit.framework.TestCase {
         method = "printf",
         args = {java.util.Locale.class, java.lang.String.class, java.lang.Object[].class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_printfLjava_util_Locale_Ljava_lang_String_$Ljava_lang_Object() {
+        Locale[] requiredLocales = {Locale.US, Locale.GERMANY};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         PrintStream tobj;
 
         tobj = new PrintStream(baos, false);
index c275525..59d83eb 100644 (file)
@@ -29,9 +29,9 @@ import java.io.UnsupportedEncodingException;
 import java.util.IllegalFormatException;
 import java.util.Locale;
 
+import tests.support.Support_Locale;
 import tests.support.Support_StringReader;
 import tests.support.Support_StringWriter;
-import dalvik.annotation.KnownFailure;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
@@ -1107,8 +1107,12 @@ public class PrintWriterTest extends junit.framework.TestCase {
         method = "format",
         args = {java.util.Locale.class, java.lang.String.class, java.lang.Object[].class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatLjava_util_Locale_Ljava_lang_String_$Ljava_lang_Object() {
+        Locale[] requiredLocales = {Locale.US, Locale.GERMANY};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         PrintWriter tobj;
 
         tobj = new PrintWriter(baos, false);
@@ -1219,8 +1223,12 @@ public class PrintWriterTest extends junit.framework.TestCase {
         method = "printf",
         args = {java.util.Locale.class, java.lang.String.class, java.lang.Object[].class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_printfLjava_util_Locale_Ljava_lang_String_$Ljava_lang_Object() {
+        Locale[] requiredLocales = {Locale.US, Locale.GERMANY};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         PrintWriter tobj;
 
         tobj = new PrintWriter(baos, false);
index af43096..cc0f91a 100644 (file)
 
 package tests.api.java.util;
 
-import dalvik.annotation.KnownFailure;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
 import dalvik.annotation.TestTargets;
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass; 
+import tests.support.Support_Locale;
 
 import java.util.Calendar;
 import java.util.Date;
@@ -900,8 +900,12 @@ public class CalendarTest extends junit.framework.TestCase {
             args = {}
         )
     })
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getFirstDayOfWeek() {
+        Locale[] requiredLocales = {Locale.US, Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         Calendar cal = Calendar.getInstance();
 
         assertEquals(Calendar.SUNDAY, cal.getFirstDayOfWeek());
@@ -917,8 +921,12 @@ public class CalendarTest extends junit.framework.TestCase {
         method = "getInstance",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getInstanceLjava_util_Locale() {
+        Locale[] requiredLocales = {Locale.US, Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         Calendar cal1 = Calendar.getInstance(Locale.FRANCE);
         Locale.setDefault(Locale.FRANCE);
         Calendar cal2 = Calendar.getInstance();
@@ -946,8 +954,12 @@ public class CalendarTest extends junit.framework.TestCase {
         method = "getInstance",
         args = {java.util.TimeZone.class, java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getInstanceLjava_util_TimeZoneLjava_util_Locale() {
+        Locale[] requiredLocales = {Locale.US, Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"), Locale.FRANCE);
         Locale.setDefault(Locale.FRANCE);
         Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT+1"));
@@ -965,8 +977,12 @@ public class CalendarTest extends junit.framework.TestCase {
         method = "getMinimalDaysInFirstWeek",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getMinimalDaysInFirstWeek() {
+        Locale[] requiredLocales = {Locale.US, Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         Calendar cal = Calendar.getInstance();
         assertTrue(cal.getMinimalDaysInFirstWeek()==1);
         Locale.setDefault(Locale.FRANCE);
@@ -1011,8 +1027,12 @@ public class CalendarTest extends junit.framework.TestCase {
         method = "hashCode",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hashCode() {
+        Locale[] requiredLocales = {Locale.US, Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         Calendar cal1 = Calendar.getInstance();
         Locale.setDefault(Locale.FRANCE);
         Calendar cal2 = Calendar.getInstance();
index d41f719..76321cf 100644 (file)
@@ -17,6 +17,7 @@
 
 package tests.api.java.util;
 
+import tests.support.Support_Locale;
 import dalvik.annotation.TestTargetNew;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass; 
@@ -216,6 +217,10 @@ public class CurrencyTest extends junit.framework.TestCase {
 
                 new Locale("da", ""), new Locale("ja", ""),
                 new Locale("en", "")};
+        if (!Support_Locale.areLocalesAvailable(loc1)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
                 
         String[] euro    = new String[] {"EUR", "\u20ac"};
         // \u00a5 and \uffe5 are actually the same symbol, just different code points.
index b2030c9..b241b7d 100644 (file)
@@ -15,6 +15,8 @@
  */
 package tests.api.java.util;
 
+import tests.support.Support_Locale;
+
 import java.io.BufferedOutputStream;
 import java.io.Closeable;
 import java.io.File;
@@ -1765,8 +1767,12 @@ public class FormatterTest extends TestCase {
         method = "format",
         args = {java.lang.String.class, java.lang.Object[].class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatLjava_lang_String$Ljava_lang_Object_ByteShortIntegerLongConversionD() {
+        Locale[] requiredLocales = {Locale.GERMAN};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         final Object[][] triple = { 
                 { 0,                "%d",                  "0" }, 
                 { 0,                "%10d",       "         0" }, 
@@ -2030,8 +2036,12 @@ public class FormatterTest extends TestCase {
         args = {java.lang.String.class, java.lang.Object[].class}
     )
     @AndroidOnly("ICU data is different from RI data")
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatLjava_lang_String$Ljava_lang_Object_DateTimeConversion() {
+        Locale[] requiredLocales = {Locale.FRANCE, Locale.CHINA, Locale.GERMAN, Locale.US};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         /*
          * Implementation note: For a millisecond date based on Long.MAX_VALUE,
          * the RI produces different formatted minutes and seconds than we do.
@@ -2808,8 +2818,12 @@ public class FormatterTest extends TestCase {
         method = "format",
         args = {java.lang.String.class, java.lang.Object[].class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatLjava_lang_String$LBigInteger() {
+        Locale[] requiredLocales = {Locale.ITALY, Locale.GERMAN, Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         final Object[][] tripleD = {
                 {new BigInteger("123456789012345678901234567890"),          "%d",       "123456789012345678901234567890"}, //$NON-NLS-2$
                 {new BigInteger("123456789012345678901234567890"),          "%10d",     "123456789012345678901234567890"}, //$NON-NLS-2$
@@ -2911,8 +2925,12 @@ public class FormatterTest extends TestCase {
         method = "format",
         args = {java.lang.String.class, java.lang.Object[].class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatLjava_lang_String$Ljava_lang_Object_BigIntegerPaddingConversion() {
+        Locale[] requiredLocales = {Locale.GERMAN};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         Formatter f = null;
 
         BigInteger bigInt = new BigInteger("123456789012345678901234567890");
@@ -4617,8 +4635,12 @@ public class FormatterTest extends TestCase {
         method = "format",
         args = {java.util.Locale.class, java.lang.String.class, java.lang.Object[].class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatLjava_util_LocaleLjava_lang_StringLjava_lang_Object() {
+        Locale[] requiredLocales = {Locale.GERMAN, Locale.FRANCE, Locale.US, Locale.CANADA};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         Double val = new Double(3.14);
         Calendar cal = Calendar.getInstance();
         Formatter fLoc = null;
index c5ccde1..aba02a5 100644 (file)
@@ -22,6 +22,7 @@ import dalvik.annotation.TestTargetNew;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass; 
 import dalvik.annotation.KnownFailure;
+import tests.support.Support_Locale;
 
 import java.util.BitSet;
 import java.util.Calendar;
@@ -148,8 +149,12 @@ public class GregorianCalendarTest extends junit.framework.TestCase {
         method = "GregorianCalendar",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_ConstructorLjava_util_Locale() {
+        Locale[] requiredLocales = {Locale.US, Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         // Test for method java.util.GregorianCalendar(java.util.Locale)
         Date date = new Date();
         GregorianCalendar gcUS = new GregorianCalendar(Locale.US);
index d45c5be..668d32d 100644 (file)
 
 package tests.api.java.util;
 
-import dalvik.annotation.KnownFailure;
 import dalvik.annotation.TestTargetNew;
 import dalvik.annotation.TestTargets;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass; 
 import dalvik.annotation.AndroidOnly;
+import tests.support.Support_Locale;
 
 import java.security.Permission;
 import java.util.Arrays;
@@ -258,8 +258,12 @@ public class LocaleTest extends junit.framework.TestCase {
         method = "getDisplayCountry",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getDisplayCountryLjava_util_Locale() {
+        Locale[] requiredLocales = {Locale.ITALY};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         // Test for method java.lang.String
         // java.util.Locale.getDisplayCountry(java.util.Locale)
         assertEquals("Returned incorrect country", "Italie", Locale.ITALY
@@ -296,8 +300,12 @@ public class LocaleTest extends junit.framework.TestCase {
         method = "getDisplayLanguage",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getDisplayLanguageLjava_util_Locale() {
+        Locale[] requiredLocales = {testLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         // Test for method java.lang.String
         // java.util.Locale.getDisplayLanguage(java.util.Locale)
         assertTrue("Returned incorrect language: "
@@ -329,8 +337,12 @@ public class LocaleTest extends junit.framework.TestCase {
         method = "getDisplayName",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getDisplayNameLjava_util_Locale() {
+        Locale[] requiredLocales = {testLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         // Test for method java.lang.String
         // java.util.Locale.getDisplayName(java.util.Locale)
         assertTrue("Returned incorrect name: " + testLocale.getDisplayName(l),
index 84f41d6..6e7f1d4 100644 (file)
@@ -51,6 +51,7 @@ import java.util.Scanner;
 import java.util.regex.MatchResult;
 import java.util.regex.Pattern;
 
+import tests.support.Support_Locale;
 import tests.support.Support_PortManager;
 
 import junit.framework.TestCase;
@@ -1120,8 +1121,12 @@ public class ScannerTest extends TestCase {
         method = "nextInt",
         args = {int.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_nextIntI() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertEquals(123, s.nextInt(10));
         assertEquals(456, s.nextInt(10));
@@ -1335,8 +1340,12 @@ public class ScannerTest extends TestCase {
         method = "nextInt",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_nextInt() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertEquals(123, s.nextInt());
         assertEquals(456, s.nextInt());
@@ -1730,8 +1739,12 @@ public class ScannerTest extends TestCase {
         method = "nextFloat",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_nextFloat() throws IOException {
+        Locale[] requiredLocales = {Locale.ENGLISH, Locale.GERMANY};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 45\u0666. 123.4 .123 ");
         s.useLocale(Locale.ENGLISH);
         assertEquals((float)123.0, s.nextFloat());
@@ -2146,8 +2159,12 @@ public class ScannerTest extends TestCase {
         method = "nextShort",
         args = {int.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_nextShortI() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertEquals(123, s.nextShort(10));
         assertEquals(456, s.nextShort(10));
@@ -2304,8 +2321,12 @@ public class ScannerTest extends TestCase {
         method = "nextShort",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_nextShort() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertEquals(123, s.nextShort());
         assertEquals(456, s.nextShort());
@@ -2465,8 +2486,12 @@ public class ScannerTest extends TestCase {
         method = "nextLong",
         args = {int.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_nextLongI() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertEquals(123, s.nextLong(10));
         assertEquals(456, s.nextLong(10));
@@ -2623,8 +2648,12 @@ public class ScannerTest extends TestCase {
         method = "nextLong",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_nextLong() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertEquals(123, s.nextLong());
         assertEquals(456, s.nextLong());
@@ -3720,8 +3749,16 @@ public class ScannerTest extends TestCase {
         method = "hasNextInt",
         args = {int.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hasNextIntI() throws IOException {
+        Locale mkLocale = new Locale("mk", "MK");
+        Locale arLocale = new Locale("ar", "AE");
+        Locale deLocale = new Locale("de", "CH");
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE,
+                mkLocale, arLocale, deLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertEquals(123, s.nextInt(10));
         assertTrue(s.hasNextInt(10));
@@ -3766,7 +3803,7 @@ public class ScannerTest extends TestCase {
         s = new Scanner("23'456");
         s.useLocale(Locale.GERMANY);
         assertFalse(s.hasNextInt(10));
-        s.useLocale(new Locale("de", "CH"));
+        s.useLocale(deLocale);
         // If exception is thrown out, input will not be advanced.
         assertTrue(s.hasNextInt(10));
 
@@ -3867,7 +3904,7 @@ public class ScannerTest extends TestCase {
          * by scanner with locale mk_MK. But this is not the case on RI.
          */
         s = new Scanner("-123 123- -123-");
-        s.useLocale(new Locale("ar", "AE"));
+        s.useLocale(arLocale);
         assertTrue(s.hasNextInt(10));
         assertEquals(-123, s.nextInt(10));
         // The following test case fails on RI
@@ -3884,7 +3921,7 @@ public class ScannerTest extends TestCase {
         }
 
         s = new Scanner("-123 123- (123)");
-        s.useLocale(new Locale("mk", "MK"));
+        s.useLocale(mkLocale);
         assertTrue(s.hasNextInt(10));
         assertEquals(-123, s.nextInt(10));
         assertFalse(s.hasNextInt(10));
@@ -3953,8 +3990,16 @@ public class ScannerTest extends TestCase {
         method = "hasNextInt",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hasNextInt() throws IOException {
+        Locale mkLocale = new Locale("mk", "MK");
+        Locale arLocale = new Locale("ar", "AE");
+        Locale deLocale = new Locale("de", "CH");
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE,
+                mkLocale, arLocale, deLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertTrue(s.hasNextInt());
         assertEquals(123, s.nextInt());
@@ -4000,7 +4045,7 @@ public class ScannerTest extends TestCase {
         s = new Scanner("23'456");
         s.useLocale(Locale.GERMANY);
         assertFalse(s.hasNextInt());
-        s.useLocale(new Locale("de", "CH"));
+        s.useLocale(deLocale);
         assertTrue(s.hasNextInt());
 
         /*
@@ -4088,7 +4133,7 @@ public class ScannerTest extends TestCase {
          * by scanner with locale mk_MK. But this is not the case on RI.
          */
         s = new Scanner("-123 123- -123-");
-        s.useLocale(new Locale("ar", "AE"));
+        s.useLocale(arLocale);
         assertTrue(s.hasNextInt());
         assertEquals(-123, s.nextInt());
         // The following test case fails on RI
@@ -4105,7 +4150,7 @@ public class ScannerTest extends TestCase {
         }
 
         s = new Scanner("-123 123- (123)");
-        s.useLocale(new Locale("mk", "MK"));
+        s.useLocale(mkLocale);
         assertTrue(s.hasNextInt());
         assertEquals(-123, s.nextInt());
         try {
@@ -4141,8 +4186,14 @@ public class ScannerTest extends TestCase {
         method = "hasNextFloat",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hasNextFloat() throws IOException {
+        Locale mkLocale = new Locale("mk", "MK");
+        Locale arLocale = new Locale("ar", "AE");
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, mkLocale, arLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 45\u0666. 123.4 .123 ");
         s.useLocale(Locale.ENGLISH);
         assertTrue(s.hasNextFloat());
@@ -4229,7 +4280,7 @@ public class ScannerTest extends TestCase {
         assertEquals((float)23456.7, s.nextFloat());
 
         s = new Scanner("-123.4 123.4- -123.4-");
-        s.useLocale(new Locale("ar", "AE"));
+        s.useLocale(arLocale);
         assertTrue(s.hasNextFloat());
         assertEquals((float)-123.4, s.nextFloat());
         //The following test case fails on RI
@@ -4245,7 +4296,7 @@ public class ScannerTest extends TestCase {
         }
 
         s = new Scanner("(123) 123- -123");
-        s.useLocale(new Locale("mk", "MK"));
+        s.useLocale(mkLocale);
         if (!disableRIBugs) {
             assertTrue(s.hasNextFloat());
             assertEquals((float)-123.0, s.nextFloat());
@@ -4287,8 +4338,12 @@ public class ScannerTest extends TestCase {
         method = "hasNextShort",
         args = {int.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hasNextShortI() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertTrue(s.hasNextShort(10));
         assertEquals(123, s.nextShort(10));
@@ -4464,8 +4519,16 @@ public class ScannerTest extends TestCase {
         method = "hasNextShort",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hasNextShort() throws IOException {
+        Locale deLocale = new Locale("de", "CH");
+        Locale arLocale = new Locale("ar", "AE");
+        Locale mkLocale = new Locale("mk", "MK");
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE, deLocale,
+                arLocale, mkLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertTrue(s.hasNextShort());
         assertEquals(123, s.nextShort());
@@ -4534,7 +4597,7 @@ public class ScannerTest extends TestCase {
         } catch (InputMismatchException e) {
             // Expected
         }
-        s.useLocale(new Locale("de", "CH"));
+        s.useLocale(deLocale);
         // If exception is thrown out, input will not be advanced.
         assertTrue(s.hasNextShort());
         assertEquals(23456, s.nextShort());
@@ -4623,12 +4686,12 @@ public class ScannerTest extends TestCase {
         assertEquals(12300, s.nextShort());
 
         s = new Scanner("-123");
-        s.useLocale(new Locale("ar", "AE"));
+        s.useLocale(arLocale);
         assertTrue(s.hasNextShort());
         assertEquals(-123, s.nextShort());
 
         s = new Scanner("-123");
-        s.useLocale(new Locale("mk", "MK"));
+        s.useLocale(mkLocale);
         assertTrue(s.hasNextShort());
         assertEquals(-123, s.nextShort());
         
@@ -4692,8 +4755,12 @@ public class ScannerTest extends TestCase {
         method = "hasNextLong",
         args = {int.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hasNextLongI() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertTrue(s.hasNextLong(10));
         assertEquals(123, s.nextLong(10));
@@ -4910,8 +4977,16 @@ public class ScannerTest extends TestCase {
         method = "hasNextLong",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hasNextLong() throws IOException {
+        Locale deLocale = new Locale("de", "CH");
+        Locale arLocale = new Locale("ar", "AE");
+        Locale mkLocale = new Locale("mk", "MK");
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE, deLocale,
+                arLocale, mkLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 456");
         assertTrue(s.hasNextLong());
         assertEquals(123, s.nextLong());
@@ -4980,7 +5055,7 @@ public class ScannerTest extends TestCase {
         } catch (InputMismatchException e) {
             // Expected
         }
-        s.useLocale(new Locale("de", "CH"));
+        s.useLocale(deLocale);
         // If exception is thrown out, input will not be advanced.
         assertTrue(s.hasNextLong());
         assertEquals(23456, s.nextLong());
@@ -5069,12 +5144,12 @@ public class ScannerTest extends TestCase {
         assertEquals(12300, s.nextLong());
 
         s = new Scanner("-123");
-        s.useLocale(new Locale("ar", "AE"));
+        s.useLocale(arLocale);
         assertTrue(s.hasNextLong());
         assertEquals(-123, s.nextLong());
 
         s = new Scanner("-123");
-        s.useLocale(new Locale("mk", "MK"));
+        s.useLocale(mkLocale);
         assertTrue(s.hasNextLong());
         assertEquals(-123, s.nextLong());
         
@@ -5097,8 +5172,12 @@ public class ScannerTest extends TestCase {
         method = "hasNextDouble",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hasNextDouble() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 45\u0666. 123.4 .123 ");
         s.useLocale(Locale.ENGLISH);
         assertTrue(s.hasNextDouble());
@@ -5211,8 +5290,12 @@ public class ScannerTest extends TestCase {
         method = "hasNextBigDecimal",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_hasNextBigDecimal() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 45\u0666. 123.4 .123 ");
         s.useLocale(Locale.ENGLISH);
         assertTrue(s.hasNextBigDecimal());
@@ -6344,8 +6427,12 @@ public class ScannerTest extends TestCase {
         method = "nextDouble",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_nextDouble() throws IOException {
+        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 45\u0666. 123.4 .123 ");
         s.useLocale(Locale.ENGLISH);
         assertEquals(123.0, s.nextDouble());
@@ -6437,8 +6524,12 @@ public class ScannerTest extends TestCase {
         method = "nextBigDecimal",
         args = {}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_nextBigDecimal() throws IOException {
+        Locale[] requiredLocales = {Locale.ENGLISH, Locale.GERMANY};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         s = new Scanner("123 45\u0666. 123.4 .123 ");
         s.useLocale(Locale.ENGLISH);
         assertEquals(new BigDecimal("123"), s.nextBigDecimal());
index efdb8a1..1630582 100644 (file)
@@ -32,6 +32,7 @@ import java.util.Locale;
 import java.util.SimpleTimeZone;
 import java.util.TimeZone;
 
+import tests.support.Support_Locale;
 import tests.support.Support_TimeZone;
 
 @TestTargetClass(TimeZone.class) 
@@ -306,8 +307,12 @@ public class TimeZoneTest extends junit.framework.TestCase {
         method = "getDisplayName",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getDisplayNameLjava_util_Locale() {
+        Locale[] requiredLocales = {Locale.US, Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
         assertEquals("Pacific Standard Time", tz.getDisplayName(new Locale("US")));
         assertEquals("Heure normale du Pacifique", tz.getDisplayName(Locale.FRANCE));
@@ -333,8 +338,12 @@ public class TimeZoneTest extends junit.framework.TestCase {
         args = {boolean.class, int.class, java.util.Locale.class}
     )
     @AndroidOnly("fail on RI. See comment below")
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getDisplayNameZILjava_util_Locale() {
+        Locale[] requiredLocales = {Locale.US, Locale.UK, Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
         assertEquals("PST",                   tz.getDisplayName(false, 0, Locale.US));
         assertEquals("Pacific Daylight Time", tz.getDisplayName(true,  1, Locale.US));
diff --git a/libcore/support/src/test/java/tests/support/Support_Locale.java b/libcore/support/src/test/java/tests/support/Support_Locale.java
new file mode 100644 (file)
index 0000000..c5776cc
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests.support;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+
+
+/**
+ * Helper class for {@link Locale} tests
+ */
+public class Support_Locale {
+
+    /**
+     * Helper method to determine if given locales are available.
+     *
+     * @param requiredLocales - the set of {@link Locale} to check
+     *
+     * @return true if all requiredLocales are available.
+     */
+    public static boolean areLocalesAvailable(Locale[] requiredLocales) {
+        Locale[] availableLocales = Locale.getAvailableLocales();
+        Set<Locale> localeSet = new HashSet<Locale>(Arrays.asList(availableLocales));
+        for (Locale requiredLocale : requiredLocales) {
+            if (!localeSet.contains(requiredLocale)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+}
\ No newline at end of file
index e7609a8..bf7376a 100644 (file)
@@ -16,7 +16,6 @@
  */
 package org.apache.harmony.text.tests.java.text;
 
-import dalvik.annotation.KnownFailure;
 import dalvik.annotation.TestTargets;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetNew;
@@ -182,7 +181,6 @@ public class DateFormatTest extends junit.framework.TestCase {
         method = "getAvailableLocales",
         args = {}
     )
-    @KnownFailure("German locales were removed last minute in cupcake")
     public void test_getAvailableLocales() {
         Locale[] locales = DateFormat.getAvailableLocales();
         assertTrue("No locales", locales.length > 0);
@@ -197,7 +195,8 @@ public class DateFormatTest extends junit.framework.TestCase {
             assertTrue("Doesn't work",
                     f1.format(new Date()).getClass() == String.class);
         }
-        assertTrue("Missing locales", english && german);
+        // TODO: currently, it is not mandatory to have both English and German locales bug 1943269
+        // assertTrue("Missing locales", english && german);
     }
 
     /**
index 47107cd..630ecbd 100644 (file)
@@ -17,6 +17,7 @@
 
 package org.apache.harmony.text.tests.java.text;
 
+import tests.support.Support_Locale;
 import dalvik.annotation.AndroidOnly;
 import dalvik.annotation.KnownFailure;
 import dalvik.annotation.TestLevel;
@@ -146,8 +147,16 @@ public class DecimalFormatSymbolsTest extends TestCase {
         method = "getCurrency",
         args = {}
     )
-    @KnownFailure("some locales were removed last minute in cupcake")
     public void test_getCurrency() {
+        Locale csCzLocale = new Locale("cs", "CZ");
+        Locale czLocale = new Locale("", "CZ");
+        Locale csLocale = new Locale("cs", "");
+        Locale deLocale = new Locale("de", "AT");
+        Locale[] requiredLocales = {Locale.US, csCzLocale, czLocale, csLocale, deLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         Currency currency = Currency.getInstance("USD");
         assertEquals("Returned incorrect currency",
                 dfsUS.getCurrency(), currency);
@@ -159,8 +168,8 @@ public class DecimalFormatSymbolsTest extends TestCase {
         Currency currE = Currency.getInstance("EUR");
         // Currency currF = Currency.getInstance("FRF");
 
-        DecimalFormatSymbols dfs1 = new DecimalFormatSymbols(new Locale("cs",
-                "CZ"));
+
+        DecimalFormatSymbols dfs1 = new DecimalFormatSymbols(csCzLocale);
         assertTrue("Test1: Returned incorrect currency",
                 dfs1.getCurrency() == currC);
         assertEquals("Test1: Returned incorrect currencySymbol", "K\u010d", dfs1
@@ -168,7 +177,8 @@ public class DecimalFormatSymbolsTest extends TestCase {
         assertEquals("Test1: Returned incorrect intlCurrencySymbol", "CZK",
                 dfs1.getInternationalCurrencySymbol());
 
-        dfs1 = new DecimalFormatSymbols(new Locale("", "CZ"));
+
+        dfs1 = new DecimalFormatSymbols(czLocale);
         assertTrue("Test2: Returned incorrect currency",
                 dfs1.getCurrency() == currC);
         assertEquals("Test2: Returned incorrect currencySymbol", "CZK", dfs1
@@ -176,7 +186,7 @@ public class DecimalFormatSymbolsTest extends TestCase {
         assertEquals("Test2: Returned incorrect intlCurrencySymbol", "CZK",
                 dfs1.getInternationalCurrencySymbol());
 
-        dfs1 = new DecimalFormatSymbols(new Locale("cs", ""));
+        dfs1 = new DecimalFormatSymbols(csLocale);
         assertEquals("Test3: Returned incorrect currency",
                 currX, dfs1.getCurrency());
         assertEquals("Test3: Returned incorrect currencySymbol", "\u00a4", dfs1
@@ -184,7 +194,7 @@ public class DecimalFormatSymbolsTest extends TestCase {
         assertEquals("Test3: Returned incorrect intlCurrencySymbol", "XXX",
                 dfs1.getInternationalCurrencySymbol());
 
-        dfs1 = new DecimalFormatSymbols(new Locale("de", "AT"));
+        dfs1 = new DecimalFormatSymbols(deLocale);
         assertTrue("Test4: Returned incorrect currency",
                 dfs1.getCurrency() == currE);
         assertEquals("Test4: Returned incorrect currencySymbol", "\u20ac", dfs1
index aa36abc..144de72 100644 (file)
@@ -29,6 +29,7 @@ import junit.framework.TestCase;
 
 import tests.support.Support_BitSet;
 import tests.support.Support_DecimalFormat;
+import tests.support.Support_Locale;
 
 import java.io.ObjectInputStream;
 import java.io.IOException;
@@ -1807,8 +1808,12 @@ public class DecimalFormatTest extends TestCase {
         method = "formatToCharacterIterator",
         args = {java.lang.Object.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatToCharacterIteratorLjava_lang_Object() {
+        Locale[] requiredLocales = {Locale.US};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
 
         try {
             // Regression for HARMONY-466
index 0480704..7c4a319 100644 (file)
@@ -1,13 +1,13 @@
-/* 
+/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *     http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  */
 package org.apache.harmony.text.tests.java.text;
 
-import dalvik.annotation.KnownFailure;
 import dalvik.annotation.TestTargets;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetNew;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.BrokenTest;
+import tests.support.Support_Locale;
 
 import junit.framework.TestCase;
 
@@ -34,7 +34,7 @@ import java.text.ParsePosition;
 import java.util.Currency;
 import java.util.Locale;
 
-@TestTargetClass(NumberFormat.class) 
+@TestTargetClass(NumberFormat.class)
 public class NumberFormatTest extends TestCase {
 
     /**
@@ -143,7 +143,6 @@ public class NumberFormatTest extends TestCase {
         method = "getIntegerInstance",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getIntegerInstanceLjava_util_Locale()
             throws ParseException {
         // Test for method java.text.NumberFormat
@@ -155,6 +154,12 @@ public class NumberFormatTest extends TestCase {
         Locale chLocale = new Locale("de", "CH");
         // END android-changed
 
+        Locale[] requiredLocales = {usLocale, chLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
+
         DecimalFormat format = (DecimalFormat) NumberFormat
                 .getIntegerInstance(usLocale);
         assertEquals(
@@ -293,20 +298,20 @@ public class NumberFormatTest extends TestCase {
             fail("Expected UnsupportedOperationException");
         } catch (UnsupportedOperationException e) {
         }
-        
+
         try {
             NumberFormat.getInstance().setCurrency(null);
             fail("NullPointerException was thrown.");
         } catch(NullPointerException npe) {
-            //expected   
+            //expected
         }
-        
+
         try {
             NumberFormat.getIntegerInstance().setCurrency(null);
             fail("NullPointerException was thrown.");
         } catch(NullPointerException npe) {
-            //expected   
-        }        
+            //expected
+        }
     }
 
     /**
@@ -319,47 +324,51 @@ public class NumberFormatTest extends TestCase {
         method = "parseObject",
         args = {java.lang.String.class, java.text.ParsePosition.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_parseObjectLjava_lang_StringLjava_text_ParsePosition() {
+        Locale[] requiredLocales = {Locale.FRANCE};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         // regression test for HARMONY-1003
         assertNull(NumberFormat.getInstance().parseObject("0",
                 new ParsePosition(-1)));
 
-        parseObjectTest(NumberFormat.getInstance(), "123.123", 
+        parseObjectTest(NumberFormat.getInstance(), "123.123",
                 new ParsePosition(1), new Double(23.123), 7, true);
-        
-        parseObjectTest(NumberFormat.getInstance(), "123.123abc123", 
-                new ParsePosition(3), new Double(0.123), 7, true);        
-        
-        parseObjectTest(NumberFormat.getInstance(Locale.FRANCE), 
-                "asd123,123abc123", 
-                new ParsePosition(3), new Double(123.123), 10, true); 
-        
-        parseObjectTest(NumberFormat.getInstance(Locale.FRANCE), 
-                "test test", 
-                new ParsePosition(0), null, 0, false); 
-        
-        parseObjectTest(NumberFormat.getIntegerInstance(), 
-                "asd123.123abc123", 
+
+        parseObjectTest(NumberFormat.getInstance(), "123.123abc123",
+                new ParsePosition(3), new Double(0.123), 7, true);
+
+        parseObjectTest(NumberFormat.getInstance(Locale.FRANCE),
+                "asd123,123abc123",
+                new ParsePosition(3), new Double(123.123), 10, true);
+
+        parseObjectTest(NumberFormat.getInstance(Locale.FRANCE),
+                "test test",
+                new ParsePosition(0), null, 0, false);
+
+        parseObjectTest(NumberFormat.getIntegerInstance(),
+                "asd123.123abc123",
                 new ParsePosition(3), new Long(123), 6, true);
-        
-        parseObjectTest(NumberFormat.getNumberInstance(), 
-                "$-123,123.123#", 
+
+        parseObjectTest(NumberFormat.getNumberInstance(),
+                "$-123,123.123#",
                 new ParsePosition(1), new Double(-123123.123), 13, true);
-        parseObjectTest(NumberFormat.getNumberInstance(), 
-                "$-123,123.123#", 
-                new ParsePosition(0), null, 0, false);      
-        parseObjectTest(NumberFormat.getNumberInstance(), 
-                "$-123,123.123#", 
-                new ParsePosition(13), null, 13, false); 
-        parseObjectTest(NumberFormat.getPercentInstance(), 
-                "%20.123#", 
-                new ParsePosition(0), new Double(20.123), 0, false);        
-        parseObjectTest(NumberFormat.getPercentInstance(), 
-                "%-200,123.123#", 
-                new ParsePosition(0), null, 0, false);        
-        
-        
+        parseObjectTest(NumberFormat.getNumberInstance(),
+                "$-123,123.123#",
+                new ParsePosition(0), null, 0, false);
+        parseObjectTest(NumberFormat.getNumberInstance(),
+                "$-123,123.123#",
+                new ParsePosition(13), null, 13, false);
+        parseObjectTest(NumberFormat.getPercentInstance(),
+                "%20.123#",
+                new ParsePosition(0), new Double(20.123), 0, false);
+        parseObjectTest(NumberFormat.getPercentInstance(),
+                "%-200,123.123#",
+                new ParsePosition(0), null, 0, false);
+
+
         // Regression for HARMONY-1685
         try {
             NumberFormat.getInstance().parseObject("test", null);
@@ -368,8 +377,8 @@ public class NumberFormatTest extends TestCase {
             // expected
         }
     }
-    
-    void parseObjectTest(NumberFormat nf, String sourseStr, ParsePosition position, 
+
+    void parseObjectTest(NumberFormat nf, String sourseStr, ParsePosition position,
             Object resultObj, int outIndex, boolean isSuccess) {
         int indexBefore = position.getIndex();
         Object result = nf.parseObject(sourseStr, position);
@@ -452,13 +461,18 @@ public class NumberFormatTest extends TestCase {
         method = "format",
         args = {double.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatLdouble() {
+        Locale deLocale = new Locale("de", "CH");
+        Locale[] requiredLocales = {Locale.US, deLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         // BEGIN android-changed
         NumberFormat nf1 = NumberFormat.getInstance(Locale.US);
         // use de_CH instead
         // NumberFormat nf2 = NumberFormat.getInstance(new Locale("ar", "AR"));
-        NumberFormat nf2 = NumberFormat.getInstance(new Locale("de", "CH"));
+        NumberFormat nf2 = NumberFormat.getInstance(deLocale);
 
         String out = nf1.format(1234567890.0123456789);
         assertEquals("Wrong result for double : " + out, "1,234,567,890.012",
@@ -492,13 +506,18 @@ public class NumberFormatTest extends TestCase {
         method = "format",
         args = {long.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_formatLlong() {
+        Locale deLocale = new Locale("de", "CH");
+        Locale[] requiredLocales = {Locale.US, deLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         // BEGIN android-changed
         NumberFormat nf1 = NumberFormat.getInstance(Locale.US);
         // use de_CH instead
         // NumberFormat nf2 = NumberFormat.getInstance(Locale.CANADA_FRENCH);
-        NumberFormat nf2 = NumberFormat.getInstance(new Locale("de", "CH"));
+        NumberFormat nf2 = NumberFormat.getInstance(deLocale);
 
         String out = nf1.format(Long.MAX_VALUE);
         assertEquals("Wrong result for double : " + out,
@@ -591,7 +610,6 @@ public class NumberFormatTest extends TestCase {
         method = "getCurrencyInstance",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getCurrencyInstanceLjava_util_Locale() {
         // BEGIN android-changed
         Locale usLocale = Locale.US;
@@ -599,6 +617,12 @@ public class NumberFormatTest extends TestCase {
         // Locale mkLocale = new Locale("mk", "MK");
         Locale atLocale = new Locale("de", "AT");
 
+        Locale[] requiredLocales = {usLocale, atLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
+
         NumberFormat format = NumberFormat.getCurrencyInstance(usLocale);
 
         assertNotSame("Instance is null", null, format);
@@ -621,7 +645,7 @@ public class NumberFormatTest extends TestCase {
         // use de_AT instead
         // format = NumberFormat.getCurrencyInstance(mkLocale);
         format = NumberFormat.getCurrencyInstance(atLocale);
-        
+
         assertEquals(
                 "Test5: NumberFormat.getCurrencyInstance(new Locale(\"de\", \"AT\")).format(35.76) returned wrong value",
                 "\u20ac 35,76", format.format(35.76));
@@ -693,13 +717,18 @@ public class NumberFormatTest extends TestCase {
         method = "getInstance",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getInstanceLjava_util_Locale() {
+        Locale testLocale = new Locale("de", "CH");
+        Locale[] requiredLocales = {Locale.US, testLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         // BEGIN android-changed
         Locale.setDefault(Locale.US);
         // use de_CH instead
         // NumberFormat format = NumberFormat.getInstance(new Locale("ar", "AR"));
-        NumberFormat format = NumberFormat.getInstance(new Locale("de", "CH"));
+        NumberFormat format = NumberFormat.getInstance(testLocale);
 
         assertNotSame("Instance is null", null, format);
         assertTrue("Object is not instance of NumberFormat",
@@ -770,13 +799,17 @@ public class NumberFormatTest extends TestCase {
         method = "getNumberInstance",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getNumberInstanceLjava_util_Locale() {
+        Locale deLocale = new Locale("de", "CH");
+        Locale[] requiredLocales = {Locale.US, deLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         // BEGIN android-changed
         Locale.setDefault(Locale.US);
         // use de_CH instead
-        NumberFormat format = NumberFormat.getNumberInstance(new Locale("de",
-                "CH"));
+        NumberFormat format = NumberFormat.getNumberInstance(deLocale);
         // NumberFormat format = NumberFormat.getNumberInstance(new Locale("ar",
         //         "AR"));
 
@@ -849,11 +882,15 @@ public class NumberFormatTest extends TestCase {
         method = "getPercentInstance",
         args = {java.util.Locale.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_getPercentInstanceLjava_util_Locale() {
+        Locale csLocale = new Locale("cs", "CZ");
+        Locale[] requiredLocales = {Locale.US, csLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         Locale.setDefault(Locale.US);
-        NumberFormat format = NumberFormat.getPercentInstance(new Locale("cs",
-                "CZ"));
+        NumberFormat format = NumberFormat.getPercentInstance(csLocale);
 
         assertNotSame("Instance is null", null, format);
         assertTrue("Object is not instance of NumberFormat",
@@ -1061,8 +1098,13 @@ public class NumberFormatTest extends TestCase {
         method = "setGroupingUsed",
         args = {boolean.class}
     )
-    @KnownFailure("Some locales were removed last minute in cupcake")
     public void test_setGroupingUsed() {
+        Locale csLocale = new Locale("cs", "CZ");
+        Locale[] requiredLocales = {Locale.US, csLocale};
+        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
+            // locale dependent test, bug 1943269
+            return;
+        }
         NumberFormat nf1 = NumberFormat.getInstance(Locale.US);
         nf1.setGroupingUsed(false);
 
@@ -1088,8 +1130,7 @@ public class NumberFormatTest extends TestCase {
         assertEquals("grouping is not used for -1234567890.1",
                 "-1,234,567,890.1", nf1.format(-1234567890.1));
 
-        NumberFormat nf2 = NumberFormat.getPercentInstance(new Locale("cs",
-                "CZ"));
+        NumberFormat nf2 = NumberFormat.getPercentInstance(csLocale);
         nf2.setGroupingUsed(false);
         assertEquals(
                 "Locale(\"cs\", \"CZ\"): grouping is used for 1234567890.1",