1 61 62 package org.jaxen.function; 63 64 import java.util.List ; 65 66 import javax.xml.parsers.DocumentBuilder ; 67 import javax.xml.parsers.DocumentBuilderFactory ; 68 import javax.xml.parsers.ParserConfigurationException ; 69 70 import junit.framework.TestCase; 71 72 import org.jaxen.BaseXPath; 73 import org.jaxen.FunctionCallException; 74 import org.jaxen.JaxenException; 75 import org.jaxen.dom.DOMXPath; 76 import org.w3c.dom.Document ; 77 78 82 public class LastTest extends TestCase { 83 84 private Document doc; 85 86 public void setUp() throws ParserConfigurationException 87 { 88 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 89 factory.setNamespaceAware(true); 90 DocumentBuilder builder = factory.newDocumentBuilder(); 91 doc = builder.newDocument(); 92 } 93 94 95 public LastTest(String name) { 96 super(name); 97 } 98 99 public void testLastFunction() 101 throws JaxenException { 102 103 BaseXPath xpath = new DOMXPath("//x[position()=last()]"); 104 org.w3c.dom.Element a = doc.createElementNS("", "a"); 105 org.w3c.dom.Element b = doc.createElementNS("", "b"); 106 doc.appendChild(a); 107 a.appendChild(b); 108 org.w3c.dom.Element x2 = doc.createElementNS("", "x"); 109 org.w3c.dom.Element x3 = doc.createElementNS("", "x"); 110 org.w3c.dom.Element x4 = doc.createElementNS("", "x"); 111 a.appendChild(x4); 112 b.appendChild(x2); 113 b.appendChild(x3); 114 x2.appendChild(doc.createTextNode("2")); 115 x3.appendChild(doc.createTextNode("3")); 116 x4.appendChild(doc.createTextNode("4")); 117 118 List result = xpath.selectNodes(doc); 119 assertEquals(2, result.size()); 120 assertEquals(x3, result.get(0)); 121 assertEquals(x4, result.get(1)); 122 123 } 124 125 public void testLastFunctionAllowsNoArguments() throws JaxenException 126 { 127 try 128 { 129 BaseXPath xpath = new DOMXPath("//x[position()=last(.)]"); 130 org.w3c.dom.Element a = doc.createElementNS("", "a"); 131 org.w3c.dom.Element b = doc.createElementNS("", "b"); 132 doc.appendChild(a); 133 a.appendChild(b); 134 org.w3c.dom.Element x2 = doc.createElementNS("", "x"); 135 org.w3c.dom.Element x3 = doc.createElementNS("", "x"); 136 org.w3c.dom.Element x4 = doc.createElementNS("", "x"); 137 a.appendChild(x4); 138 b.appendChild(x2); 139 b.appendChild(x3); 140 x2.appendChild(doc.createTextNode("2")); 141 x3.appendChild(doc.createTextNode("3")); 142 x4.appendChild(doc.createTextNode("4")); 143 144 xpath.selectNodes(doc); 145 fail("last() function took arguments"); 146 } 147 catch (FunctionCallException e) 148 { 149 assertEquals("last() requires no arguments.", e.getMessage()); 150 } 151 } 152 153 154 155 156 } 157 | Popular Tags |