You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2014/04/21 17:26:50 UTC
svn commit: r1588902 -
/maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/CaseTest.java
Author: hboutemy
Date: Mon Apr 21 15:26:49 2014
New Revision: 1588902
URL: http://svn.apache.org/r1588902
Log:
test every ascii characters with every locale to prove that only turkish i has a dfference on these characters
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=1588902&r1=1588901&r2=1588902&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 Mon Apr 21 15:26:49 2014
@@ -51,7 +51,7 @@ public class CaseTest
private final static char DOTTED_I = '\u0130';
/**
- * test the known case of upper I which doesn't give commonly expected i in Turkish locale, but i (dotless i).
+ * test the known case of upper I which doesn't give commonly expected i in Turkish locale, but ı (dotless i).
* @see <a href="http://mattryall.net/blog/2009/02/the-infamous-turkish-locale-bug">The infamous Turkish locale bug</a>
*/
@Test
@@ -92,4 +92,51 @@ public class CaseTest
}
}
+ /**
+ * Test case change on all ascii characters with every available locale, to check that turkish i is the only
+ * exception on these characters.
+ */
+ @Test
+ public void testAsciiAvailableLocales()
+ {
+ final String lower = "abcdefghijklmnopqrstuvwxyz";
+ final String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ Locale savedDefaultLocale = Locale.getDefault();
+
+ for ( Locale locale : Locale.getAvailableLocales() )
+ {
+ // check that toUpper() == toUpper(default locale) and toLower() = toLower(default locale)
+ Locale.setDefault( locale );
+ assertEquals( lower.toUpperCase(), lower.toUpperCase( locale ) );
+ assertEquals( upper.toLowerCase(), upper.toLowerCase( locale ) );
+
+ // check result
+ String expectedToUpperCase = upper;
+ String expectedToLowerCase = lower;
+ if ( LOCALE_TURKISH.getLanguage().equals( locale.getLanguage() ) )
+ {
+ expectedToUpperCase = upper.replace( DOTLESS_I, DOTTED_I );
+ expectedToLowerCase = lower.replace( DOTTED_i, DOTLESS_i );
+ }
+
+ assertEquals( "'" + lower + "'.toUpperCase('" + locale.toString() + "')", expectedToUpperCase,
+ lower.toUpperCase( locale ) );
+ assertEquals( "'" + upper + "'.toLowerCase('" + locale.toString() + "')", expectedToLowerCase,
+ upper.toLowerCase( locale ) );
+
+ // check that toLowerCase on lower and toUpperCase on upper don't cause harm
+ assertEquals( "'" + lower + "'.toLowerCase('" + locale.toString() + "')", lower, lower.toLowerCase( locale ) );
+ assertEquals( "'" + upper + "'.toUpperCase('" + locale.toString() + "')", upper, upper.toUpperCase( locale ) );
+
+ // check equalsIgnoreCase
+ assertTrue( "'" + upper + "'.equalsIgnoreCase('" + lower + "')", upper.equalsIgnoreCase( lower ) );
+ assertTrue( "'" + upper + "'.equalsIgnoreCase('" + expectedToLowerCase + "')",
+ upper.equalsIgnoreCase( expectedToLowerCase ) );
+ assertTrue( "'" + expectedToUpperCase + "'.equalsIgnoreCase('" + lower + "')",
+ expectedToUpperCase.equalsIgnoreCase( lower ) );
+ }
+
+ Locale.setDefault( savedDefaultLocale );
+ }
}