1 61 62 package org.jaxen.function; 63 64 import java.io.IOException ; 65 import java.util.List ; 66 67 import javax.xml.parsers.DocumentBuilder ; 68 import javax.xml.parsers.DocumentBuilderFactory ; 69 import javax.xml.parsers.ParserConfigurationException ; 70 71 import junit.framework.TestCase; 72 73 import org.jaxen.FunctionCallException; 74 import org.jaxen.JaxenException; 75 import org.jaxen.XPath; 76 import org.jaxen.dom.DOMXPath; 77 import org.w3c.dom.Attr ; 78 import org.w3c.dom.Document ; 79 import org.w3c.dom.ProcessingInstruction ; 80 import org.w3c.dom.Text ; 81 import org.xml.sax.SAXException ; 82 83 87 public class NamespaceURITest extends TestCase { 88 89 private Document doc; 90 91 public void setUp() throws ParserConfigurationException , SAXException , IOException 92 { 93 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 94 factory.setNamespaceAware(true); 95 DocumentBuilder builder = factory.newDocumentBuilder(); 96 doc = builder.parse( "xml/basic.xml" ); 97 } 98 99 100 public NamespaceURITest(String name) { 101 super(name); 102 } 103 104 public void testNamespaceURIOfNumber() throws JaxenException 105 { 106 try 107 { 108 XPath xpath = new DOMXPath( "namespace-uri(3)" ); 109 xpath.selectNodes( doc ); 110 fail("namespace-uri of non-node-set"); 111 } 112 catch (FunctionCallException e) 113 { 114 assertEquals("The argument to the namespace-uri function must be a node-set", e.getMessage()); 115 } 116 } 117 118 public void testNamespaceURINoArguments() throws JaxenException 119 { 120 XPath xpath = new DOMXPath( "namespace-uri()" ); 121 List results = xpath.selectNodes( doc ); 122 assertEquals("", results.get(0)); 123 } 124 125 public void testNamespaceURIOfEmptyNodeSetIsEmptyString() throws JaxenException 126 { 127 XPath xpath = new DOMXPath( "namespace-uri(/aaa)" ); 128 String result = (String ) xpath.evaluate(doc); 129 assertEquals("", result); 130 } 131 132 public void testNamespaceURIOfProcessingInstructionIsEmptyString() throws JaxenException 133 { 134 XPath xpath = new DOMXPath( "namespace-uri(/processing-instruction())" ); 135 ProcessingInstruction pi = doc.createProcessingInstruction("target", "value"); 136 doc.appendChild(pi); 137 String result = (String ) xpath.evaluate(doc); 138 assertEquals("", result); 139 } 140 141 public void testNamespaceURIOfAttribute() throws JaxenException 142 { 143 XPath xpath = new DOMXPath( "namespace-uri(/*/@*)" ); 144 Attr a = doc.createAttribute("name"); 145 doc.getDocumentElement().setAttributeNode(a); 146 Object result = (String ) xpath.evaluate(doc); 147 assertEquals("", result); 148 } 149 150 public void testNamespaceURIOfTextIsEmptyString() throws JaxenException 151 { 152 XPath xpath = new DOMXPath( "namespace-uri(/*/text())" ); 153 Text c = doc.createTextNode("test"); 154 doc.getDocumentElement().appendChild(c); 155 String result = (String ) xpath.evaluate(doc); 156 assertEquals("", result); 157 } 158 159 public void testNamespaceURIRequiresAtMostOneArgument() throws JaxenException 160 { 161 XPath xpath = new DOMXPath( "namespace-uri(/*, /*)" ); 162 try { 163 xpath.evaluate(doc); 164 fail("Allowed namespace-uri function with no arguments"); 165 } 166 catch (FunctionCallException ex) { 167 assertNotNull(ex.getMessage()); 168 } 169 } 170 171 public void testNamespaceURIOfNamespaceIsNull() throws JaxenException 172 { 173 XPath xpath = new DOMXPath( "namespace-uri(/*/namespace::node())" ); 174 String result = (String ) xpath.evaluate(doc); 175 assertEquals("", result); 176 } 177 } 178 | Popular Tags |