[261059] FnRoundHalfToEven is wrong in case of 2 arguments
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java index fa168b8..16858cd 100644 --- a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java +++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Standards for Technology in Automotive Retail and others. + * Copyright (c) 2009, 2012 Standards for Technology in Automotive Retail and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -58,6 +58,7 @@ * Mukul Gandhi - bug 341862 - improvements to computation of typed value of xs:boolean nodes. * Jesper Steen Moller - bug 340933 - Migrate tests to new XPath2 API * Lukasz Wycisk - bug 361060 - Aggregations with nil=ÕtrueÕ throw exceptions. + * Lukasz Wycisk - bug 261059 - FnRoundHalfToEven is wrong in case of 2 arguments ******************************************************************************/ package org.eclipse.wst.xml.xpath2.processor.test; @@ -1165,6 +1166,79 @@ assertEquals("Don't try this at \"home\", she said", resultValue); } + + public void testNumericFunctionOnEmptySequence() throws Exception { + + bundle = Platform.getBundle("org.w3c.xqts.testsuite"); + URL fileURL = bundle.getEntry("/TestSources/emptydoc.xml"); + loadDOMDocument(fileURL); + + // Get XML Schema Information for the Document + XSModel schema = getGrammar(); + + setupDynamicContext(schema); + + String xpath = null; + ResultSequence rs = null; + + //a) + xpath = "fn:abs(())"; + compileXPath(xpath); + rs = evaluate(domDoc); + assertEquals(0,rs.size()); + + //b) + xpath = "fn:ceiling(())"; + compileXPath(xpath); + rs = evaluate(domDoc); + assertEquals(0,rs.size()); + + //c) + xpath = "fn:floor(())"; + compileXPath(xpath); + rs = evaluate(domDoc); + assertEquals(0,rs.size()); + + //d) + xpath = "fn:round(())"; + compileXPath(xpath); + rs = evaluate(domDoc); + assertEquals(0,rs.size()); + + //e) + xpath = "fn:round-half-to-even(())"; + compileXPath(xpath); + rs = evaluate(domDoc); + assertEquals(0,rs.size()); + + //f) + xpath = "fn:round-half-to-even((),1)"; + compileXPath(xpath); + rs = evaluate(domDoc); + assertEquals(0,rs.size()); + } + + public void testSequenceAggregationOnEmpty() throws Exception { + + bundle = Platform.getBundle("org.w3c.xqts.testsuite"); + URL fileURL = bundle.getEntry("/TestSources/emptydoc.xml"); + loadDOMDocument(fileURL); + + // Get XML Schema Information for the Document + XSModel schema = getGrammar(); + + setupDynamicContext(schema); + + String xpath = null; + ResultSequence rs = null; + + //a) + xpath = "fn:sum((1,2,3,() ))"; + compileXPath(xpath); + rs = evaluate(domDoc); + XSDecimal val = (XSDecimal)rs.first(); + assertEquals("6",val.string_value()); + } public void testBug280555_collations() throws Exception { // Setup context @@ -1855,6 +1929,30 @@ assertEquals("100", actual); } + public void testFunctionAtomization2() throws Exception { + // Bug 318313 + URL fileURL = bundle.getEntry("/bugTestFiles/bug318313.xml"); + URL schemaURL = bundle.getEntry("/bugTestFiles/bug318313.xsd"); + + loadDOMDocument(fileURL, schemaURL); + + // Get XSModel object for the Schema + XSModel schema = getGrammar(schemaURL); + + setupDynamicContext(schema); + + String xpath = "fn:round-half-to-even(X,1)"; + compileXPath(xpath); + ResultSequence rs = evaluate(domDoc); + + + XSDecimal result = (XSDecimal) rs.first(); + + String actual = result.getStringValue(); + + assertEquals("100", actual); + } + public void testTypedValueEnhancement_Bug323900_1() throws Exception { // Bug 323900 URL fileURL = bundle.getEntry("/bugTestFiles/bug323900_1.xml");