You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2011/11/02 19:26:08 UTC
svn commit: r1196740 - in /incubator/jena/Jena2/ARQ/trunk/src:
main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueInteger.java
test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java
Author: andy
Date: Wed Nov 2 18:26:07 2011
New Revision: 1196740
URL: http://svn.apache.org/viewvc?rev=1196740&view=rev
Log:
JENA-153
Modified:
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueInteger.java
incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java?rev=1196740&r1=1196739&r2=1196740&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java Wed Nov 2 18:26:07 2011
@@ -947,11 +947,15 @@ public abstract class NodeValue extends
if ( ! node.getLiteralDatatype().equals(XSDDatatype.XSDdecimal) )
{
if ( XSDDatatype.XSDinteger.isValidLiteral(lit) )
- {
- // Includes subtypes (int, byte, postiveInteger etc).
- // NB Known to be valid for type by now
- long i = ((Number)lit.getValue()).longValue() ;
- return new NodeValueInteger(i, node) ;
+ {
+ String s = node.getLiteralLexicalForm() ;
+ if ( s.startsWith("+") )
+ // BigInteger does not accept leading "+"
+ s = s.substring(1) ;
+ // Includes subtypes (int, byte, postiveInteger etc).
+ // NB Known to be valid for type by now
+ BigInteger integer = new BigInteger(s) ;
+ return new NodeValueInteger(integer, node) ;
}
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueInteger.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueInteger.java?rev=1196740&r1=1196739&r2=1196740&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueInteger.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueInteger.java Wed Nov 2 18:26:07 2011
@@ -35,7 +35,7 @@ public class NodeValueInteger extends No
public NodeValueInteger(BigInteger i) { super() ; integer = i ; }
public NodeValueInteger(BigInteger i, Node n) { super(n) ; integer = i ; }
- public NodeValueInteger(long i, Node n) { super(n) ; integer = new BigInteger(Long.toString(i)) ; }
+// public NodeValueInteger(long i, Node n) { super(n) ; integer = new BigInteger(Long.toString(i)) ; }
public NodeValueInteger(long i) { super() ; integer = new BigInteger(Long.toString(i)) ; }
@Override
Modified: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java?rev=1196740&r1=1196739&r2=1196740&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/expr/TestExpressions.java Wed Nov 2 18:26:07 2011
@@ -20,6 +20,9 @@ package com.hp.hpl.jena.sparql.expr;
import static org.junit.Assert.assertEquals ;
import static org.junit.Assert.assertTrue ;
+
+import java.math.BigDecimal ;
+
import junit.framework.JUnit4TestAdapter ;
import org.junit.AfterClass ;
import org.junit.BeforeClass ;
@@ -80,7 +83,7 @@ public class TestExpressions
@Test(expected=QueryParseException.class) public void testSyntax_4() { testSyntax("?#") ; }
@Test public void testNumeric_1() { testNumeric("7", 7) ; }
@Test public void testNumeric_2() { testNumeric("-3", -3) ; }
- @Test public void testNumeric_3() { testNumeric("+2", 2) ; }
+ @Test public void testNumeric_3() { testNumeric("+2", 2) ; }
@Test(expected=QueryParseException.class) public void testNumeric_4() { testNumeric("0xF", 0xF) ; }
@Test(expected=QueryParseException.class) public void testNumeric_5() { testNumeric("0x12", 0x12) ; }
@Test public void testNumeric_6() { testNumeric("3--4", 3-(-4)) ; }
@@ -104,7 +107,11 @@ public class TestExpressions
@Test public void testNumeric_24() { testNumeric("1.5 + 2.5", 1.5+2.5) ; }
@Test public void testNumeric_25() { testNumeric("1.5 + 2", 1.5+2) ; }
@Test public void testNumeric_26() { testNumeric("4111222333444", 4111222333444L) ; }
- @Test public void testNumeric_27() { testNumeric("1234 + 4111222333444", 1234 + 4111222333444L) ; }
+ @Test public void testNumeric_27() { testNumeric("1234 + 4111222333444", 1234 + 4111222333444L) ; }
+
+ @Test public void testNumeric_28() { testNumeric("+2.5", new BigDecimal("+2.5")) ; }
+ @Test public void testNumeric_29() { testNumeric("-2.5", new BigDecimal("-2.5")) ; }
+
@Test public void testBoolean_1() { testBoolean("4111222333444 > 1234", 4111222333444L > 1234) ; }
@Test public void testBoolean_2() { testBoolean("4111222333444 < 1234", 4111222333444L < 1234L) ; }
@Test public void testBoolean_3() { testBoolean("1.5 < 2", 1.5 < 2 ) ; }
@@ -224,7 +231,7 @@ public class TestExpressions
@Test(expected=QueryParseException.class)
public void testURI_17() { testURI("x.:a.a", xNS+"a.a") ; }
- @Test public void testNumeric_28() { testNumeric("1:b", 1) ; }
+ @Test public void testNumeric_50() { testNumeric("1:b", 1) ; }
@Test public void testURI_18() { testURI("ex:2", exNS+"2" ) ; }
@Test public void testURI_19() { testURI("ex:2ab_c", exNS+"2ab_c" ) ; }
@Test public void testBoolean_76() { testBoolean("'fred'@en = 'fred'", false ) ; }
@@ -254,7 +261,7 @@ public class TestExpressions
@Test(expected=ExprEvalException.class) public void testBoolean_94() { testEval("'fred'^^<type1> = 'fred'" ) ; }
@Test(expected=ExprEvalException.class) public void testBoolean_95() { testEval("'fred'^^<type1> != 'fred'" ) ; }
@Test(expected=ExprEvalException.class) public void testBoolean_96() { testBoolean("'21'^^<int> = '21'", true ) ; }
- @Test public void testNumeric_29() { testNumeric("'21'^^<"+XSDDatatype.XSDinteger.getURI()+">", 21) ; }
+ @Test public void testNumeric_51() { testNumeric("'21'^^<"+XSDDatatype.XSDinteger.getURI()+">", 21) ; }
@Test public void testBoolean_97() { testBoolean("'21'^^<"+XSDDatatype.XSDinteger.getURI()+"> = 21", true) ; }
@Test public void testBoolean_98() { testBoolean("'21'^^<"+XSDDatatype.XSDinteger.getURI()+"> = 22", false) ; }
@Test public void testBoolean_99() { testBoolean("'21'^^<"+XSDDatatype.XSDinteger.getURI()+"> != 21", false) ; }
@@ -423,6 +430,14 @@ public class TestExpressions
NodeValue v = expr.eval( BindingFactory.binding() , new FunctionEnvBase()) ;
assertTrue(v.isInteger()) ;
assertEquals(i, v.getInteger().intValue()) ;
+ }
+
+ private static void testNumeric(String string, BigDecimal decimal)
+ {
+ Expr expr = parse(string) ;
+ NodeValue v = expr.eval( BindingFactory.binding() , new FunctionEnvBase()) ;
+ assertTrue(v.isDecimal()) ;
+ assertEquals(decimal, v.getDecimal()) ;
}
private static void testNumeric(String string, double d)