blob: 3fb770d6d756d31fe2416a312b87e10e76e723ab [file] [log] [blame]
/* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package xmlcursor.xpath.complex.detailed;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;
import org.junit.Test;
import xmlcursor.common.Common;
import javax.xml.namespace.QName;
import static org.junit.Assert.assertEquals;
public class XPathNodeTest {
@Test
public void testNodeEquality() throws Exception {
XmlCursor c = XmlObject.Factory.parse(
"<root><book isbn='012345' id='09876'/></root>")
.newCursor();
c.selectPath("//book[@isbn='012345'] is //book[@id='09876']");
assertEquals(1, c.getSelectionCount());
c.toNextSelection();
assertEquals(Common.wrapInXmlFrag("true"), c.xmlText());
}
@Test
public void testNodeOrder() throws Exception {
XmlCursor c = XmlObject.Factory.parse(
"<root><book isbn='012345'/><book id='09876'/></root>")
.newCursor();
c.selectPath("//book[@isbn='012345'] << //book[@id='09876']");
assertEquals(1, c.getSelectionCount());
c.toNextSelection();
assertEquals(Common.wrapInXmlFrag("true"), c.xmlText());
c.selectPath("//book[@isbn='012345'] >> //book[@id='09876']");
assertEquals(1, c.getSelectionCount());
c.toNextSelection();
assertEquals(Common.wrapInXmlFrag("false"), c.xmlText());
}
@Test
public void testParent() throws Exception {
String input = "<A><B><C></C></B></A>";
XmlObject o;
XmlCursor c = XmlObject.Factory.parse(input).newCursor();
c.toFirstContentToken();
c.toFirstChild();
c.toFirstChild();
o = c.getObject();
assertEquals("<C/>", o.newCursor().xmlText());
XmlObject[] res = o.selectPath("..");
assertEquals(1, res.length);
assertEquals("<B><C/></B>", res[0].newCursor().xmlText());
}
@Test
public void testParent1() throws Exception {
String input =
"<AttributeCertificate " +
"xmlns=\"http://www.eurecom.fr/security/xac#\" " +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
"<Content>" +
"<Validity>" +
"<ValidityFrom>2005-02-10T11:02:57.590+01:00</ValidityFrom>" +
"<ValidityTo>2006-02-10T11:02:57.590+01:00</ValidityTo>" +
"</Validity></Content></AttributeCertificate>";
XmlObject o;
XmlCursor c = XmlObject.Factory.parse(input).newCursor();
c.toFirstContentToken();
c.toFirstChild();
c.toFirstChild();
o = c.getObject();
QName qn = o.newCursor().getName();
assertEquals("http://www.eurecom.fr/security/xac#", qn.getNamespaceURI());
assertEquals("Validity", qn.getLocalPart());
XmlObject[] res = o.selectPath("..");
assertEquals(1, res.length);
qn = res[0].newCursor().getName();
assertEquals("http://www.eurecom.fr/security/xac#", qn.getNamespaceURI());
assertEquals("Content", qn.getLocalPart());
}
}