# 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("||"), - "||"); - } }