Modified: xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/ContainerCommentTest.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/ContainerCommentTest.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/ContainerCommentTest.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/ContainerCommentTest.java Sun Feb 6 01:51:55 2022 @@ -16,7 +16,7 @@ package xmlcursor.xpath.complex.checkin; import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlObject; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** * This class tests the execution of an XQuery where the @@ -24,7 +24,7 @@ import org.junit.Test; */ public class ContainerCommentTest { @Test - public void testFunctionPathWithCursor() throws Exception { + void testFunctionPathWithCursor() throws Exception { String sXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<!-- My Comment -->" + @@ -58,8 +58,7 @@ public class ContainerCommentTest { for (int i = 0; i < cursor.getSelectionCount(); i++) { try (XmlCursor nameCursor = cursor.newCursor()) { - nameCursor.selectPath(m_namespaceDeclaration + - "$this/xq:name/text()"); + nameCursor.selectPath(m_namespaceDeclaration + "$this/xq:name/text()"); nameCursor.toNextSelection(); names[i] = nameCursor.getTextValue(); }
Copied: xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTest.java (from r1897794, xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTests.java) URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTest.java?p2=xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTest.java&p1=xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTests.java&r1=1897794&r2=1897795&rev=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTests.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTest.java Sun Feb 6 01:51:55 2022 @@ -18,24 +18,20 @@ package xmlcursor.xpath.complex.checkin; import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlObject; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameter; -import org.junit.runners.Parameterized.Parameters; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import xmlcursor.xpath.common.XPathCommon; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.io.IOException; import java.util.stream.Stream; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; +import static xmlcursor.common.BasicCursorTestCase.jcur; -@RunWith(Parameterized.class) -public class XPathTests { +public class XPathTest { static final String XML = "<?xml version=\"1.0\"?>" + "<doc xmlns:ext=\"http://somebody.elses.extension\">" + @@ -65,66 +61,58 @@ public class XPathTests { private static final String XMLFRAG_EMPTY = "<xml-fragment/>"; private static XmlObject doc; - @Parameter - public String xpath = null; - @Parameter(value = 1) - public String[] expected = null; - - @BeforeClass + @BeforeAll public static void init() throws XmlException { doc = XmlObject.Factory.parse(XML); } - @Parameters(name = "{index}: {0}") - public static Collection<Object[]> data() { - final List<Object[]> data = new ArrayList<>(); - - add(data, "/doc/a/@test", STEPS[2]); - add(data, "//.", XML, STEPS[1], STEPS[2], STEPS[5], XMLFRAG_EMPTY, STEPS[10], XMLFRAG_EMPTY, STEPS[8]); - add(data, "/doc", STEPS[1]); - add(data, "/doc/a", STEPS[2]); - add(data, "//@*", STEPS[3], STEPS[6], STEPS[7]); - add(data, ".", XML); - add(data, "//ancestor-or-self::*", XML, STEPS[2], STEPS[5], STEPS[10]); - add(data, "./child::*[1]", STEPS[1]); - add(data, "//descendant-or-self::*/@*[1]", STEPS[2], STEPS[6]); - - // This is tricky: - // The expression "*" is true for the principal axis: since the axis is self, so we're looking for elements: doc - // elt node() also returns the doc elt, but also the comment nodes in the union set are returned in doc order - add(data, "//@* | * | node()", STEPS[1], STEPS[3], STEPS[6], STEPS[7], STEPS[8]); - - add(data, "//*", STEPS[1], STEPS[2], STEPS[5], STEPS[4]); - add(data, "/doc/n", (String) null); - add(data, "//descendant::comment()", STEPS[8]); - add(data, "//*[local-name()='a']", STEPS[2], STEPS[4]); - add(data, "//*/@*", STEPS[3], STEPS[6], STEPS[7]); - add(data, "//*[last()]", STEPS[1], STEPS[5], STEPS[4]); - add(data, "doc/*[last()]", STEPS[5]); - - // TODO: BUGBUG: fix this - add(data, "/doc/a/*/@*", (String) null); - - add(data, "doc/descendant::node()", STEPS[2], STEPS[5], STEPS[11], STEPS[10], STEPS[11]); - add(data, "doc/a/@*", STEPS[2]); - add(data, "doc/b/a/ancestor-or-self::*", STEPS[1], STEPS[5], STEPS[4]); - add(data, "doc/b/a/preceding::*", STEPS[2]); - add(data, "doc/a/following::*", STEPS[5], STEPS[4]); - add(data, "/doc/b/preceding-sibling::*", STEPS[2]); - add(data, "/doc/a/following-sibling::*", STEPS[5]); - - // "/doc/namespace::*", STEPS[0],DEFAULT_NS}; - - return data; - } + public static Stream<Arguments> dataCheckin() { + return Stream.of( + addConf("/doc/a/@test", STEPS[2]), + addConf("//.", XML, STEPS[1], STEPS[2], STEPS[5], XMLFRAG_EMPTY, STEPS[10], XMLFRAG_EMPTY, STEPS[8]), + addConf("/doc", STEPS[1]), + addConf("/doc/a", STEPS[2]), + addConf("//@*", STEPS[3], STEPS[6], STEPS[7]), + addConf(".", XML), + addConf("//ancestor-or-self::*", XML, STEPS[2], STEPS[5], STEPS[10]), + addConf("./child::*[1]", STEPS[1]), + addConf("//descendant-or-self::*/@*[1]", STEPS[2], STEPS[6]), + + // This is tricky: + // The expression "*" is true for the principal axis: since the axis is self, so we're looking for elements: doc + // elt node() also returns the doc elt, but also the comment nodes in the union set are returned in doc order + addConf("//@* | * | node()", STEPS[1], STEPS[3], STEPS[6], STEPS[7], STEPS[8]), + + addConf("//*", STEPS[1], STEPS[2], STEPS[5], STEPS[4]), + addConf("/doc/n", (String) null), + addConf("//descendant::comment()", STEPS[8]), + addConf("//*[local-name()='a']", STEPS[2], STEPS[4]), + addConf("//*/@*", STEPS[3], STEPS[6], STEPS[7]), + addConf("//*[last()]", STEPS[1], STEPS[5], STEPS[4]), + addConf("doc/*[last()]", STEPS[5]), + + // TODO: BUGBUG: fix this + addConf("/doc/a/*/@*", (String) null), + + addConf("doc/descendant::node()", STEPS[2], STEPS[5], STEPS[11], STEPS[10], STEPS[11]), + addConf("doc/a/@*", STEPS[2]), + addConf("doc/b/a/ancestor-or-self::*", STEPS[1], STEPS[5], STEPS[4]), + addConf("doc/b/a/preceding::*", STEPS[2]), + addConf("doc/a/following::*", STEPS[5], STEPS[4]), + addConf("/doc/b/preceding-sibling::*", STEPS[2]), + addConf("/doc/a/following-sibling::*", STEPS[5]) - private static void add(List<Object[]> data, String xpath, String... expected) { - data.add(new Object[]{xpath, expected}); + // "/doc/namespace::*", STEPS[0],DEFAULT_NS}; + ); } + private static Arguments addConf(String xpath, String... expected) { + return Arguments.of(xpath, expected); + } - @Test - public void testConformance() { + @ParameterizedTest + @MethodSource("dataCheckin") + void testConformance(String xpath, String[] expected) { try (XmlCursor actual = doc.newCursor()) { actual.selectPath(xpath); @@ -133,11 +121,185 @@ public class XPathTests { return; } - XmlObject[] expXO = Stream.of(expected).map(XPathTests::parse).toArray(XmlObject[]::new); + XmlObject[] expXO = Stream.of(expected).map(XPathTest::parse).toArray(XmlObject[]::new); XPathCommon.compare(actual, expXO); } } + + public static Stream<Arguments> dataZvon() { + return Stream.of( + addZvon(1, "/AAA", "<AAA><BBB/><CCC/><BBB/><BBB/><DDD><BBB/></DDD><CCC/></AAA>"), + addZvon(1, "/AAA/CCC", "<CCC/>", "<CCC/>"), + addZvon(1, "/AAA/DDD/BBB", "<BBB/>"), + + addZvon(2, "//BBB", "<BBB/>", "<BBB/>", "<BBB/>", "<BBB/>", "<BBB/>"), + addZvon(2, "//DDD/BBB", "<BBB/>", "<BBB/>", "<BBB/>"), + + addZvon(3, "/AAA/CCC/DDD/*", "<BBB/>", "<BBB/>", "<EEE/>", "<FFF/>"), + addZvon(3, "/*/*/*/BBB", "<BBB/>", "<BBB/>", "<BBB/>", "<BBB/>", "<BBB><BBB/></BBB>"), + + //according to Galax the document order is : + addZvon(3, "//*", + "<AAA><XXX><DDD><BBB/><BBB/><EEE/><FFF/></DDD></XXX><CCC><DDD><BBB/><BBB/><EEE/><FFF/></DDD></CCC><CCC><BBB><BBB><BBB/></BBB></BBB></CCC></AAA>", + "<XXX><DDD><BBB/><BBB/><EEE/><FFF/></DDD></XXX>", "<DDD><BBB/><BBB/><EEE/><FFF/></DDD>", "<BBB/>", "<BBB/>", + "<EEE/>", "<FFF/>", "<CCC><DDD><BBB/><BBB/><EEE/><FFF/></DDD></CCC>", "<DDD><BBB/><BBB/><EEE/><FFF/></DDD>", + "<BBB/>", "<BBB/>", "<EEE/>", "<FFF/>", "<CCC><BBB><BBB><BBB/></BBB></BBB></CCC>", + "<BBB><BBB><BBB/></BBB></BBB>", "<BBB><BBB/></BBB>", "<BBB/>"), + + addZvon(4, "/AAA/BBB[1]", "<BBB/>"), + addZvon(4, "/AAA/BBB[last()]", "<BBB/>"), + + addZvon(5, "//@id", "<xml-fragment id=\"b1\"/>", "<xml-fragment id=\"b2\"/>"), + addZvon(5, "//BBB[@id]", "<BBB id = \"b1\"/>", "<BBB id = \"b2\"/>"), + addZvon(5, "//BBB[@name]", "<BBB name=\"bbb\"/>"), + addZvon(5, "//BBB[@*]", "<BBB id = \"b1\"/>", "<BBB id = \"b2\"/>", "<BBB name=\"bbb\"/>"), + addZvon(5, "//BBB[not(@*)]", "<BBB/>"), + + addZvon(6, "//BBB[@id='b1']", "<BBB id = \"b1\"/>"), + addZvon(6, "//BBB[@name='bbb']", "<BBB name=\"bbb\"/>"), + addZvon(6, "//BBB[normalize-space(@name)='bbb']", "<BBB name=\" bbb \"/>", "<BBB name=\"bbb\"/>"), + + addZvon(7, "//*[count(BBB)=2]", "<DDD><BBB/><BBB/></DDD>"), + addZvon(7, "//*[count(*)=2]", "<DDD><BBB/><BBB/></DDD>", "<EEE><CCC/><DDD/></EEE>"), + addZvon(7, "//*[count(*)=3]", + "<AAA><CCC><BBB/><BBB/><BBB/></CCC><DDD><BBB/><BBB/></DDD><EEE><CCC/><DDD/></EEE></AAA>", "<CCC><BBB/><BBB/><BBB/></CCC>"), + + addZvon(8, "//*[name()='BBB']", "<BBB/>", "<BBB/>", "<BBB/>", "<BBB/>", "<BBB/>"), + addZvon(8, "//*[starts-with(name(),'B')]", "<BCC><BBB/><BBB/><BBB/></BCC>", + "<BBB/>", "<BBB/>", "<BBB/>", "<BBB/>", "<BBB/>", "<BEC><CCC/><DBD/></BEC>"), + + // ykadiysk: Jaxen prints in BF left-to-right order but XPath wants doc order + // addZvon("zvon8.xml", "//*[starts-with(name(),'B')]", "<BCC><BBB/><BBB/><BBB/></BCC>", + // "<BBB/>", "<BBB/>", "<BEC><CCC/><DBD/></BEC>", "<BBB/>", "<BBB/>", "<BBB/>"), + + addZvon(8, "//*[contains(name(),'C')]", "<BCC><BBB/><BBB/><BBB/></BCC>", "<BEC><CCC/><DBD/></BEC>", "<CCC/>"), + + addZvon(9, "//*[string-length(name()) = 3]", "<AAA><Q/><SSSS/><BB/><CCC/><DDDDDDDD/><EEEE/></AAA>", "<CCC/>"), + addZvon(9, "//*[string-length(name()) < 3]", "<Q/>", "<BB/>"), + addZvon(9, "//*[string-length(name()) > 3]", "<SSSS/>", "<DDDDDDDD/>", "<EEEE/>"), + + addZvon(10, "$this//CCC | $this//BBB", "<BBB/>", "<CCC/>", "<CCC/>"), + // Nodes are returned in document order + addZvon(10, "$this/AAA/EEE | $this//BBB", "<BBB/>", "<EEE/>"), + addZvon(10, "./AAA/EEE |.//DDD/CCC | ./AAA | .//BBB", "<AAA><BBB/><CCC/><DDD><CCC/></DDD><EEE/></AAA>", + "<BBB/>", "<CCC/>", "<EEE/>"), + + addZvon(11, "/AAA", "<AAA><BBB/><CCC/></AAA>"), + addZvon(11, "/child::AAA", "<AAA><BBB/><CCC/></AAA>"), + addZvon(11, "/AAA/BBB", "<BBB/>"), + addZvon(11, "/child::AAA/child::BBB", "<BBB/>"), + addZvon(11, "/child::AAA/BBB", "<BBB/>"), + + addZvon(12, "/descendant::*", + "<AAA><BBB><DDD><CCC><DDD/><EEE/></CCC></DDD></BBB><CCC><DDD><EEE><DDD><FFF/></DDD></EEE></DDD></CCC></AAA>", + "<BBB><DDD><CCC><DDD/><EEE/></CCC></DDD></BBB>", "<DDD><CCC><DDD/><EEE/></CCC></DDD>", + "<CCC><DDD/><EEE/></CCC>", "<DDD/>", "<EEE/>", "<CCC><DDD><EEE><DDD><FFF/></DDD></EEE></DDD></CCC>", + "<DDD><EEE><DDD><FFF/></DDD></EEE></DDD>", "<EEE><DDD><FFF/></DDD></EEE>", "<DDD><FFF/></DDD>", "<FFF/>"), + addZvon(12, "/AAA/BBB/descendant::*", "<DDD><CCC><DDD/><EEE/></CCC></DDD>", + "<CCC><DDD/><EEE/></CCC>", "<DDD/>", "<EEE/>"), + addZvon(12, "//CCC/descendant::*", "<DDD/>", "<EEE/>", "<DDD><EEE><DDD><FFF/></DDD></EEE></DDD>", + "<EEE><DDD><FFF/></DDD></EEE>", "<DDD><FFF/></DDD>", "<FFF/>"), + addZvon(12, "//CCC/descendant::DDD", "<DDD/>", "<DDD><EEE><DDD><FFF/></DDD></EEE></DDD>", "<DDD><FFF/></DDD>"), + + addZvon(13, "//DDD/parent::*", "<BBB><DDD><CCC><DDD/><EEE/></CCC></DDD></BBB>", + "<CCC><DDD/><EEE/></CCC>", "<CCC><DDD><EEE><DDD><FFF/></DDD></EEE></DDD></CCC>", "<EEE><DDD><FFF/></DDD></EEE>"), + + addZvon(14, "/AAA/BBB/DDD/CCC/EEE/ancestor::*", + "<AAA><BBB><DDD><CCC><DDD/><EEE/></CCC></DDD></BBB><CCC><DDD><EEE><DDD><FFF/></DDD></EEE></DDD></CCC></AAA>", + "<BBB><DDD><CCC><DDD/><EEE/></CCC></DDD></BBB>", "<DDD><CCC><DDD/><EEE/></CCC></DDD>", "<CCC><DDD/><EEE/></CCC>"), + addZvon(14, "//FFF/ancestor::*", + "<AAA><BBB><DDD><CCC><DDD/><EEE/></CCC></DDD></BBB><CCC><DDD><EEE><DDD><FFF/></DDD></EEE></DDD></CCC></AAA>", + "<CCC><DDD><EEE><DDD><FFF/></DDD></EEE></DDD></CCC>", "<DDD><EEE><DDD><FFF/></DDD></EEE></DDD>", + "<EEE><DDD><FFF/></DDD></EEE>", "<DDD><FFF/></DDD>"), + + addZvon(15, "/AAA/BBB/following-sibling::*", + "<XXX><DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD></XXX>", "<CCC><DDD/></CCC>"), + addZvon(15, "//CCC/following-sibling::*", "<DDD/>", "<FFF/>", "<FFF><GGG/></FFF>"), + + addZvon(16, "/AAA/XXX/preceding-sibling::*", "<BBB><CCC/><DDD/></BBB>"), + addZvon(16, "//CCC/preceding-sibling::*", "<BBB><CCC/><DDD/></BBB>", + "<XXX><DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD></XXX>", "<EEE/>", "<DDD/>"), + + addZvon(17, "/AAA/XXX/following::*", "<CCC><DDD/></CCC>", "<DDD/>"), + addZvon(17, "//ZZZ/following::*", "<FFF><GGG/></FFF>", "<GGG/>", + "<XXX><DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD></XXX>", + "<DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD>", "<EEE/>", "<DDD/>", "<CCC/>", "<FFF/>", + "<FFF><GGG/></FFF>", "<GGG/>", "<CCC><DDD/></CCC>", "<DDD/>"), + + + // the preceding axis contains all nodes that are descendants of the root of the tree in which the context + // node is found, are not ancestors of the context node, and occur before the context node in document order + addZvon(18, "/AAA/XXX/preceding::*", "<BBB><CCC/><ZZZ><DDD/></ZZZ></BBB>", "<CCC/>", + "<ZZZ><DDD/></ZZZ>", "<DDD/>"), + addZvon(18, "//GGG/preceding::*", "<BBB><CCC/><ZZZ><DDD/></ZZZ></BBB>", "<CCC/>", + "<ZZZ><DDD/></ZZZ>", "<DDD/>", "<EEE/>", "<DDD/>", "<CCC/>", "<FFF/>"), + + + addZvon(19, "/AAA/XXX/descendant-or-self::*", "<XXX><DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD></XXX>", + "<DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD>", "<EEE/>", "<DDD/>", "<CCC/>", "<FFF/>", "<FFF><GGG/></FFF>", "<GGG/>"), + addZvon(19, "//CCC/descendant-or-self::*", "<CCC/>", "<CCC/>", "<CCC><DDD/></CCC>", "<DDD/>"), + + + addZvon(20, "/AAA/XXX/DDD/EEE/ancestor-or-self::*", + "<AAA><BBB><CCC/><ZZZ><DDD/></ZZZ></BBB><XXX><DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD></XXX><CCC><DDD/></CCC></AAA>", + "<XXX><DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD></XXX>", + "<DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD>", "<EEE/>"), + addZvon(20, "//GGG/ancestor-or-self::*", + "<AAA><BBB><CCC/><ZZZ><DDD/></ZZZ></BBB><XXX><DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD></XXX><CCC><DDD/></CCC></AAA>", + "<XXX><DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD></XXX>", + "<DDD><EEE/><DDD/><CCC/><FFF/><FFF><GGG/></FFF></DDD>", "<FFF><GGG/></FFF>", "<GGG/>"), + + addZvon(21, "//GGG/ancestor::*", + "<AAA><BBB><CCC/><ZZZ/></BBB><XXX><DDD><EEE/><FFF><HHH/><GGG><JJJ><QQQ/></JJJ><JJJ/></GGG><HHH/></FFF></DDD></XXX><CCC><DDD/></CCC></AAA>", + "<XXX><DDD><EEE/><FFF><HHH/><GGG><JJJ><QQQ/></JJJ><JJJ/></GGG><HHH/></FFF></DDD></XXX>", + "<DDD><EEE/><FFF><HHH/><GGG><JJJ><QQQ/></JJJ><JJJ/></GGG><HHH/></FFF></DDD>", + "<FFF><HHH/><GGG><JJJ><QQQ/></JJJ><JJJ/></GGG><HHH/></FFF>"), + addZvon(21, "//GGG/descendant::*", "<JJJ><QQQ/></JJJ>", "<QQQ/>", "<JJJ/>"), + addZvon(21, "//GGG/following::*", "<HHH/>", "<CCC><DDD/></CCC>", "<DDD/>"), + addZvon(21, "//GGG/preceding::*", "<BBB><CCC/><ZZZ/></BBB>", "<CCC/>", "<ZZZ/>", "<EEE/>", "<HHH/>"), + addZvon(21, "//GGG/self::*", "<GGG><JJJ><QQQ/></JJJ><JJJ/></GGG>"), + addZvon(21, "//GGG/ancestor::* | //GGG/descendant::* | //GGG/following::* | //GGG/preceding::* | //GGG/self::*", + "<AAA><BBB><CCC/><ZZZ/></BBB><XXX><DDD><EEE/><FFF><HHH/><GGG><JJJ><QQQ/></JJJ><JJJ/></GGG><HHH/></FFF></DDD></XXX><CCC><DDD/></CCC></AAA>", + "<BBB><CCC/><ZZZ/></BBB>", "<CCC/>", "<ZZZ/>", "<XXX><DDD><EEE/><FFF><HHH/><GGG><JJJ><QQQ/></JJJ><JJJ/></GGG><HHH/></FFF></DDD></XXX>", + "<DDD><EEE/><FFF><HHH/><GGG><JJJ><QQQ/></JJJ><JJJ/></GGG><HHH/></FFF></DDD>", "<EEE/>", + "<FFF><HHH/><GGG><JJJ><QQQ/></JJJ><JJJ/></GGG><HHH/></FFF>", "<HHH/>", "<GGG><JJJ><QQQ/></JJJ><JJJ/></GGG>", + "<JJJ><QQQ/></JJJ>", "<QQQ/>", "<JJJ/>", "<HHH/>", "<CCC><DDD/></CCC>", "<DDD/>"), + + addZvon(22, "//BBB[position() mod 2 = 0 ]", "<BBB/>", "<BBB/>", "<BBB/>", "<BBB/>"), + addZvon(22, "//BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]", + "<BBB/>", "<BBB/>"), + addZvon(22, "//CCC[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]", + "<CCC/>") + ); + } + + private static Arguments addZvon(int dataset, String xpath, String... expected) { + return Arguments.of(dataset, xpath, expected); + } + + /** + * Verifies XPath impl using examples from + * http://www.zvon.org/xxl/XPathTutorial/Output/example1.html + * includes expanded notations as well + */ + @ParameterizedTest(name = "{index}: zvon{0}.xml {1}") + @MethodSource("dataZvon") + void zvonExample(int dataset, String xpath, String[] expected) throws IOException, XmlException { + try (XmlCursor x1 = jcur("xbean/xmlcursor/xpath/zvon"+dataset+".xml")) { + x1.selectPath(xpath); + + XmlObject[] exp = new XmlObject[expected.length]; + for (int i = 0; i < expected.length; i++) { + exp[i] = XmlObject.Factory.parse(expected[i]); + } + + XPathCommon.compare(x1, exp); + } + } + + + private static XmlObject parse(String str) { try { return XmlObject.Factory.parse(str); Modified: xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTestsMisc.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTestsMisc.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTestsMisc.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/checkin/XPathTestsMisc.java Sun Feb 6 01:51:55 2022 @@ -16,16 +16,19 @@ package xmlcursor.xpath.complex.checkin; import org.apache.xmlbeans.XmlCursor; -import org.apache.xmlbeans.XmlObject; -import org.junit.Test; +import org.junit.jupiter.api.Test; + +import static xmlcursor.common.BasicCursorTestCase.cur; public class XPathTestsMisc { @Test - public void testDelete() throws Exception { + void testDelete() throws Exception { String query = "*"; - try (XmlCursor xc = XmlObject.Factory.parse(XPathTests.XML).newCursor()) { + // TODO: add asserts + + try (XmlCursor xc = cur(XPathTest.XML)) { xc.selectPath(query); while (xc.toNextSelection()) { System.out.println(xc.xmlText()); Modified: xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/DeclareNamespaceTest.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/DeclareNamespaceTest.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/DeclareNamespaceTest.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/DeclareNamespaceTest.java Sun Feb 6 01:51:55 2022 @@ -18,18 +18,18 @@ import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlLong; import org.apache.xmlbeans.XmlObject; -import org.junit.Test; +import org.junit.jupiter.api.Test; import xmlcursor.common.Common; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; +import static xmlcursor.common.BasicCursorTestCase.cur; +import static xmlcursor.common.BasicCursorTestCase.obj; public class DeclareNamespaceTest { @Test - public void testDeclareNSPath() throws Exception { - XmlObject s = XmlObject.Factory.parse( - "<a xmlns:ack='abc' ack:attr='val1'>foo<b>bar</b></a>"); - XmlObject[] res; + void testDeclareNSPath() throws Exception { + XmlObject s = obj("<a xmlns:ack='abc' ack:attr='val1'>foo<b>bar</b></a>"); /* res=s.selectPath("./a"); assertTrue(s.selectChildren("","a")[0] == res[0] ); @@ -41,11 +41,10 @@ public class DeclareNamespaceTest { s1.selectPath(query); assertEquals(1, s1.getSelectionCount()); s1.toNextSelection(); - assertEquals(s1.xmlText(), - "<xml-fragment ack:attr=\"val1\" xmlns:ack=\"abc\"/>"); + assertEquals("<xml-fragment ack:attr=\"val1\" xmlns:ack=\"abc\"/>", s1.xmlText()); } - res = s.execQuery(query); + XmlObject[] res = s.execQuery(query); XmlObject o; try (XmlCursor c1 = s.newCursor()) { c1.toFirstContentToken(); @@ -53,16 +52,12 @@ public class DeclareNamespaceTest { } assertNotSame(o, res[0]); - assertEquals(res[0].xmlText(), - "<xml-fragment ack:attr=\"val1\" xmlns:ack=\"abc\"/>"); + assertEquals("<xml-fragment ack:attr=\"val1\" xmlns:ack=\"abc\"/>", res[0].xmlText()); } @Test - public void testDefaultNSPath() throws Exception { - XmlObject s = XmlObject.Factory.parse( - "<a xmlns='abc'>foo<b>bar</b></a>"); - XmlObject[] res; - + void testDefaultNSPath() throws Exception { + XmlObject s = obj("<a xmlns='abc'>foo<b>bar</b></a>"); String query = "declare default element namespace 'abc'; .//b[position()=last()]"; /* XmlCursor s1=s.newCursor(); @@ -71,7 +66,7 @@ public class DeclareNamespaceTest { s1.toNextSelection(); assertEquals( s1.xmlText(),"<b xmlns=\"abc\">bar</b>"); */ - res = s.execQuery(query); + XmlObject[] res = s.execQuery(query); try (XmlCursor c1 = s.newCursor()) { c1.toFirstContentToken(); XmlObject o = c1.getObject(); @@ -81,11 +76,9 @@ public class DeclareNamespaceTest { } @Test - public void testSequence() throws Exception { - XmlObject o = XmlObject.Factory.parse( - "<a xmlns='abc'>foo<b>bar</b></a>"); - XmlObject[] res = null; - res = o.selectPath("count(//*:a), count(//*:b)"); + void testSequence() throws Exception { + XmlObject o = obj("<a xmlns='abc'>foo<b>bar</b></a>"); + XmlObject[] res = o.selectPath("count(//*:a), count(//*:b)"); assertEquals(2, res.length); XmlLong a = ((XmlLong) res[0]); String expXml = "<xml-fragment>1</xml-fragment>"; @@ -108,22 +101,19 @@ public class DeclareNamespaceTest { } @Test - public void testSequenceUnion() throws Exception { - XmlObject o = XmlObject.Factory.parse("<a><b>1</b>1</a>"); + void testSequenceUnion() throws Exception { + XmlObject o = obj("<a><b>1</b>1</a>"); XmlObject[] res = o.selectPath("//a union //b"); assertEquals(2, res.length); - XmlObject a; - a = res[0]; //node a - assertEquals("<xml-fragment><b>1</b>1</xml-fragment>", a.xmlText()); - a = res[1]; + assertEquals("<xml-fragment><b>1</b>1</xml-fragment>", res[0].xmlText()); //node b - assertEquals("<xml-fragment>1</xml-fragment>", a.xmlText()); + assertEquals("<xml-fragment>1</xml-fragment>", res[1].xmlText()); } @Test - public void testSequenceIntersect() throws Exception { - try (XmlCursor o = XmlObject.Factory.parse("<a><b>1</b>1</a>").newCursor()) { + void testSequenceIntersect() throws Exception { + try (XmlCursor o = cur("<a><b>1</b>1</a>")) { o.selectPath("//b intersect //b"); assertEquals(1, o.getSelectionCount()); o.toNextSelection(); @@ -132,8 +122,8 @@ public class DeclareNamespaceTest { } @Test - public void testSequenceExcept() throws Exception { - try (XmlCursor o = XmlObject.Factory.parse("<a><b>1</b>1</a>").newCursor()) { + void testSequenceExcept() throws Exception { + try (XmlCursor o = cur("<a><b>1</b>1</a>")) { o.selectPath("/a except /a"); assertEquals(0, o.getSelectionCount()); o.selectPath("//* except //b"); @@ -145,12 +135,11 @@ public class DeclareNamespaceTest { //If an operand of union, intersect, or except // contains an item that is not a node, a type error is raised. - - @Test(expected = RuntimeException.class) - public void testSequenceTypeError() throws XmlException { - try (XmlCursor o = XmlObject.Factory.parse("<a/>").newCursor()) { + @Test + void testSequenceTypeError() throws XmlException { + try (XmlCursor o = obj("<a/>").newCursor()) { o.selectPath("(0 to 4) except (0 to 4)"); - o.toNextSelection(); + assertThrows(RuntimeException.class, o::toNextSelection); } } } Modified: xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/NodeCopyTest.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/NodeCopyTest.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/NodeCopyTest.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/NodeCopyTest.java Sun Feb 6 01:51:55 2022 @@ -17,18 +17,19 @@ package xmlcursor.xpath.complex.detailed import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlLong; import org.apache.xmlbeans.XmlObject; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import xbean.scomp.element.globalEltDefault.GlobalEltDefaultIntDocument; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static xmlcursor.common.BasicCursorTestCase.obj; public class NodeCopyTest { @Test - public void testNS() throws Exception { - XmlObject s = XmlObject.Factory.parse("<a xmlns:ack='abc' ack:attr='val1'>foo<b>bar</b></a>"); - XmlObject[] res; + void testNS() throws Exception { + XmlObject s = obj("<a xmlns:ack='abc' ack:attr='val1'>foo<b>bar</b></a>"); /* res=s.selectPath("./a"); assertTrue(s.selectChildren("","a")[0] == res[0] ); @@ -40,7 +41,7 @@ public class NodeCopyTest { assertEquals("<a ack:attr=\"val1\" xmlns:ack=\"abc\">foo<b>bar</b></a>", s1.xmlText()); } - res = s.execQuery("./a"); + XmlObject[] res = s.execQuery("./a"); XmlObject o; try (XmlCursor c1 = s.newCursor()) { c1.toFirstContentToken(); @@ -52,18 +53,17 @@ public class NodeCopyTest { } @Test - public void testText() throws Exception { - XmlObject s = XmlObject.Factory.parse("<a><b>bar</b><c>foo</c></a>"); - XmlObject[] res; - res = s.selectPath(".//text()"); + void testText() throws Exception { + XmlObject s = obj("<a><b>bar</b><c>foo</c></a>"); + XmlObject[] res = s.selectPath(".//text()"); assertEquals(2, res.length); assertEquals("<xml-fragment>bar</xml-fragment>", res[0].xmlText()); assertEquals("<xml-fragment>foo</xml-fragment>", res[1].xmlText()); } @Test - public void testCount() throws Exception { - XmlObject s = XmlObject.Factory.parse("<a><b>bar</b>foo</a>"); + void testCount() throws Exception { + XmlObject s = obj("<a><b>bar</b>foo</a>"); XmlObject[] res; res = s.selectPath("count(.//b)"); System.out.println(res[0].xmlText()); @@ -73,7 +73,7 @@ public class NodeCopyTest { } @Test - @Ignore + @Disabled public void testInt() throws Exception { GlobalEltDefaultIntDocument d = GlobalEltDefaultIntDocument.Factory @@ -84,15 +84,14 @@ public class NodeCopyTest { } @Test - public void testXmlObjectSelectPath() { + void testXmlObjectSelectPath() { } @Test - public void testDeleteMe() throws Exception { - XmlObject t = XmlObject.Factory.parse("<a><b/><b/></a>"); + void testDeleteMe() throws Exception { + XmlObject t = obj("<a><b/><b/></a>"); try (XmlCursor cursor = t.newCursor()) { - System.out.println(cursor.getObject()); // use xpath to select elements cursor.selectPath("*/*"); Modified: xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/TypesTest.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/TypesTest.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/TypesTest.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/TypesTest.java Sun Feb 6 01:51:55 2022 @@ -15,25 +15,26 @@ package xmlcursor.xpath.complex.detailed; import org.apache.xmlbeans.*; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import java.time.OffsetDateTime; import java.util.Calendar; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; public class TypesTest { private XmlObject o; - @Before + // TODO: add asserts - convert system.out.printlns to asserts + + @BeforeEach public void setUp() throws Exception { o = XmlObject.Factory.parse("<a/>"); } @Test - public void testDate() { + void testDate() { int offsetSeconds = OffsetDateTime.now().getOffset().getTotalSeconds(); XmlObject[] res = o.selectPath("xs:date(\"2000-01-01\")"); assertEquals(1, res.length); @@ -45,7 +46,7 @@ public class TypesTest { } @Test - public void testZDate() { + void testZDate() { XmlObject[] res = o.selectPath("xs:date(\"2000-01-01Z\")"); assertEquals(1, res.length); Calendar d = ((XmlDate) res[0]).getCalendarValue(); @@ -56,7 +57,7 @@ public class TypesTest { } @Test - public void testCaliforniaDate() { + void testCaliforniaDate() { XmlObject[] res = o.selectPath("xs:date(\"2000-01-01-08:00\")"); assertEquals(1, res.length); Calendar d = ((XmlDate) res[0]).getCalendarValue(); @@ -67,7 +68,7 @@ public class TypesTest { } @Test - public void testDateTime() { + void testDateTime() { int offsetSeconds = OffsetDateTime.now().getOffset().getTotalSeconds(); XmlObject[] res = o.selectPath("xs:dateTime(\"2000-01-01T15:03:06.123\")"); assertEquals(1, res.length); @@ -83,7 +84,7 @@ public class TypesTest { } @Test - public void testZDateTime() { + void testZDateTime() { XmlObject[] res = o.selectPath("xs:dateTime(\"2000-01-01T15:03:06.123Z\")"); assertEquals(1, res.length); Calendar d = ((XmlDateTime) res[0]).getCalendarValue(); @@ -98,7 +99,7 @@ public class TypesTest { } @Test - public void testCaliforniaDateTime() { + void testCaliforniaDateTime() { XmlObject[] res = o.selectPath("xs:dateTime(\"2000-01-01T15:03:06.123-08:00\")"); assertEquals(1, res.length); Calendar d = ((XmlDateTime) res[0]).getCalendarValue(); @@ -113,9 +114,8 @@ public class TypesTest { } @Test - public void testDecimal() { - XmlObject[] res = o.selectPath( - "seconds-from-dateTime(xs:dateTime('1997-07-16T19:20:30+01:00'))"); + void testDecimal() { + XmlObject[] res = o.selectPath("seconds-from-dateTime(xs:dateTime('1997-07-16T19:20:30+01:00'))"); assertEquals(1, res.length); XmlDecimal dec = (XmlDecimal) res[0]; assertEquals("<xml-fragment>30</xml-fragment>", dec.xmlText()); @@ -124,7 +124,7 @@ public class TypesTest { //Saxon returns string here, though the string is a valid duration //representation @Test - public void testDuration() { + void testDuration() { XmlObject[] res = o.selectPath("xs:dayTimeDuration(\"PT12H\")*4"); assertEquals(1, res.length); //System.out.println(res[0].schemaType()); @@ -138,14 +138,12 @@ public class TypesTest { } @Test - public void testTypes() throws Exception { - XmlObject o = XmlObject.Factory.parse( - "<a xml:base='abc'>foo<b>bar</b></a>"); - XmlObject[] res = null; + void testTypes() throws Exception { + XmlObject o = XmlObject.Factory.parse("<a xml:base='abc'>foo<b>bar</b></a>"); //Long - res = o.selectPath("hours-from-dateTime(" + - "current-dateTime()) cast as xs:integer"); + XmlObject[] res = o.selectPath("hours-from-dateTime(" + + "current-dateTime()) cast as xs:integer"); assertEquals(1, res.length); //System.out.println(res[0].schemaType()); XmlLong xl = ((XmlLong) res[0]); Modified: xmlbeans/trunk/src/test/java/xmlcursor/xpath/xbean_xpath/detailed/AxesTest.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xpath/xbean_xpath/detailed/AxesTest.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xpath/xbean_xpath/detailed/AxesTest.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xpath/xbean_xpath/detailed/AxesTest.java Sun Feb 6 01:51:55 2022 @@ -17,13 +17,13 @@ package xmlcursor.xpath.xbean_xpath.deta import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlException; -import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.XmlOptions; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static xmlcursor.common.BasicCursorTestCase.cur; /** * Axes Tested: @@ -35,29 +35,29 @@ import static org.junit.Assert.assertEqu * namespace */ public class AxesTest { - private final String sXmlChild = + private static final String sXmlChild = "<foo> <bar xmlns:pre=\"http://uri.com\" at0='val0'>" + "<pre:baz xmlns:baz='http://uri' baz:at0='val1'/>txt child</bar></foo>"; private final XmlOptions options = new XmlOptions(); - private final String sXmlDesc = + private static final String sXmlDesc = "<foo> <foo xmlns:pre=\"http://uri.com\" at0='val0'>" + "<pre:baz xmlns:baz='http://uri' baz:at0='val1'/>txt child</foo></foo>"; - @Before + @BeforeEach public void setUp() { options.setXPathUseXmlBeans(); } @Test - public void testChildAxisAbbrev() throws XmlException { + void testChildAxisAbbrev() throws XmlException { String sQuery1 = "./foo/bar"; String sExpected = "<bar at0=\"val0\" xmlns:pre=\"http://uri.com\">" + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</bar>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { c.selectPath(sQuery1); assertEquals(1, c.getSelectionCount()); c.toNextSelection(); @@ -74,13 +74,13 @@ public class AxesTest { } @Test - public void testChildAxis() throws XmlException { + void testChildAxis() throws XmlException { String sQuery1 = "./foo/child::bar"; String sExpected = "<bar at0=\"val0\" xmlns:pre=\"http://uri.com\">" + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</bar>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { c.selectPath(sQuery1, options); assertEquals(1, c.getSelectionCount()); c.toNextSelection(); @@ -89,13 +89,13 @@ public class AxesTest { } @Test - public void testChildAxisDot() throws XmlException { + void testChildAxisDot() throws XmlException { String sQuery1 = "$this/foo/./bar"; String sExpected = "<bar at0=\"val0\" xmlns:pre=\"http://uri.com\">" + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</bar>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { c.selectPath(sQuery1, options); assertEquals(1, c.getSelectionCount()); c.toNextSelection(); @@ -104,23 +104,23 @@ public class AxesTest { } @Test - public void testChildAxisDNE() throws XmlException { + void testChildAxisDNE() throws XmlException { String sQuery1 = "$this/foo/./baz"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { c.selectPath(sQuery1, options); assertEquals(0, c.getSelectionCount()); } } @Test - @Ignore + @Disabled public void testDescendantAxis() throws XmlException { String sQuery1 = "./descendant::foo"; String sExpected = "<foo at0=\"val0\" xmlns:pre=\"http://uri.com\">" + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</foo>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); assertEquals("foo", c.getName().getLocalPart()); @@ -132,12 +132,12 @@ public class AxesTest { } @Test - public void testDescendantAxisAbbrev() throws XmlException { + void testDescendantAxisAbbrev() throws XmlException { String sQuery1 = ".//foo"; String sExpected = "<foo at0=\"val0\" xmlns:pre=\"http://uri.com\">" + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</foo>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.selectPath(sQuery1, options); @@ -148,13 +148,13 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testDescAxisDot() throws XmlException { String sQuery1 = "$this/descendant::foo/."; String sExpected = "<foo at0=\"val0\" xmlns:pre=\"http://uri.com\">" + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</foo>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.selectPath(sQuery1, options); assertEquals(1, c.getSelectionCount()); @@ -164,11 +164,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testDescAxisDNE() throws XmlException { String sQuery1 = "$this/descendant::baz"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.selectPath(sQuery1, options); assertEquals(0, c.getSelectionCount()); @@ -176,11 +176,11 @@ public class AxesTest { } @Test - public void testChildAttribute() throws XmlException { + void testChildAttribute() throws XmlException { String sExpected = "<xml-fragment at0=\"val0\" xmlns:pre=\"http://uri.com\"/>"; String sQuery1 = "$this/foo/bar/attribute::at0"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { c.selectPath(sQuery1, options); assertEquals(1, c.getSelectionCount()); c.toNextSelection(); @@ -189,11 +189,11 @@ public class AxesTest { } @Test - public void testChildAttributeAbbrev() throws XmlException { + void testChildAttributeAbbrev() throws XmlException { String sExpected = "<xml-fragment at0=\"val0\" xmlns:pre=\"http://uri.com\"/>"; String sQuery1 = "$this/foo/bar/@at0"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { c.selectPath(sQuery1, options); assertEquals(1, c.getSelectionCount()); c.toNextSelection(); @@ -202,11 +202,11 @@ public class AxesTest { } @Test - public void testDescAttribute() throws XmlException { + void testDescAttribute() throws XmlException { String sExpected = "<xml-fragment at0=\"val0\" xmlns:pre=\"http://uri.com\"/>"; String sQuery1 = "$this//attribute::at0"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.selectPath(sQuery1, options); assertEquals(1, c.getSelectionCount()); @@ -216,11 +216,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testDescendantOrSelfAxis() throws XmlException { String sQuery1 = "./descendant-or-self::foo"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { String[] sExpected = { c.xmlText() , "<foo at0=\"val0\" xmlns:pre=\"http://uri.com\">" + @@ -241,11 +241,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testDescendantOrSelfAxisDot() throws XmlException { String sQuery1 = "./descendant-or-self::foo"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { String[] sExpected = new String[] { c.xmlText() @@ -268,11 +268,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testDescendantOrSelfAxisDNE() throws XmlException { String sQuery1 = "$this/descendant-or-self::baz"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.selectPath(sQuery1, options); assertEquals(0, c.getSelectionCount()); @@ -280,11 +280,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testSelfAxis() throws XmlException { String sQuery1 = "$this/self::foo"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { String sExpected = c.xmlText(); assertEquals(XmlCursor.TokenType.START, c.toNextToken()); @@ -298,10 +298,10 @@ public class AxesTest { } @Test - public void testSelfAxisAbbrev() throws XmlException { + void testSelfAxisAbbrev() throws XmlException { String sQuery1 = "."; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { String sExpected = c.xmlText(); assertEquals(XmlCursor.TokenType.START, c.toNextToken()); @@ -315,11 +315,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testSelfAxisDot() throws XmlException { String sQuery1 = "./self::foo"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { String sExpected = c.xmlText(); assertEquals(XmlCursor.TokenType.START, c.toNextToken()); @@ -333,11 +333,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testSelfAxisDNE() throws XmlException { String sQuery1 = "$this/self::baz"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.selectPath(sQuery1, options); assertEquals(0, c.getSelectionCount()); @@ -345,11 +345,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testNamespaceAxis() throws XmlException { String sQuery1 = "$this/namespace::http://uri.com"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { String sExpected = c.xmlText(); assertEquals(XmlCursor.TokenType.START, c.toNextToken()); @@ -365,11 +365,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testNamespaceAxisDot() throws XmlException { String sQuery1 = "./*/namespace::http://uri.com"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { String sExpected = c.xmlText(); assertEquals(XmlCursor.TokenType.START, c.toNextToken()); @@ -383,11 +383,11 @@ public class AxesTest { } @Test - @Ignore + @Disabled public void testNamespaceAxisDNE() throws XmlException { String sQuery1 = "$this/namespace::*"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlDesc).newCursor()) { + try (XmlCursor c = cur(sXmlDesc)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); assertEquals(XmlCursor.TokenType.TEXT, c.toNextToken()); assertEquals(XmlCursor.TokenType.START, c.toNextToken()); Modified: xmlbeans/trunk/src/test/java/xmlcursor/xpath/xbean_xpath/detailed/NodeTest.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xpath/xbean_xpath/detailed/NodeTest.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xpath/xbean_xpath/detailed/NodeTest.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xpath/xbean_xpath/detailed/NodeTest.java Sun Feb 6 01:51:55 2022 @@ -17,11 +17,11 @@ package xmlcursor.xpath.xbean_xpath.deta import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlException; -import org.apache.xmlbeans.XmlObject; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static xmlcursor.common.BasicCursorTestCase.cur; /** * Nodes Tested: @@ -39,20 +39,20 @@ import static org.junit.Assert.assertEqu */ public class NodeTest { - private String sXmlChild = + private static final String sXmlChild = "<foo> <bar xmlns:pre=\"http://uri.com\" at0='val0'>" + "<pre:baz xmlns:baz='http://uri' baz:at0='val1'/>txt child</bar>" + "</foo>"; - private String sXmlPI = + private static final String sXmlPI = "<foo><?xml-stylesheet target=\"http://someuri\"?></foo>"; @Test - public void testNameTestStar() throws XmlException { + void testNameTestStar() throws XmlException { String sQuery1 = "./*"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { String sExpected = c.xmlText(); c.selectPath(sQuery1); assertEquals(1, c.getSelectionCount()); @@ -62,12 +62,12 @@ public class NodeTest { } @Test - public void testNameTestNCName() throws XmlException { + void testNameTestNCName() throws XmlException { String sQuery1 = "$this//*"; + String sExpected = "<pre:baz baz:at0=\"val1\" " + + "xmlns:baz=\"http://uri\" xmlns:pre=\"http://uri.com\"/>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { - String sExpected = "<pre:baz baz:at0=\"val1\" " + - "xmlns:baz=\"http://uri\" xmlns:pre=\"http://uri.com\"/>"; + try (XmlCursor c = cur(sXmlChild)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.toNextToken(); assertEquals(XmlCursor.TokenType.START, c.toNextToken()); @@ -80,12 +80,12 @@ public class NodeTest { } @Test - public void testNameTestQName_1() throws XmlException { + void testNameTestQName_1() throws XmlException { String sQuery1 = "declare namespace pre=\"http://uri.com\"; $this//pre:*"; + String sExpected = + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\" xmlns:pre=\"http://uri.com\"/>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { - String sExpected = - "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\" xmlns:pre=\"http://uri.com\"/>"; + try (XmlCursor c = cur(sXmlChild)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); assertEquals("foo", c.getName().getLocalPart()); c.selectPath(sQuery1); @@ -97,10 +97,10 @@ public class NodeTest { //test a QName that DNE @Test - public void testNameTestQName_2() throws XmlException { + void testNameTestQName_2() throws XmlException { String sQuery1 = "declare namespace pre=\"http://uri\"; $this//pre:baz"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { + try (XmlCursor c = cur(sXmlChild)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.selectPath(sQuery1); assertEquals(0, c.getSelectionCount()); @@ -108,12 +108,12 @@ public class NodeTest { } @Test - public void testNameTestQName_3() throws XmlException { + void testNameTestQName_3() throws XmlException { String sQuery1 = "$this//bar"; + String sExpected = "<bar at0=\"val0\" xmlns:pre=\"http://uri.com\">" + + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</bar>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { - String sExpected = "<bar at0=\"val0\" xmlns:pre=\"http://uri.com\">" + - "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</bar>"; + try (XmlCursor c = cur(sXmlChild)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.selectPath(sQuery1); assertEquals(1, c.getSelectionCount()); @@ -123,18 +123,18 @@ public class NodeTest { } @Test - public void testNodeTypeComment() { + void testNodeTypeComment() { } @Test - public void testNodeTypeNodeAbbrev() throws XmlException { + void testNodeTypeNodeAbbrev() throws XmlException { String sQuery1 = "$this/foo/*"; + String sExpected = "<bar at0=\"val0\" xmlns:pre=\"http://uri.com\">" + + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</bar>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { - String sExpected = "<bar at0=\"val0\" xmlns:pre=\"http://uri.com\">" + - "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</bar>"; + try (XmlCursor c = cur(sXmlChild)) { c.selectPath(sQuery1); assertEquals(1, c.getSelectionCount()); c.toNextSelection(); @@ -146,13 +146,13 @@ public class NodeTest { * Will not support natively */ @Test - @Ignore + @Disabled public void testNodeTypeNode() throws XmlException { String sQuery1 = "$this/foo/node()"; + String sExpected = "<bar at0=\"val0\" xmlns:pre=\"http://uri.com\">" + + "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</bar>"; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { - String sExpected = "<bar at0=\"val0\" xmlns:pre=\"http://uri.com\">" + - "<pre:baz baz:at0=\"val1\" xmlns:baz=\"http://uri\"/>txt child</bar>"; + try (XmlCursor c = cur(sXmlChild)) { c.selectPath(sQuery1); assertEquals(1, c.getSelectionCount()); c.toNextSelection(); @@ -161,11 +161,12 @@ public class NodeTest { } @Test - @Ignore + @Disabled public void testNodeTypePI() throws XmlException { - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { - String sExpected = "<foo><?xml-stylesheet target=\"http://someuri\"?></foo>"; - String sQuery = "./foo/processing-instruction()"; + String sExpected = "<foo><?xml-stylesheet target=\"http://someuri\"?></foo>"; + String sQuery = "./foo/processing-instruction()"; + + try (XmlCursor c = cur(sXmlChild)) { c.selectPath(sQuery); assertEquals(1, c.getSelectionCount()); c.toNextSelection(); @@ -174,12 +175,12 @@ public class NodeTest { } @Test - @Ignore + @Disabled public void testNodeTypeText() throws XmlException { String sQuery1 = "$this//text()"; + String sExpected = " "; - try (XmlCursor c = XmlObject.Factory.parse(sXmlChild).newCursor()) { - String sExpected = " "; + try (XmlCursor c = cur(sXmlChild)) { assertEquals(XmlCursor.TokenType.START, c.toNextToken()); c.selectPath(sQuery1); assertEquals(1, c.getSelectionCount()); @@ -189,9 +190,9 @@ public class NodeTest { } @Test - @Ignore + @Disabled public void testPI() throws XmlException { - try (XmlCursor c = XmlObject.Factory.parse(sXmlPI).newCursor()) { + try (XmlCursor c = cur(sXmlPI)) { String sExpected = "<?xml-stylesheet target=\"http://someuri\"?>"; String sQuery = "./foo/processing-instruction('xml-stylesheet')"; c.selectPath(sQuery); @@ -202,9 +203,9 @@ public class NodeTest { } @Test - @Ignore + @Disabled public void testPIDNE() throws XmlException { - try (XmlCursor c = XmlObject.Factory.parse(sXmlPI).newCursor()) { + try (XmlCursor c = cur(sXmlPI)) { String sQuery = "./foo/processing-instruction('stylesheet')"; c.selectPath(sQuery); assertEquals(0, c.getSelectionCount()); Modified: xmlbeans/trunk/src/test/java/xmlcursor/xquery/checkin/QueryEngineTests.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xquery/checkin/QueryEngineTests.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xquery/checkin/QueryEngineTests.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xquery/checkin/QueryEngineTests.java Sun Feb 6 01:51:55 2022 @@ -15,15 +15,15 @@ package xmlcursor.xquery.checkin; import org.apache.xmlbeans.XmlObject; -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class QueryEngineTests { // Execute repeated queries to test picking up of the query engine from classpath // This test is following rev 292446 @Test - public void testQueryEngineSelection() throws Exception { + void testQueryEngineSelection() throws Exception { XmlObject o = XmlObject.Factory.parse("<foo><a><b/></a></foo>"); XmlObject[] res = o.execQuery("(//a/b)"); String expectedRes = "<b/>"; Modified: xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/NISTTest.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/NISTTest.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/NISTTest.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/NISTTest.java Sun Feb 6 01:51:55 2022 @@ -18,79 +18,60 @@ import common.Common; import noNamespace.TestCase; import noNamespace.TestSuiteDocument; import noNamespace.TestSuiteDocument.TestSuite.TestGroup; +import org.apache.commons.io.IOUtils; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlObject; -import org.junit.Ignore; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TestWatcher; -import org.junit.runner.Description; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; +import java.util.stream.Stream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; -@Ignore("Too many XMLBeans unrelated errors") -@RunWith(Parameterized.class) +@Disabled("Too many XMLBeans unrelated errors") public class NISTTest { private static ZipFile zf; - @Rule - public final QueryFailed queryLog = new QueryFailed(); - - @SuppressWarnings("DefaultAnnotationParam") - @Parameterized.Parameter(value = 0) - public String groupName; - - @Parameterized.Parameter(value = 1) - public String testName; - - @Parameterized.Parameter(value = 2) - public TestCase testCase; - - private String query; - - @Parameterized.Parameters(name = "{index}: {0} {1}") - public static Iterable<Object[]> files() throws IOException, XmlException { + public static Stream<Arguments> files() throws IOException, XmlException { zf = new ZipFile(Common.getCaseLocation()+"/xbean/xmlcursor/xquery/xmlQuery.zip"); - ZipEntry e = zf.getEntry("testSuite/NIST/files/catalog.xml"); - InputStream is = zf.getInputStream(e); - TestSuiteDocument doc = TestSuiteDocument.Factory.parse(is); - List<Object[]> files = new ArrayList<Object[]>(); - for (TestGroup xg : doc.getTestSuite().getTestGroupArray()) { - String groupName = xg.getName(); - for (TestCase tc : xg.getTestCaseArray()) { - String testName = tc.getName(); - files.add(new Object[]{groupName, testName, tc}); - - // NIST BUG: folder is called testSuite but appears as testsuite in desc. file - String filePath = tc.getFilePath() - .replaceAll("testsuite", "testSuite") - .replace((char) 92, '/'); - tc.setFilePath(filePath); + try (InputStream is = zf.getInputStream(e)) { + TestSuiteDocument doc = TestSuiteDocument.Factory.parse(is); + + List<Arguments> files = new ArrayList<>(); + for (TestGroup xg : doc.getTestSuite().getTestGroupArray()) { + String groupName = xg.getName(); + for (TestCase tc : xg.getTestCaseArray()) { + String testName = tc.getName(); + files.add(Arguments.of(groupName, testName, tc)); + + // NIST BUG: folder is called testSuite but appears as testsuite in desc. file + String filePath = tc.getFilePath() + .replaceAll("testsuite", "testSuite") + .replace((char) 92, '/'); + tc.setFilePath(filePath); + } } + return files.stream(); } - is.close(); - - return files; } - @Test - public void bla() throws Exception { + @ParameterizedTest(name = "{index}: {0} {1}") + @MethodSource("files") + void bla(String groupName, String testName, TestCase testCase) throws Exception { //bad comment syntax in suite - query = getString(testCase.getFilePath()+testCase.getName()+".xq") + String query = getString(testCase.getFilePath() + testCase.getName() + ".xq") .replace("{--", "(:") .replace("--}", ":)"); @@ -106,27 +87,9 @@ public class NISTTest { } private static String getString(String zipFile) throws IOException { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); ZipEntry queryFile = zf.getEntry(zipFile); - InputStream is = zf.getInputStream(queryFile); - byte[] buf = new byte[4096]; - for (int readBytes; (readBytes = is.read(buf)) > -1; ) { - bos.write(buf, 0, readBytes); - } - is.close(); - return new String(bos.toByteArray(), Charset.forName("UTF-8")); - } - - - - private class QueryFailed extends TestWatcher { - @Override - protected void failed(Throwable e, Description description) { - System.out.println( - "Description:\n"+ - testCase.getQuery().getDescription().getStringValue()+ - "\n\nQuery:\n"+ - query); + try (InputStream is = zf.getInputStream(queryFile)) { + return new String(IOUtils.toByteArray(is), StandardCharsets.UTF_8); } } } Modified: xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/StoreTestsXqrl.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/StoreTestsXqrl.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/StoreTestsXqrl.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/StoreTestsXqrl.java Sun Feb 6 01:51:55 2022 @@ -17,42 +17,37 @@ package xmlcursor.xquery.detailed; import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlObject; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.*; //Used to be a checkin public class StoreTestsXqrl { - private void doTokenTest(String xml) throws Exception { + @ParameterizedTest + @ValueSource(strings = { + "<foo xmlns=\"foo.com\"><bar>1</bar></foo>", + "<foo><!--comment--><?target foo?></foo>", + "<foo>a<bar>b</bar>c<bar>d</bar>e</foo>", + "<foo xmlns:x=\"y\"><bar xmlns:x=\"z\"/></foo>", + "<foo x=\"y\" p=\"r\"/>", + "<bar>xxxxsssssssssssssss</bar>" + }) + void doSaveTest(String xml) throws Exception { + if (xml.startsWith("<bar>")) xml = xml.replace("s", "<foo>aaa</foo>bbb"); + try (XmlCursor c = XmlObject.Factory.parse(xml).newCursor(); - XmlCursor cq = c.execQuery(".")) { + XmlCursor cq = c.execQuery(".")) { String s = cq.xmlText(); assertEquals(s, xml); } } - private void doSaveTest(String xml) throws Exception { - doTokenTest(xml); - } - @Test - public void testSaving() throws Exception { - doSaveTest("<foo xmlns=\"foo.com\"><bar>1</bar></foo>"); - doSaveTest("<foo><!--comment--><?target foo?></foo>"); - doSaveTest("<foo>a<bar>b</bar>c<bar>d</bar>e</foo>"); - doSaveTest("<foo xmlns:x=\"y\"><bar xmlns:x=\"z\"/></foo>"); - doSaveTest("<foo x=\"y\" p=\"r\"/>"); - - String s = "<foo>aaa</foo>bbb"; - s = s + s + s + s + s + s + s + s + s + s + s + s + s + s + s; - s = "<bar>xxxx" + s + "</bar>"; - - doSaveTest(s); - - XmlObject x = - XmlObject.Factory.parse("<foo xmlns:a='a.com'><bar xmlns:a='b.com'/></foo>"); + void testSaving() throws Exception { + XmlObject x = XmlObject.Factory.parse("<foo xmlns:a='a.com'><bar xmlns:a='b.com'/></foo>"); try (XmlCursor c = x.newCursor()) { c.toFirstChild(); @@ -71,30 +66,21 @@ public class StoreTestsXqrl { } } - public void testTextFrag(String actual, String expected) { - String pre = "<xml-fragment>"; - - String post = "</xml-fragment>"; - - assertTrue(actual.startsWith(pre)); - assertTrue(actual.endsWith(post)); - - assertEquals(expected, actual.substring( - pre.length(), actual.length() - post.length())); - } - // // Make sure XQuery works (tests the saver too) // @Test - public void testXQuery() - throws Exception { + void testXQuery() throws Exception { + String pre = "<xml-fragment>"; + String post = "</xml-fragment>"; try (XmlCursor c = XmlObject.Factory.parse( "<foo><bar>1</bar><bar>2</bar></foo>").newCursor(); XmlCursor cq = c.execQuery("for $b in //bar order by ($b) descending return $b")) { - String s = cq.xmlText(); + String actual = cq.xmlText(); - testTextFrag(s, "<bar>2</bar><bar>1</bar>"); + assertTrue(actual.startsWith(pre)); + assertTrue(actual.endsWith(post)); + assertEquals("<bar>2</bar><bar>1</bar>", actual.substring(pre.length(), actual.length() - post.length())); } try (XmlCursor c = XmlObject.Factory.parse("<foo></foo>").newCursor()) { @@ -105,14 +91,13 @@ public class StoreTestsXqrl { try (XmlCursor cq = c.execQuery(".")) { String s = cq.xmlText(); - assertEquals("<foo><boo:boo xmlns:boo=\"boo.com\"/></foo>", - s); + assertEquals("<foo><boo:boo xmlns:boo=\"boo.com\"/></foo>", s); } } } @Test - public void testPathing() throws Exception { + void testPathing() throws Exception { XmlObject x = XmlObject.Factory.parse( "<foo><bar>1</bar><bar>2</bar><bar>3</bar></foo>"); @@ -129,11 +114,9 @@ public class StoreTestsXqrl { assertTrue(c.toNextSelection()); assertEquals("<bar>3</bar>", c.xmlText()); - assertTrue(!c.toNextSelection()); + assertFalse(c.toNextSelection()); - x = - XmlObject.Factory.parse( - "<foo><bar x='1'/><bar x='2'/><bar x='3'/></foo>"); + x = XmlObject.Factory.parse("<foo><bar x='1'/><bar x='2'/><bar x='3'/></foo>"); } try (XmlCursor c = x.newCursor()) { @@ -152,10 +135,9 @@ public class StoreTestsXqrl { assertTrue(c.currentTokenType().isAttr()); assertEquals("3", c.getTextValue()); - assertTrue(!c.toNextSelection()); + assertFalse(c.toNextSelection()); - x = XmlObject.Factory.parse( - "<foo><bar>1</bar><bar>2</bar><bar>3</bar></foo>"); + x = XmlObject.Factory.parse("<foo><bar>1</bar><bar>2</bar><bar>3</bar></foo>"); } try (XmlCursor c = x.newCursor()) { @@ -173,7 +155,7 @@ public class StoreTestsXqrl { assertTrue(c.currentTokenType().isText()); assertEquals("3", c.getChars()); - assertTrue(!c.toNextSelection()); + assertFalse(c.toNextSelection()); } } } Modified: xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/XQueryTest.java URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/XQueryTest.java?rev=1897795&r1=1897794&r2=1897795&view=diff ============================================================================== --- xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/XQueryTest.java (original) +++ xmlbeans/trunk/src/test/java/xmlcursor/xquery/detailed/XQueryTest.java Sun Feb 6 01:51:55 2022 @@ -14,34 +14,37 @@ */ package xmlcursor.xquery.detailed; -import org.apache.xmlbeans.*; -import org.junit.Ignore; -import org.junit.Test; +import org.apache.xmlbeans.XmlCursor; +import org.apache.xmlbeans.XmlException; +import org.apache.xmlbeans.XmlLong; +import org.apache.xmlbeans.XmlObject; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import test.xbean.xmlcursor.xQueryInput.EmpT; import tools.util.JarUtil; import java.io.IOException; -import java.io.InputStream; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static xmlcursor.common.BasicCursorTestCase.jcur; +import static xmlcursor.common.BasicCursorTestCase.jobj; public class XQueryTest { @Test - @Ignore("XQuery on Cursor is invalid") + @Disabled("XQuery on Cursor is invalid") public void testSimple() throws XmlException, IOException { String xq = "for $e in //employee where $e/name='Bob' return $e "; String xq1 = "for $e in //employee return $e "; - InputStream input = JarUtil.getResourceFromJarasStream("xbean/xmlcursor/XQueryInput.xml"); - XmlObject o = XmlObject.Factory.parse(input); + XmlObject o = jobj("xbean/xmlcursor/XQueryInput.xml"); try (XmlCursor c = o.newCursor(); XmlCursor c1 = c.execQuery(xq)) { c1.toFirstContentToken(); assertEquals("<employee>\n" + - "\t\t<name>Bob</name>\n" + - "\t\t<ssn>1000</ssn>\n" + - "\t</employee>", c1.xmlText()); + "\t\t<name>Bob</name>\n" + + "\t\t<ssn>1000</ssn>\n" + + "\t</employee>", c1.xmlText()); } XmlObject[] res = o.execQuery(xq); @@ -50,58 +53,48 @@ public class XQueryTest { } @Test - public void testObjConstruction() throws XmlException, IOException { + void testObjConstruction() throws XmlException, IOException { String query = JarUtil.getResourceFromJar("xbean/xmlcursor/xquery/Constructor.xq"); - InputStream input = JarUtil.getResourceFromJarasStream("xbean/xmlcursor/XQueryInput.xml"); - XmlObject o = XmlObject.Factory.parse(input); + XmlObject o = jobj("xbean/xmlcursor/XQueryInput.xml"); //via Object XmlObject[] reslt = o.execQuery(query); assertEquals(3, reslt.length); - assertEquals("<person><name>Bob</name></person>", - reslt[0].xmlText()); - assertEquals("<person><name>Beth</name></person>", - reslt[1].xmlText()); - assertEquals("<person><name>NotBob</name></person>", - reslt[2].xmlText()); + assertEquals("<person><name>Bob</name></person>", reslt[0].xmlText()); + assertEquals("<person><name>Beth</name></person>", reslt[1].xmlText()); + assertEquals("<person><name>NotBob</name></person>", reslt[2].xmlText()); try (XmlCursor c = o.newCursor()) { - int i = 0; - while (i++ < 2) { + for (int i = 0; i < 2; i++) { //via Cursor--new try (XmlCursor c1 = c.execQuery(query)) { //c.dispose(); assertEquals(XmlCursor.TokenType.STARTDOC, c1.currentTokenType()); assertEquals(XmlCursor.TokenType.START, c1.toNextToken()); - assertEquals("<person><name>Bob</name></person>", - c1.xmlText()); + assertEquals("<person><name>Bob</name></person>", c1.xmlText()); // assertTrue(c1.toNextSelection()); assertTrue(c1.toNextSibling()); - assertEquals("<person><name>Beth</name></person>", - c1.xmlText()); + assertEquals("<person><name>Beth</name></person>", c1.xmlText()); //assertTrue(c1.toNextSelection()); assertTrue(c1.toNextSibling()); - assertEquals("<person><name>NotBob</name></person>", - c1.xmlText()); + assertEquals("<person><name>NotBob</name></person>", c1.xmlText()); } } } } @Test - public void testJoin() throws XmlException, IOException { + void testJoin() throws XmlException, IOException { String query = JarUtil.getResourceFromJar("xbean/xmlcursor/xquery/Join.xq"); - InputStream input = JarUtil.getResourceFromJarasStream("xbean/xmlcursor/XQueryInput.xml"); - XmlObject o = XmlObject.Factory.parse(input); + XmlObject o = jobj("xbean/xmlcursor/XQueryInput.xml"); try (XmlCursor c = o.newCursor(); XmlCursor c1 = c.execQuery(query)) { c1.toFirstContentToken(); assertEquals("<result>" + - "<ssn>1000</ssn>,\n" + - "\t\t<name>Bob</name>,\n" + - "\t\t<name>NotBob</name>" + - "</result>", - c1.xmlText()); + "<ssn>1000</ssn>,\n" + + "\t\t<name>Bob</name>,\n" + + "\t\t<name>NotBob</name>" + + "</result>", c1.xmlText()); /* assertEquals("<xml-fragment>" + "<result>" + "<ssn>1000</ssn>,\n" + @@ -125,51 +118,45 @@ public class XQueryTest { } @Test - public void testTextSequenceRootObject() throws XmlException, IOException { + void testTextSequenceRootObject() throws XmlException, IOException { //String query = "$this//text()"; String query = ".//text()"; - InputStream input = JarUtil.getResourceFromJarasStream("xbean/xmlcursor/XQueryInput.xml"); - XmlObject o = XmlObject.Factory.parse(input); + XmlObject o = jobj("xbean/xmlcursor/XQueryInput.xml"); XmlObject[] res = o.execQuery(query); assertEquals(19, res.length); - input.close(); } @Test - @Ignore("Cursor support for //text() is invalid") + @Disabled("Cursor support for //text() is invalid") public void testTextSequenceRootCursor() throws XmlException, IOException { String query = ".//text()"; - InputStream input = JarUtil.getResourceFromJarasStream("xbean/xmlcursor/XQueryInput.xml"); - XmlObject o = XmlObject.Factory.parse(input); + XmlObject o = jobj("xbean/xmlcursor/XQueryInput.xml"); try (XmlCursor c = o.newCursor(); XmlCursor c1 = c.execQuery(query)) { - assertEquals(XmlCursor.TokenType.TEXT,c1.toNextToken()); + assertEquals(XmlCursor.TokenType.TEXT, c1.toNextToken()); //assertEquals(19, c1.getSelectionCount()); c.close(); // make sure this doesn't screw things up while (c1.toNextSibling()) { assertEquals(XmlCursor.TokenType.TEXT, c1.currentTokenType()); } c1.toStartDoc(); - assertEquals("<xml-fragment>Bob</xml-fragment>", - c1.xmlText()); + assertEquals("<xml-fragment>Bob</xml-fragment>", c1.xmlText()); } } @Test - @Ignore("still bugged") + @Disabled("still bugged") public void testDocumentFunc() throws XmlException, IOException { //String query = "<result>{$this},{count(//employee)}</result>"; String query = "<result>{.},{count(//employee)}</result>"; - InputStream input = JarUtil.getResourceFromJarasStream("xbean/xmlcursor/XQueryInput.xml"); - try (XmlCursor c = XmlObject.Factory.parse(input).newCursor(); + try (XmlCursor c = jcur("xbean/xmlcursor/XQueryInput.xml"); XmlCursor c1 = c.execQuery(query)) { - assertEquals("", - c1.xmlText()); + assertEquals("", c1.xmlText()); } } @Test - public void testTextAtOddPlaces() throws Exception { + void testTextAtOddPlaces() throws Exception { //String query = "<result>{$this},{count(//employee)}</result>"; String query = "<result>{.},{count(//employee)}</result>"; String input = "<foo><a><b>text</b>more text</a></foo>"; @@ -188,19 +175,17 @@ public class XQueryTest { } @Test - @Ignore + @Disabled public void testMultiDocJoin() throws XmlException, IOException { String query = JarUtil.getResourceFromJar("xbean/xmlcursor/xquery/2DocJoin.xq"); - InputStream input = JarUtil.getResourceFromJarasStream("xbean/xmlcursor/XQueryInput.xml"); - try (XmlCursor c = XmlObject.Factory.parse(input).newCursor(); + try (XmlCursor c = jcur("xbean/xmlcursor/XQueryInput.xml"); XmlCursor c1 = c.execQuery(query)) { - assertEquals("", - c1.xmlText()); + assertEquals("", c1.xmlText()); } } @Test - public void testFunction() throws Exception { + void testFunction() throws Exception { String query = " declare function local:summary($emps as element(employee)*) \n" + " as element(dept)*\n" + @@ -245,20 +230,17 @@ public class XQueryTest { XmlObject o = XmlObject.Factory.parse(xml); XmlObject[] res = o.execQuery(query); assertEquals(2, res.length); - assertEquals("<dept><deptno>7</deptno><headcount>2</headcount><payroll>30</payroll></dept>", - res[0].xmlText()); - assertEquals("<dept><deptno>5</deptno><headcount>1</headcount><payroll>40</payroll></dept>", - res[1].xmlText()); + assertEquals("<dept><deptno>7</deptno><headcount>2</headcount><payroll>30</payroll></dept>", res[0].xmlText()); + assertEquals("<dept><deptno>5</deptno><headcount>1</headcount><payroll>40</payroll></dept>", res[1].xmlText()); try (XmlCursor c = o.newCursor(); XmlCursor c1 = c.execQuery(query)) { c1.toFirstContentToken(); - assertEquals(res[0].xmlText(), - c1.xmlText()); + assertEquals(res[0].xmlText(), c1.xmlText()); } } @Test - public void testType() throws Exception { + void testType() throws Exception { String xml = "<a><b></b><b></b></a>"; String query = "count(//b)"; XmlObject o = XmlObject.Factory.parse(xml); @@ -269,7 +251,7 @@ public class XQueryTest { } @Test - public void testQueryComment() throws Exception { + void testQueryComment() throws Exception { String xml = "<a><b></b><b></b></a>"; String query = "(:comment:) count(//b)"; XmlObject o = XmlObject.Factory.parse(xml); @@ -280,7 +262,7 @@ public class XQueryTest { } @Test - @Ignore + @Disabled public void testStandaloneFunction() throws Exception { String query = "<results>\n" + --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
