Author: hboutemy Date: Sat May 24 19:55:11 2014 New Revision: 1597341 URL: http://svn.apache.org/r1597341 Log: tweaked some weird result on some jdks
Modified: maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/CaseTest.java Modified: maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/CaseTest.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/CaseTest.java?rev=1597341&r1=1597340&r2=1597341&view=diff ============================================================================== --- maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/CaseTest.java (original) +++ maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/CaseTest.java Sat May 24 19:55:11 2014 @@ -21,8 +21,10 @@ package org.apache.maven.shared.utils; import java.util.Locale; +import org.apache.commons.lang3.StringEscapeUtils; import org.junit.AfterClass; import org.junit.Assert; +import org.junit.ComparisonFailure; import org.junit.Test; /** @@ -51,6 +53,9 @@ public class CaseTest /** turkish dotted I = İ */ private final static char DOTTED_I = '\u0130'; + /** http://en.wikipedia.org/wiki/Dot_(diacritic) */ + private final static char COMBINING_DOT_ABOVE = '\u0307'; + private final static Locale SAVED_DEFAULT_LOCALE = Locale.getDefault(); @AfterClass @@ -73,17 +78,19 @@ public class CaseTest final String iIıİ = "iIıİ"; // check source encoding doesn't wreck havoc */ - assertEquals( "misc i directly in (UTF-8) source", iIıİ, "" + DOTTED_i + DOTLESS_I + DOTLESS_i + DOTTED_I ); + assertUnicodeEquals( "misc i directly in (UTF-8) source", iIıİ, "" + DOTTED_i + DOTLESS_I + DOTLESS_i + + DOTTED_I ); // check toUpperCase and toLowerCase difference with turkish and english locales - assertEquals( "'iIıİ'.toUpperCase('tr')=='İIIİ'", "" + DOTTED_I + DOTLESS_I + DOTLESS_I + DOTTED_I, - iIıİ.toUpperCase( LOCALE_TURKISH ) ); - assertEquals( "'iIıİ'.toLowerCase('tr')=='iııi'", "" + DOTTED_i + DOTLESS_i + DOTLESS_i + DOTTED_i, - iIıİ.toLowerCase( LOCALE_TURKISH ) ); - assertEquals( "'iIıİ'.toUpperCase('en')=='IIIİ'", "" + DOTLESS_I + DOTLESS_I + DOTLESS_I + DOTTED_I, - iIıİ.toUpperCase( Locale.ENGLISH ) ); - assertEquals( "'iIıİ'.toLowerCase('en')=='iiıi'", "" + DOTTED_i + DOTTED_i + DOTLESS_i + DOTTED_i, - iIıİ.toLowerCase( Locale.ENGLISH ) ); + assertUnicodeEquals( "'iIıİ'.toUpperCase('tr')=='İIIİ'", "" + DOTTED_I + DOTLESS_I + DOTLESS_I + DOTTED_I, + iIıİ.toUpperCase( LOCALE_TURKISH ) ); + assertUnicodeEquals( "'iIıİ'.toLowerCase('tr')=='iııi'", "" + DOTTED_i + DOTLESS_i + DOTLESS_i + DOTTED_i, + iIıİ.toLowerCase( LOCALE_TURKISH ) ); + assertUnicodeEquals( "'iIıİ'.toUpperCase('en')=='IIIİ'", "" + DOTLESS_I + DOTLESS_I + DOTLESS_I + DOTTED_I, + iIıİ.toUpperCase( Locale.ENGLISH ) ); + String lower = iIıİ.toLowerCase( Locale.ENGLISH ); // on some platforms, ends with extra COMBINED DOT ABOVE + assertUnicodeEquals( "'iIıİ'.toLowerCase('en')=='iiıi'", "" + DOTTED_i + DOTTED_i + DOTLESS_i + DOTTED_i + + ( lower.length() > 4 ? COMBINING_DOT_ABOVE : "" ), lower ); // check equalsIgnoreCase() , which has no locale for ( int i = 0; i < iIıİ.length(); i++ ) @@ -102,6 +109,23 @@ public class CaseTest } /** + * Assert equals, and in case the result isn't as expected, display content unicode-escaped. + * @param message + * @param expected + * @param actual + */ + private void assertUnicodeEquals( String message, String expected, String actual ) + { + if ( expected.equals( actual ) ) + { + return; + } + + throw new ComparisonFailure( message, StringEscapeUtils.escapeJava( expected ), + StringEscapeUtils.escapeJava( actual ) ); + } + + /** * Test case change on all ascii characters with every available locale, to check that turkish i is the only * exception on these characters. */