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 ContainsTest 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 ContainsTest(String name) { 96 super(name); 97 } 98 99 public void testContainsNumber() throws JaxenException 100 { 101 XPath xpath = new DOMXPath( "contains(33, '3')" ); 102 Boolean result = (Boolean ) xpath.evaluate( doc ); 103 assertEquals(Boolean.TRUE, result); 104 } 105 106 public void testContainsString() throws JaxenException 107 { 108 XPath xpath = new DOMXPath( "contains('test', 'es')" ); 109 Boolean result = (Boolean ) xpath.evaluate( doc ); 110 assertEquals(Boolean.TRUE, result); 111 } 112 113 public void testContainsString3() throws JaxenException 114 { 115 XPath xpath = new DOMXPath( "contains('superlative', 'superlative')" ); 116 Boolean result = (Boolean ) xpath.evaluate( doc ); 117 assertEquals(Boolean.TRUE, result); 118 } 119 120 public void testContainsNumber2() throws JaxenException 121 { 122 XPath xpath = new DOMXPath( "contains(43, '0')" ); 123 Boolean result = (Boolean ) xpath.evaluate( doc ); 124 assertEquals(Boolean.FALSE, result); 125 } 126 127 public void testContainsString2() throws JaxenException 128 { 129 XPath xpath = new DOMXPath( "contains('1234567890', '1234567a')" ); 130 Boolean result = (Boolean ) xpath.evaluate( doc ); 131 assertEquals(Boolean.FALSE, result); 132 } 133 134 135 public void testEmptyStringContainsNonEmptyString() throws JaxenException 136 { 137 XPath xpath = new DOMXPath( "contains('', 'a')" ); 138 Boolean result = (Boolean ) xpath.evaluate( doc ); 139 assertEquals(Boolean.FALSE, result); 140 } 141 142 public void testEmptyStringContainsEmptyString() throws JaxenException 143 { 144 XPath xpath = new DOMXPath( "contains('', '')" ); 145 Boolean result = (Boolean ) xpath.evaluate( doc ); 146 assertEquals(Boolean.TRUE, result); 147 } 148 149 public void testContainsEmptyString() throws JaxenException 150 { 151 XPath xpath = new DOMXPath( "contains('a', '')" ); 152 Boolean result = (Boolean ) xpath.evaluate( doc ); 153 assertEquals(Boolean.TRUE, result); 154 } 155 156 public void testContainsFunctionRequiresAtLeastTwoArguments() 157 throws JaxenException { 158 159 BaseXPath xpath = new DOMXPath("contains('a')"); 160 161 try { 162 xpath.selectNodes(doc); 163 fail("Allowed contains function with one argument"); 164 } 165 catch (FunctionCallException ex) { 166 assertNotNull(ex.getMessage()); 167 } 168 169 } 170 171 public void testContainsFunctionRequiresAtMostTwoArguments() 172 throws JaxenException { 173 174 BaseXPath xpath = new DOMXPath("contains('a', 'a', 'a')"); 175 176 try { 177 xpath.selectNodes(doc); 178 fail("Allowed contains function with three arguments"); 179 } 180 catch (FunctionCallException ex) { 181 assertNotNull(ex.getMessage()); 182 } 183 184 } 185 186 } 187 | Popular Tags |