# HG changeset patch
# User aefimov
# Date 1427716344 -10800
# Node ID 8fe81a80361048a677039c563f602b66182fec9a
# Parent 374070bf0fdf89914e5ef38f241c0ac384191124
8074297: substring in XSLT returns wrong character if string contains supplementary chars
Reviewed-by: joehw
diff -r 374070bf0fdf -r 8fe81a803610 jdk/test/javax/xml/jaxp/transform/8062923/XslSubstringTest.java
--- a/jdk/test/javax/xml/jaxp/transform/8062923/XslSubstringTest.java Mon Mar 30 16:31:18 2015 +0900
+++ b/jdk/test/javax/xml/jaxp/transform/8062923/XslSubstringTest.java Mon Mar 30 14:52:24 2015 +0300
@@ -23,10 +23,11 @@
/**
* @test
- * @bug 8062923 8062924
+ * @bug 8062923 8062924 8074297
* @run testng XslSubstringTest
* @summary Test xsl substring function with negative, Inf and
- * NaN length and few other use cases
+ * NaN length and few other use cases. Also test proper
+ * processing of supplementary characters by substring function.
*/
import java.io.StringReader;
@@ -39,6 +40,7 @@
import javax.xml.transform.stream.StreamSource;
import static org.testng.Assert.assertEquals;
+import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class XslSubstringTest {
@@ -50,6 +52,31 @@
+ "";
final String xslPost = "";
+ @DataProvider(name = "GeneralTestsData")
+ private Object[][] xmls() {
+ return new Object[][] {
+ { "||", "|s|"},
+ { "||", "|sdf|"},
+ { "||", "||" },
+ { "||", "|sdf|" },
+ };
+ }
+
+ @DataProvider(name = "SupplementaryCharactersTestData")
+ private Object[][] bug8074297() {
+ return new Object[][] {
+ { "||", "|BC|"},
+ { "||", "|B|" },
+ { "||", "|AB|"},
+ { "||", "|BC|"},
+ { "||", "|BC|"},
+ { "||", "|𠀋|"},
+ { "||", "|A|"},
+ { "||", "|𠀋ABC|"},
+ { "||", "|𠀋ABC|"},
+ };
+ }
+
private String testTransform(String xsl) throws Exception {
//Prepare sources for transormation
Source src = new StreamSource(new StringReader(xml));
@@ -78,27 +105,14 @@
"||");
}
- @Test
- public void testGeneral1() throws Exception {
- assertEquals(testTransform("||"),
- "|s|");
- }
-
- @Test
- public void testGeneral2() throws Exception {
- assertEquals(testTransform("||"),
- "|sdf|");
+ @Test(dataProvider = "GeneralTestsData")
+ public void testGeneralAll(String xsl, String result) throws Exception {
+ assertEquals(testTransform(xsl), result);
}
- @Test
- public void testGeneral3() throws Exception {
- assertEquals(testTransform("||"),
- "||");
+ @Test(dataProvider = "SupplementaryCharactersTestData")
+ public void testSupplementCharacters(String xsl, String result) throws Exception {
+ assertEquals(testTransform(xsl), result);
}
- @Test
- public void testGeneral4() throws Exception {
- assertEquals(testTransform("||"),
- "||");
- }
}