dmitri 2004/05/08 13:07:09
Modified: jxpath/src/java/org/apache/commons/jxpath/ri
InfoSetUtil.java
jxpath/src/test/org/apache/commons/jxpath/ri/compiler
CoreFunctionTest.java
Log:
Fixed Bug #28753: conversion of Boolean to Number
Revision Changes Path
1.10 +13 -3
jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/InfoSetUtil.java
Index: InfoSetUtil.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/InfoSetUtil.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- InfoSetUtil.java 29 Feb 2004 14:17:45 -0000 1.9
+++ InfoSetUtil.java 8 May 2004 20:07:09 -0000 1.10
@@ -87,7 +87,12 @@
return value;
}
else if (object instanceof EvalContext) {
- return number(stringValue(object));
+ EvalContext ctx = (EvalContext) object;
+ Pointer ptr = ctx.getSingleNodePointer();
+ if (ptr != null) {
+ return number(ptr);
+ }
+ return NOT_A_NUMBER;
}
else if (object instanceof NodePointer) {
return number(((NodePointer) object).getValue());
@@ -123,7 +128,12 @@
return doubleValue(((NodePointer) object).getValue());
}
else if (object instanceof EvalContext) {
- return doubleValue(stringValue(object));
+ EvalContext ctx = (EvalContext) object;
+ Pointer ptr = ctx.getSingleNodePointer();
+ if (ptr != null) {
+ return doubleValue(ptr);
+ }
+ return Double.NaN;
}
return doubleValue(stringValue(object));
}
1.10 +6 -2
jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/CoreFunctionTest.java
Index: CoreFunctionTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/CoreFunctionTest.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- CoreFunctionTest.java 29 Feb 2004 14:17:42 -0000 1.9
+++ CoreFunctionTest.java 8 May 2004 20:07:09 -0000 1.10
@@ -50,6 +50,8 @@
context = JXPathContext.newContext(new TestMixedModelBean());
Variables vars = context.getVariables();
vars.declareVariable("nan", new Double(Double.NaN));
+ vars.declareVariable("bool_true", new Boolean("true"));
+ vars.declareVariable("bool_false", new Boolean("false"));
}
}
@@ -95,13 +97,15 @@
assertXPathValue(context, "not(false())", Boolean.TRUE);
assertXPathValue(context, "not(true())", Boolean.FALSE);
assertXPathValue(context, "number('1')", new Double(1));
+ assertXPathValue(context, "number($bool_true)", new Double(1));
+ assertXPathValue(context, "number($bool_false)", new Double(0));
assertXPathValue(context, "floor(1.5)", new Double(1));
assertXPathValue(context, "floor(-1.5)", new Double(-2));
assertXPathValue(context, "ceiling(1.5)", new Double(2));
assertXPathValue(context, "ceiling(-1.5)", new Double(-1));
assertXPathValue(context, "round(1.5)", new Double(2));
assertXPathValue(context, "round(-1.5)", new Double(-1));
- assertXPathValue(context, "null()", null);
+ assertXPathValue(context, "null()", null);
}
public void testIDFunction() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]