1 61 62 package org.jaxen.function; 63 64 import javax.xml.parsers.DocumentBuilder ; 65 import javax.xml.parsers.DocumentBuilderFactory ; 66 import javax.xml.parsers.ParserConfigurationException ; 67 68 import junit.framework.TestCase; 69 70 import org.jaxen.BaseXPath; 71 import org.jaxen.FunctionCallException; 72 import org.jaxen.JaxenException; 73 import org.jaxen.XPath; 74 import org.jaxen.dom.DOMXPath; 75 import org.w3c.dom.Document ; 76 77 81 public class SubstringAfterTest extends TestCase { 82 83 private Document doc; 84 85 public void setUp() throws ParserConfigurationException 86 { 87 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 88 factory.setNamespaceAware(true); 89 DocumentBuilder builder = factory.newDocumentBuilder(); 90 doc = builder.newDocument(); 91 doc.appendChild(doc.createElement("root")); 92 } 93 94 95 public SubstringAfterTest(String name) { 96 super(name); 97 } 98 99 public void testSubstringAfterNumber() throws JaxenException 100 { 101 XPath xpath = new DOMXPath( "substring-after(33, '3')" ); 102 String result = (String ) xpath.evaluate( doc ); 103 assertEquals("3", result); 104 } 105 106 public void testSubstringAfterString() throws JaxenException 107 { 108 XPath xpath = new DOMXPath( "substring-after('test', 'es')" ); 109 String result = (String ) xpath.evaluate( doc ); 110 assertEquals("t", result); 111 } 112 113 public void testSubstringAfterString4() throws JaxenException 114 { 115 XPath xpath = new DOMXPath( "substring-after('superlative', 'superlative')" ); 116 String result = (String ) xpath.evaluate( doc ); 117 assertEquals("", result); 118 } 119 120 public void testSubstringAfterNumber2() throws JaxenException 121 { 122 XPath xpath = new DOMXPath( "substring-after(43, '0')" ); 123 String result = (String ) xpath.evaluate( doc ); 124 assertEquals("", result); 125 } 126 127 public void testSubstringAfterString2() throws JaxenException 128 { 129 XPath xpath = new DOMXPath( "substring-after('1234567890', '1234567a')" ); 130 String result = (String ) xpath.evaluate( doc ); 131 assertEquals("", result); 132 } 133 134 135 public void testSubstringAfterString3() throws JaxenException 136 { 137 XPath xpath = new DOMXPath( "substring-after('1234567890', '456')" ); 138 String result = (String ) xpath.evaluate( doc ); 139 assertEquals("7890", result); 140 } 141 142 143 public void testEmptyStringSubstringAfterNonEmptyString() throws JaxenException 144 { 145 XPath xpath = new DOMXPath( "substring-after('', 'a')" ); 146 String result = (String ) xpath.evaluate( doc ); 147 assertEquals("", result); 148 } 149 150 public void testEmptyStringBeforeEmptyString() throws JaxenException 151 { 152 XPath xpath = new DOMXPath( "substring-after('', '')" ); 153 String result = (String ) xpath.evaluate( doc ); 154 assertEquals("", result); 155 } 156 157 public void testSubstringAfterEmptyString() throws JaxenException 158 { 159 XPath xpath = new DOMXPath( "substring-after('a', '')" ); 160 String result = (String ) xpath.evaluate( doc ); 161 assertEquals("a", result); 162 } 163 164 public void testSubstringAfterFunctionRequiresAtLeastTwoArguments() 165 throws JaxenException { 166 167 BaseXPath xpath = new DOMXPath("substring-after('a')"); 168 169 try { 170 xpath.selectNodes(doc); 171 fail("Allowed substring-after function with one argument"); 172 } 173 catch (FunctionCallException ex) { 174 assertNotNull(ex.getMessage()); 175 } 176 177 } 178 179 public void testSubstringAfterFunctionRequiresAtMostTwoArguments() 180 throws JaxenException { 181 182 BaseXPath xpath = new DOMXPath("substring-after('a', 'a', 'a')"); 183 184 try { 185 xpath.selectNodes(doc); 186 fail("Allowed substring-after function with three arguments"); 187 } 188 catch (FunctionCallException ex) { 189 assertNotNull(ex.getMessage()); 190 } 191 192 } 193 194 } 195 | Popular Tags |