Author: ggregory
Date: Sat Jul 16 22:28:34 2011
New Revision: 1147499

URL: http://svn.apache.org/viewvc?rev=1147499&view=rev
Log:
[LANG-728] StringEscapeUtils.escapeXml(str) does not support supplemental 
characters. Add one failing test method with @Ignore (= it is not run.) 

Modified:
    
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java

Modified: 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java?rev=1147499&r1=1147498&r2=1147499&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
 (original)
+++ 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringEscapeUtilsTest.java
 Sat Jul 16 22:28:34 2011
@@ -16,15 +16,19 @@
  */
 package org.apache.commons.lang3;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.StringWriter;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
 
-import static org.junit.Assert.*;
-
 import org.apache.commons.io.IOUtils;
+import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -318,6 +322,31 @@ public class StringEscapeUtilsTest {
         assertEquals("XML was unescaped incorrectly", "<abc>", sw.toString() );
     }
 
+    /**
+     * Tests Supplementary characters. 
+     * <p>
+     * From http://www.w3.org/International/questions/qa-escapes
+     * </p>
+     * <blockquote>
+     * Supplementary characters are those Unicode characters that have code 
points higher than the characters in
+     * the Basic Multilingual Plane (BMP). In UTF-16 a supplementary character 
is encoded using two 16-bit surrogate code points from the
+     * BMP. Because of this, some people think that supplementary characters 
need to be represented using two escapes, but this is incorrect
+     * – you must use the single, code point value for that character. For 
example, use &#x233B4; rather than &#xD84C;&#xDFB4;.
+     * </blockquote>
+     * @see <a 
href="http://www.w3.org/International/questions/qa-escapes";>Using character 
escapes in markup and CSS</a>
+     * @see <a 
href="https://issues.apache.org/jira/browse/LANG-728";>LANG-728</a>
+     */
+    @Ignore
+    @Test
+    public void testEscapeXmlSupplementaryCharacters() {
+        // Example from https://issues.apache.org/jira/browse/LANG-728
+        assertEquals("Supplementary character must be represented using a 
single escape", "&#144308;",
+                StringEscapeUtils.escapeXml("\uD84C\uDFB4"));
+        // Example from See 
http://www.w3.org/International/questions/qa-escapes
+        assertEquals("Supplementary character must be represented using a 
single escape", "&#x233B4;",
+                StringEscapeUtils.escapeXml("\uD84C;\uDFB4;"));
+    }
+    
     // Tests issue #38569
     // http://issues.apache.org/bugzilla/show_bug.cgi?id=38569
     @Test


Reply via email to