From: Brett Chabot Date: Fri, 18 Dec 2009 23:32:59 +0000 (-0800) Subject: Skip locale dependent libcore tests if required locales are not present. X-Git-Tag: android-x86-2.2~120^2^2~6^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=8ba0b9bad4ee13bb30fa75c531921802c05611ac;p=android-x86%2Fdalvik.git Skip locale dependent libcore tests if required locales are not present. 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 --- diff --git a/libcore/luni/src/test/java/tests/api/java/io/PrintStreamTest.java b/libcore/luni/src/test/java/tests/api/java/io/PrintStreamTest.java index 2ec5feb53..fed1aed73 100644 --- a/libcore/luni/src/test/java/tests/api/java/io/PrintStreamTest.java +++ b/libcore/luni/src/test/java/tests/api/java/io/PrintStreamTest.java @@ -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); diff --git a/libcore/luni/src/test/java/tests/api/java/io/PrintWriterTest.java b/libcore/luni/src/test/java/tests/api/java/io/PrintWriterTest.java index c2755256a..59d83eb12 100644 --- a/libcore/luni/src/test/java/tests/api/java/io/PrintWriterTest.java +++ b/libcore/luni/src/test/java/tests/api/java/io/PrintWriterTest.java @@ -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); diff --git a/libcore/luni/src/test/java/tests/api/java/util/CalendarTest.java b/libcore/luni/src/test/java/tests/api/java/util/CalendarTest.java index af4309692..cc0f91a8b 100644 --- a/libcore/luni/src/test/java/tests/api/java/util/CalendarTest.java +++ b/libcore/luni/src/test/java/tests/api/java/util/CalendarTest.java @@ -17,11 +17,11 @@ 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(); diff --git a/libcore/luni/src/test/java/tests/api/java/util/CurrencyTest.java b/libcore/luni/src/test/java/tests/api/java/util/CurrencyTest.java index d41f719aa..76321cf67 100644 --- a/libcore/luni/src/test/java/tests/api/java/util/CurrencyTest.java +++ b/libcore/luni/src/test/java/tests/api/java/util/CurrencyTest.java @@ -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. diff --git a/libcore/luni/src/test/java/tests/api/java/util/FormatterTest.java b/libcore/luni/src/test/java/tests/api/java/util/FormatterTest.java index b2030c96f..b241b7dfe 100644 --- a/libcore/luni/src/test/java/tests/api/java/util/FormatterTest.java +++ b/libcore/luni/src/test/java/tests/api/java/util/FormatterTest.java @@ -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; diff --git a/libcore/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java b/libcore/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java index c5ccde181..aba02a5f8 100644 --- a/libcore/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java +++ b/libcore/luni/src/test/java/tests/api/java/util/GregorianCalendarTest.java @@ -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); diff --git a/libcore/luni/src/test/java/tests/api/java/util/LocaleTest.java b/libcore/luni/src/test/java/tests/api/java/util/LocaleTest.java index d45c5be47..668d32d41 100644 --- a/libcore/luni/src/test/java/tests/api/java/util/LocaleTest.java +++ b/libcore/luni/src/test/java/tests/api/java/util/LocaleTest.java @@ -17,12 +17,12 @@ 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), diff --git a/libcore/luni/src/test/java/tests/api/java/util/ScannerTest.java b/libcore/luni/src/test/java/tests/api/java/util/ScannerTest.java index 84f41d6c3..6e7f1d432 100644 --- a/libcore/luni/src/test/java/tests/api/java/util/ScannerTest.java +++ b/libcore/luni/src/test/java/tests/api/java/util/ScannerTest.java @@ -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()); diff --git a/libcore/luni/src/test/java/tests/api/java/util/TimeZoneTest.java b/libcore/luni/src/test/java/tests/api/java/util/TimeZoneTest.java index efdb8a150..163058245 100644 --- a/libcore/luni/src/test/java/tests/api/java/util/TimeZoneTest.java +++ b/libcore/luni/src/test/java/tests/api/java/util/TimeZoneTest.java @@ -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 index 000000000..c5776cc55 --- /dev/null +++ b/libcore/support/src/test/java/tests/support/Support_Locale.java @@ -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 localeSet = new HashSet(Arrays.asList(availableLocales)); + for (Locale requiredLocale : requiredLocales) { + if (!localeSet.contains(requiredLocale)) { + return false; + } + } + return true; + } + +} \ No newline at end of file diff --git a/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DateFormatTest.java b/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DateFormatTest.java index e7609a83c..bf7376a0a 100644 --- a/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DateFormatTest.java +++ b/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DateFormatTest.java @@ -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); } /** diff --git a/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatSymbolsTest.java b/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatSymbolsTest.java index 47107cd62..630ecbd8d 100644 --- a/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatSymbolsTest.java +++ b/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatSymbolsTest.java @@ -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 diff --git a/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatTest.java b/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatTest.java index aa36abce6..144de72c0 100644 --- a/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatTest.java +++ b/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/DecimalFormatTest.java @@ -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 diff --git a/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/NumberFormatTest.java b/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/NumberFormatTest.java index 0480704d9..7c4a319ea 100644 --- a/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/NumberFormatTest.java +++ b/libcore/text/src/test/java/org/apache/harmony/text/tests/java/text/NumberFormatTest.java @@ -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. @@ -16,12 +16,12 @@ */ 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",