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 );
+    }
 }