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 RoundTest 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 RoundTest(String name) { 96 super(name); 97 } 98 99 100 public void testRound() throws JaxenException { 101 102 BaseXPath xpath = new DOMXPath("round(1.5)"); 103 104 Object result = xpath.evaluate(doc); 105 assertEquals(2, ((Double ) result).doubleValue(), 0.0001); 106 107 } 108 109 public void testNegativeRound() throws JaxenException { 110 111 BaseXPath xpath = new DOMXPath("round(-1.5)"); 112 113 Object result = xpath.evaluate(doc); 114 assertEquals(-1, ((Double ) result).doubleValue(), 0.0001); 115 116 } 117 118 public void testNaNRoundIsNaN() throws JaxenException { 119 BaseXPath xpath = new DOMXPath("round(1.0 div 0.0 - 2.0 div 0.0)"); 120 double result = ((Double ) xpath.evaluate(doc)).doubleValue(); 121 assertTrue(Double.isNaN(result)); 122 } 123 124 public void testRoundFunctionRequiresAtLeastOneArgument() 125 throws JaxenException { 126 127 BaseXPath xpath = new DOMXPath("round()"); 128 129 try { 130 xpath.selectNodes(doc); 131 fail("Allowed round function with no arguments"); 132 } 133 catch (FunctionCallException ex) { 134 assertNotNull(ex.getMessage()); 135 } 136 137 } 138 139 public void testRoundFunctionRequiresAtMostOneArgument() 140 throws JaxenException { 141 142 BaseXPath xpath = new DOMXPath("round(2.2, 1.2)"); 143 144 try { 145 xpath.selectNodes(doc); 146 fail("Allowed round function with two arguments"); 147 } 148 catch (FunctionCallException ex) { 149 assertNotNull(ex.getMessage()); 150 } 151 152 } 153 154 } 155 | Popular Tags |