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.dom.DOMXPath; 74 import org.w3c.dom.Document ; 75 76 80 public class FloorTest extends TestCase { 81 82 private Document doc; 83 84 public void setUp() throws ParserConfigurationException 85 { 86 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 87 factory.setNamespaceAware(true); 88 DocumentBuilder builder = factory.newDocumentBuilder(); 89 doc = builder.newDocument(); 90 org.w3c.dom.Element a = doc.createElementNS("", "a"); 91 doc.appendChild(a); 92 } 93 94 95 public FloorTest(String name) { 96 super(name); 97 } 98 99 100 101 public void testFloor() throws JaxenException { 102 103 BaseXPath xpath = new DOMXPath("floor(1.5)"); 104 105 Object result = xpath.evaluate(doc); 106 assertEquals(1, ((Double ) result).doubleValue(), 0.0001); 107 108 } 109 110 public void testNegativeFloor() throws JaxenException { 111 112 BaseXPath xpath = new DOMXPath("floor(-1.5)"); 113 114 Object result = xpath.evaluate(doc); 115 assertEquals(-2, ((Double ) result).doubleValue(), 0.0001); 116 117 } 118 119 public void testNaNFloorIsNaN() throws JaxenException { 120 BaseXPath xpath = new DOMXPath("floor(1.0 div 0.0 - 2.0 div 0.0)"); 121 double result = ((Double ) xpath.evaluate(doc)).doubleValue(); 122 assertTrue(Double.isNaN(result)); 123 } 124 125 public void testInfFloorIsInf() throws JaxenException { 126 BaseXPath xpath = new DOMXPath("floor(1.0 div 0.0)"); 127 double result = ((Double ) xpath.evaluate(doc)).doubleValue(); 128 assertTrue(Double.isInfinite(result)); 129 assertTrue(result > 0); 130 } 131 132 public void testNegativeInfFloorIsNegativeInf() throws JaxenException { 133 BaseXPath xpath = new DOMXPath("floor(-1.0 div 0.0)"); 134 double result = ((Double ) xpath.evaluate(doc)).doubleValue(); 135 assertTrue(Double.isInfinite(result)); 136 assertTrue(result < 0); 137 } 138 139 public void testFloorFunctionRequiresAtLeastArgument() 140 throws JaxenException { 141 142 BaseXPath xpath = new DOMXPath("floor()"); 143 144 try { 145 xpath.selectNodes(doc); 146 fail("Allowed floor function with no arguments"); 147 } 148 catch (FunctionCallException ex) { 149 assertNotNull(ex.getMessage()); 150 } 151 152 } 153 154 public void testBooleanFunctionRequiresExactlyOneArgument() 155 throws JaxenException { 156 157 BaseXPath xpath = new DOMXPath("floor(2.2, 1.2)"); 158 159 try { 160 xpath.selectNodes(doc); 161 fail("Allowed floor function with two arguments"); 162 } 163 catch (FunctionCallException ex) { 164 assertNotNull(ex.getMessage()); 165 } 166 167 } 168 169 } 170 | Popular Tags |