--- old/test/java/lang/String/ToLowerCase.java 2014-02-06 09:09:18.000000000 -0800 +++ new/test/java/lang/String/ToLowerCase.java 2014-02-06 09:09:18.000000000 -0800 @@ -23,7 +23,7 @@ /* @test - @bug 4217441 4533872 4900935 8020037 + @bug 4217441 4533872 4900935 8020037 8032012 @summary toLowerCase should lower-case Greek Sigma correctly depending on the context (final/non-final). Also it should handle Locale specific (lt, tr, and az) lowercasings and supplementary @@ -104,6 +104,22 @@ // invalid code point tests: test("\uD800\uD800\uD801A\uDC00\uDC00\uDC00B", Locale.US, "\uD800\uD800\uD801a\uDC00\uDC00\uDC00b"); + // test bmp + supp1 + StringBuilder src = new StringBuilder(0x20000); + StringBuilder exp = new StringBuilder(0x20000); + for (int cp = 0; cp < 0x20000; cp++) { + if (cp >= Character.MIN_HIGH_SURROGATE && cp <= Character.MAX_HIGH_SURROGATE) { + continue; + } + int lowerCase = Character.toLowerCase(cp); + if (lowerCase == -1) { //Character.ERROR + continue; + } + src.appendCodePoint(cp); + exp.appendCodePoint(lowerCase); + } + test(src.toString(), Locale.US, exp.toString()); + } static void test(String in, Locale locale, String expected) {