JENA-839 : Make code more robust against unusual setups.

Add some tests of corner cases.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8be58c89
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8be58c89
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8be58c89

Branch: refs/heads/master
Commit: 8be58c89910cfbef95531bd6b14ab47a04efe065
Parents: 8642efd
Author: Andy Seaborne <[email protected]>
Authored: Mon Jan 19 14:33:43 2015 +0000
Committer: Andy Seaborne <[email protected]>
Committed: Mon Jan 19 14:33:43 2015 +0000

----------------------------------------------------------------------
 .../sparql/expr/nodevalue/NodeFunctions.java    | 14 ++++--------
 .../hpl/jena/sparql/expr/TestNodeFunctions.java | 24 +++++++++++++++++++-
 2 files changed, 27 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8be58c89/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java
 
b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java
index 7928261..70e05a3 100644
--- 
a/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java
+++ 
b/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java
@@ -21,17 +21,14 @@ package com.hp.hpl.jena.sparql.expr.nodevalue ;
 import java.util.Iterator ;
 import java.util.UUID ;
 
-import com.hp.hpl.jena.datatypes.RDFDatatype ;
-import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
-import com.hp.hpl.jena.datatypes.xsd.impl.XSDBaseStringType;
-import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.graph.NodeFactory ;
-
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.iri.IRI ;
 import org.apache.jena.iri.IRIFactory ;
 import org.apache.jena.iri.Violation ;
 
+import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.NodeFactory ;
 import com.hp.hpl.jena.sparql.expr.ExprEvalException ;
 import com.hp.hpl.jena.sparql.expr.ExprTypeException ;
 import com.hp.hpl.jena.sparql.expr.NodeValue ;
@@ -64,10 +61,7 @@ public class NodeFunctions {
         // No language tag : either no datatype or a datatype of xsd:string 
         // Includes the case of rdf:langString and no language ==> Illegal as 
a compatible string.
 
-        RDFDatatype dt = n.getLiteralDatatype() ;
-        if ( dt == null )
-            return n ;
-        if (dt instanceof XSDBaseStringType)
+        if ( nv.isString() )
                 return n ;
         throw new ExprEvalException(label + ": Not a string literal: " + nv) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/8be58c89/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java 
b/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java
index 671f303..025d832 100644
--- a/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java
+++ b/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java
@@ -27,6 +27,7 @@ import com.hp.hpl.jena.graph.Node ;
 import com.hp.hpl.jena.graph.NodeFactory ;
 import com.hp.hpl.jena.sparql.expr.nodevalue.NodeFunctions ;
 import com.hp.hpl.jena.sparql.graph.NodeConst ;
+import com.hp.hpl.jena.vocabulary.RDF ;
 import com.hp.hpl.jena.vocabulary.XSD ;
 
 public class TestNodeFunctions extends BaseTest {
@@ -317,9 +318,30 @@ public class TestNodeFunctions extends BaseTest {
         assertEquals(NodeValue.FALSE, r) ;
     }
     
-    @Test public void testCheckAndGetStringLiteral() {
+    @Test public void testCheckAndGetStringLiteral1() {
+        NodeValue nv = NodeValue.makeNode("abc", XSDDatatype.XSDstring) ;
+        Node n = NodeFunctions.checkAndGetStringLiteral("Test", nv);
+        assertEquals( "abc", n.getLiteralLexicalForm());
+    }
+    
+    @Test public void testCheckAndGetStringLiteral2() {
         NodeValue nv = NodeValue.makeNode("abc", 
XSDDatatype.XSDnormalizedString) ;
         Node n = NodeFunctions.checkAndGetStringLiteral("Test", nv);
         assertEquals( "abc", n.getLiteralLexicalForm());
     }
+
+    @Test public void testCheckAndGetStringLiteral3() {
+        NodeValue nv = NodeValue.makeString("abc") ;
+        Node n = NodeFunctions.checkAndGetStringLiteral("Test", nv);
+        assertEquals( "abc", n.getLiteralLexicalForm());
+    }
+    
+    @Test(expected=ExprEvalException.class)
+    public void testCheckAndGetStringLiteral4() {
+        // The form "abc"^^rdf:langString (no lang tag) is not derived from 
xsd:string. 
+        NodeValue nv = NodeValue.makeNode("abc", RDF.dtLangString) ;
+        Node n = NodeFunctions.checkAndGetStringLiteral("Test", nv);
+        assertEquals( "abc", n.getLiteralLexicalForm());
+    }
+
 }

Reply via email to