# HG changeset patch
# User aefimov
# Date 1422360271 -10800
# Node ID 9c2370cc6f08382f288ed44af527481858d8746e
# Parent 0388dbd77c6b07f71db3c97edf703dbdfe7bd7b8
8062923: XSL: Run-time internal error in 'substring()'
8062924: XSL: wrong answer from substring() function
Reviewed-by: joehw
diff -r 0388dbd77c6b -r 9c2370cc6f08 test/javax/xml/jaxp/transform/8062923/XslSubstringTest.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/xml/jaxp/transform/8062923/XslSubstringTest.java Tue Jan 27 15:04:31 2015 +0300
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ * @test
+ * @bug 8062923 8062924
+ * @run testng XslSubstringTest
+ * @summary Test xsl substring function with negative, Inf and
+ * NaN length and few other use cases
+ */
+
+import java.io.StringReader;
+import java.io.StringWriter;
+import javax.xml.transform.Source;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import static org.testng.Assert.assertEquals;
+import org.testng.annotations.Test;
+
+public class XslSubstringTest {
+
+ final String xml = "";
+ final String xslPre = ""
+ + ""
+ + "";
+ final String xslPost = "";
+
+ private String testTransform(String xsl) throws Exception {
+ //Prepare sources for transormation
+ Source src = new StreamSource(new StringReader(xml));
+ Source xslsrc = new StreamSource(new StringReader(xslPre + xsl + xslPost));
+ //Create factory, template and transformer
+ TransformerFactory tf = TransformerFactory.newInstance();
+ Templates tmpl = tf.newTemplates(xslsrc);
+ Transformer t = tmpl.newTransformer();
+ //Prepare output stream
+ StringWriter xmlResultString = new StringWriter();
+ StreamResult xmlResultStream = new StreamResult(xmlResultString);
+ //Transform
+ t.transform(src, xmlResultStream);
+ return xmlResultString.toString().trim();
+ }
+
+ @Test
+ public void test8062923() throws Exception {
+ assertEquals(testTransform("||"),
+ "||");
+ }
+
+ @Test
+ public void test8062924() throws Exception {
+ assertEquals(testTransform("||"),
+ "||");
+ }
+
+ @Test
+ public void testGeneral1() throws Exception {
+ assertEquals(testTransform("||"),
+ "|s|");
+ }
+
+ @Test
+ public void testGeneral2() throws Exception {
+ assertEquals(testTransform("||"),
+ "|sdf|");
+ }
+
+ @Test
+ public void testGeneral3() throws Exception {
+ assertEquals(testTransform("||"),
+ "||");
+ }
+
+ @Test
+ public void testGeneral4() throws Exception {
+ assertEquals(testTransform("||"),
+ "||");
+ }
+}