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 2012/05/23 22:10:01 UTC

svn commit: r1342011 - in /jena/trunk/jena-arq/src: main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java

Author: andy
Date: Wed May 23 20:10:00 2012
New Revision: 1342011

URL: http://svn.apache.org/viewvc?rev=1342011&view=rev
Log:
Fit STRBEFORE and STRAFTER to latest SPARQL 1.1

Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java?rev=1342011&r1=1342010&r2=1342011&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java Wed May 23 20:10:00 2012
@@ -559,16 +559,11 @@ public class XSDFuncOp
         Node mainArg = string.asNode() ;
         
         if ( lex2.length() == 0 )
-            // This is considered to be "no match" in fn:substring-before
-            // SPARQL-WG proposed change:: 
-            // return NodeValue.nvEmptyString ;
             return calcReturn("", mainArg) ;
         
         int i = lex1.indexOf(lex2) ;
         if ( i < 0 )
-            // SPARQL-WG proposed change::
-            //return NodeValue.nvEmptyString ;
-            return calcReturn("", mainArg) ;
+            return NodeValue.nvEmptyString ;
         
         String s = lex1.substring(0, i) ;
         return calcReturn(s, string.asNode()) ;
@@ -582,17 +577,11 @@ public class XSDFuncOp
         Node mainArg = string.asNode() ;
         
         if ( lex2.length() == 0 )
-            // This is considered to be "no match" in fn:substring-after
-            // SPARQL-WG proposed change:: 
-            // return NodeValue.nvEmptyString ;
             return calcReturn(lex1, mainArg) ;
         
         int i = lex1.indexOf(lex2) ;
         if ( i < 0 )
-            // This is considered to be "no match" in fn:substring-before
-            // SPARQL-WG proposed change:: 
-            // return NodeValue.nvEmptyString ;
-            return calcReturn("", mainArg) ;
+            return NodeValue.nvEmptyString ;
         i += lex2.length() ;
         String s = lex1.substring(i) ;
         return calcReturn(s, string.asNode()) ;

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java?rev=1342011&r1=1342010&r2=1342011&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java Wed May 23 20:10:00 2012
@@ -91,7 +91,11 @@ public class TestFunctions
     @Test public void exprStrBefore6() { testEvalException("STRBEFORE('ab'@en, 'ab'@fr)") ; }
     @Test public void exprStrBefore7() { testEvalException("STRBEFORE(123, 'ab'@fr)") ; }
     @Test public void exprStrBefore8() { testEvalException("STRBEFORE('123'^^xsd:string, 12.3)") ; }
-    
+    // No match case
+    @Test public void exprStrBefore9() { test("STRBEFORE('abc'^^xsd:string, 'z')", NodeValue.nvEmptyString) ; }
+    // Empty string case
+    @Test public void exprStrBefore10() { test("STRBEFORE('abc'^^xsd:string, '')", NodeValue.makeNode("", XSDDatatype.XSDstring)) ; }
+
     @Test public void exprStrAfter0() { test("STRAFTER('abc', 'abcd')", NodeValue.nvEmptyString) ; }
     @Test public void exprStrAfter1() { test("STRAFTER('abc'@en, 'b')", NodeValue.makeNode("c", "en", (String)null)) ; }
     @Test public void exprStrAfter2() { test("STRAFTER('abc'^^xsd:string, 'a')", NodeValue.makeNode("bc", XSDDatatype.XSDstring)) ; }
@@ -102,6 +106,10 @@ public class TestFunctions
     @Test public void exprStrAfter6() { testEvalException("STRAFTER('ab'@en, 'ab'@fr)") ; }
     @Test public void exprStrAfter7() { testEvalException("STRAFTER(123, 'ab'@fr)") ; }
     @Test public void exprStrAfter8() { testEvalException("STRAFTER('123'^^xsd:string, 12.3)") ; }
+    // No match case
+    @Test public void exprStrAfter9() { test("STRAFTER('abc'^^xsd:string, 'z')", NodeValue.nvEmptyString) ; }
+    // Empty string case
+    @Test public void exprStrAfter10() { test("STRAFTER('abc'^^xsd:string, '')", NodeValue.makeNode("abc", XSDDatatype.XSDstring)) ; }
 
     @Test public void exprStrEnds0() { test("fn:ends-with('abc', '')", TRUE) ; }
     @Test public void exprStrEnds1() { test("fn:ends-with('abc', 'c')", TRUE) ; }