Author: andy Date: Wed Nov 27 11:11:02 2013 New Revision: 1545994 URL: http://svn.apache.org/r1545994 Log: Tidy up
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java?rev=1545994&r1=1545993&r2=1545994&view=diff ============================================================================== --- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java (original) +++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeFunctions.java Wed Nov 27 11:11:02 2013 @@ -16,11 +16,11 @@ * limitations under the License. */ -package com.hp.hpl.jena.sparql.expr.nodevalue; +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.graph.Node ; @@ -38,74 +38,75 @@ import com.hp.hpl.jena.sparql.util.FmtUt import com.hp.hpl.jena.vocabulary.XSD ; /** - * Implementation of node-centric functions. + * Implementation of node-centric functions. */ -public class NodeFunctions -{ +public class NodeFunctions { private static final NodeValue xsdString = NodeValue.makeNode(XSD.xstring.asNode()) ; // Helper functions - /** check and get a string (may be a simple literal, literal with language tag or an XSD string). */ - public static Node checkAndGetStringLiteral(String label, NodeValue nv) - { + /** + * check and get a string (may be a simple literal, literal with language + * tag or an XSD string). + */ + public static Node checkAndGetStringLiteral(String label, NodeValue nv) { Node n = nv.asNode() ; - if ( ! n.isLiteral() ) - throw new ExprEvalException(label+": Not a literal: "+nv) ; + if ( !n.isLiteral() ) + throw new ExprEvalException(label + ": Not a literal: " + nv) ; RDFDatatype dt = n.getLiteralDatatype() ; String lang = n.getLiteralLanguage() ; - - if ( dt != null && ! dt.equals(XSDDatatype.XSDstring) ) - throw new ExprEvalException(label+": Not a string literal: "+nv) ; + + if ( dt != null && !dt.equals(XSDDatatype.XSDstring) ) + throw new ExprEvalException(label + ": Not a string literal: " + nv) ; return n ; } - - - /** Check for string operations with primary first arg and second second arg (e.g. CONTAINS) */ - public static void checkTwoArgumentStringLiterals(String label, NodeValue arg1, NodeValue arg2) - { + + /** + * Check for string operations with primary first arg and second second arg + * (e.g. CONTAINS) + */ + public static void checkTwoArgumentStringLiterals(String label, NodeValue arg1, NodeValue arg2) { Node n1 = checkAndGetStringLiteral(label, arg1) ; Node n2 = checkAndGetStringLiteral(label, arg2) ; String lang1 = n1.getLiteralLanguage() ; String lang2 = n2.getLiteralLanguage() ; - if (lang1 == null ) lang1 = "" ; - if (lang2 == null ) lang2 = "" ; - - if ( n1.getLiteralDatatype() != null ) - { + if ( lang1 == null ) + lang1 = "" ; + if ( lang2 == null ) + lang2 = "" ; + + if ( n1.getLiteralDatatype() != null ) { // n1 is an xsd string by checkAndGetString - if ( XSDDatatype.XSDstring.equals(n2.getLiteralDatatypeURI()) ) return ; - if ( n2.getLiteralLanguage().equals("") ) return ; - throw new ExprEvalException(label+": Incompatible: "+arg1+" and "+arg2) ; + if ( XSDDatatype.XSDstring.equals(n2.getLiteralDatatypeURI()) ) + return ; + if ( n2.getLiteralLanguage().equals("") ) + return ; + throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ; } - + // Incompatible? // arg1 simple or xsd:string, arg2 has a lang. - if ( lang1.equals("") && ! lang2.equals("") ) - throw new ExprEvalException(label+": Incompatible: "+arg1+" and "+arg2) ; + if ( lang1.equals("") && !lang2.equals("") ) + throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ; // arg1 with lang, arg2 has a different lang. - if ( ! lang1.equals("") && (!lang2.equals("") && ! lang1.equals(lang2) ) ) - throw new ExprEvalException(label+": Incompatible: "+arg1+" and "+arg2) ; + if ( !lang1.equals("") && (!lang2.equals("") && !lang1.equals(lang2)) ) + throw new ExprEvalException(label + ": Incompatible: " + arg1 + " and " + arg2) ; } - - - + // -------- sameTerm - - public static NodeValue sameTerm(NodeValue nv1, NodeValue nv2) - { return NodeValue.booleanReturn(sameTerm(nv1.asNode(), nv2.asNode())) ; } - - public static boolean sameTerm(Node n1, Node n2) - { + + public static NodeValue sameTerm(NodeValue nv1, NodeValue nv2) { + return NodeValue.booleanReturn(sameTerm(nv1.asNode(), nv2.asNode())) ; + } + + public static boolean sameTerm(Node n1, Node n2) { if ( n1.equals(n2) ) return true ; - if ( n1.isLiteral() && n2.isLiteral() ) - { + if ( n1.isLiteral() && n2.isLiteral() ) { // But language tags are case insensitive. - String lang1 = n1.getLiteralLanguage() ; - String lang2 = n2.getLiteralLanguage() ; - - if ( ! lang1.equals("") && lang1.equalsIgnoreCase(lang2) ) - { + String lang1 = n1.getLiteralLanguage() ; + String lang2 = n2.getLiteralLanguage() ; + + if ( !lang1.equals("") && lang1.equalsIgnoreCase(lang2) ) { // Two language tags, equal by case insensitivity. boolean b = n1.getLiteralLexicalForm().equals(n2.getLiteralLexicalForm()) ; if ( b ) @@ -116,155 +117,152 @@ public class NodeFunctions } // -------- RDFterm-equals - - public static NodeValue rdfTermEquals(NodeValue nv1, NodeValue nv2) - { return NodeValue.booleanReturn(rdfTermEquals(nv1.asNode(), nv2.asNode())) ; } - + + public static NodeValue rdfTermEquals(NodeValue nv1, NodeValue nv2) { + return NodeValue.booleanReturn(rdfTermEquals(nv1.asNode(), nv2.asNode())) ; + } + // Exact as defined by SPARQL spec. - public static boolean rdfTermEquals(Node n1, Node n2) - { + public static boolean rdfTermEquals(Node n1, Node n2) { if ( n1.equals(n2) ) return true ; - - if ( n1.isLiteral() && n2.isLiteral() ) - { + + if ( n1.isLiteral() && n2.isLiteral() ) { // Two literals, may be sameTerm by language tag case insensitivity. String lang1 = n1.getLiteralLanguage() ; String lang2 = n2.getLiteralLanguage() ; - - if ( ! lang1.equals("") && lang1.equalsIgnoreCase(lang2) ) - { + + if ( !lang1.equals("") && lang1.equalsIgnoreCase(lang2) ) { // Two language tags, equal by case insensitivity. boolean b = n1.getLiteralLexicalForm().equals(n2.getLiteralLexicalForm()) ; if ( b ) return true ; } - // Two literals, different terms, different language tags. - NodeValue.raise(new ExprEvalException("Mismatch in RDFterm-equals: "+n1+", "+n2)) ; + // Two literals, different terms, different language tags. + NodeValue.raise(new ExprEvalException("Mismatch in RDFterm-equals: " + n1 + ", " + n2)) ; } // One or both not a literal. return false ; } - + // -------- str - public static NodeValue str(NodeValue nv) { return NodeValue.makeString(str(nv.asNode())) ; } - public static String str(Node node) - { - if ( node.isLiteral() ) return node.getLiteral().getLexicalForm() ; - if ( node.isURI() ) return node.getURI() ; -// if ( node.isBlank() ) return node.getBlankNodeId().getLabelString() ; -// if ( node.isBlank() ) return "" ; + public static NodeValue str(NodeValue nv) { + return NodeValue.makeString(str(nv.asNode())) ; + } + + public static String str(Node node) { + if ( node.isLiteral() ) + return node.getLiteral().getLexicalForm() ; + if ( node.isURI() ) + return node.getURI() ; + // if ( node.isBlank() ) return node.getBlankNodeId().getLabelString() ; + // if ( node.isBlank() ) return "" ; if ( node.isBlank() ) - NodeValue.raise(new ExprTypeException("Blank node: "+node)) ; - - NodeValue.raise(new ExprEvalException("Not a string: "+node)) ; + NodeValue.raise(new ExprTypeException("Blank node: " + node)) ; + + NodeValue.raise(new ExprEvalException("Not a string: " + node)) ; return "[undef]" ; } - + // -------- datatype - public static NodeValue datatype(NodeValue nv) { return NodeValue.makeNode(datatype(nv.asNode())) ; } - public static Node datatype(Node node) - { - if ( ! node.isLiteral() ) - { - NodeValue.raise(new ExprTypeException("datatype: Not a literal: "+node) ); + public static NodeValue datatype(NodeValue nv) { + return NodeValue.makeNode(datatype(nv.asNode())) ; + } + + public static Node datatype(Node node) { + if ( !node.isLiteral() ) { + NodeValue.raise(new ExprTypeException("datatype: Not a literal: " + node)) ; return null ; } String s = node.getLiteralDatatypeURI() ; - boolean plainLiteral = (s == null || s.equals("") ) ; - - if ( plainLiteral ) - { - boolean simpleLiteral = (node.getLiteralLanguage() == null || node.getLiteralLanguage().equals("") ) ; - if ( ! simpleLiteral ) + boolean plainLiteral = (s == null || s.equals("")) ; + + if ( plainLiteral ) { + boolean simpleLiteral = (node.getLiteralLanguage() == null || node.getLiteralLanguage().equals("")) ; + if ( !simpleLiteral ) return NodeConst.dtRDFlangString ; return XSD.xstring.asNode() ; } return NodeFactory.createURI(s) ; } - + // -------- lang - - public static NodeValue lang(NodeValue nv) - { return NodeValue.makeString(lang(nv.asNode())) ; } - - public static String lang(Node node) - { - if ( ! node.isLiteral() ) - NodeValue.raise(new ExprTypeException("lang: Not a literal: "+FmtUtils.stringForNode(node))) ; + + public static NodeValue lang(NodeValue nv) { + return NodeValue.makeString(lang(nv.asNode())) ; + } + + public static String lang(Node node) { + if ( !node.isLiteral() ) + NodeValue.raise(new ExprTypeException("lang: Not a literal: " + FmtUtils.stringForNode(node))) ; String s = node.getLiteralLanguage() ; if ( s == null ) s = "" ; return s ; } - + // -------- langMatches - public static NodeValue langMatches(NodeValue nv, NodeValue nvPattern) - { return langMatches(nv, nvPattern.getString()) ; } - - public static NodeValue langMatches(NodeValue nv, String langPattern) - { + public static NodeValue langMatches(NodeValue nv, NodeValue nvPattern) { + return langMatches(nv, nvPattern.getString()) ; + } + + public static NodeValue langMatches(NodeValue nv, String langPattern) { Node node = nv.asNode() ; - if ( ! node.isLiteral() ) - { - NodeValue.raise(new ExprTypeException("langMatches: not a literal: "+node)) ; + if ( !node.isLiteral() ) { + NodeValue.raise(new ExprTypeException("langMatches: not a literal: " + node)) ; return null ; } String nodeLang = node.getLiteralLexicalForm() ; - - if ( langPattern .equals("*") ) - { - if ( nodeLang == null || nodeLang.equals("") ) + + if ( langPattern.equals("*") ) { + if ( nodeLang == null || nodeLang.equals("") ) return NodeValue.FALSE ; return NodeValue.TRUE ; } - + // See RFC 3066 (it's "tag (-tag)*)" String[] langElts = nodeLang.split("-") ; String[] langRangeElts = langPattern.split("-") ; - /* - * Here is the logic to compare language code. - * There is a match if the language matches the - * parts of the pattern - the language may be longer than - * the pattern. + * Here is the logic to compare language code. There is a match if the + * language matches the parts of the pattern - the language may be + * longer than the pattern. */ - - /* RFC 4647 basic filtering. + + /* + * RFC 4647 basic filtering. * - * To do extended: - * 1. Remove any -*- (but not *-) - * 2. Compare primary tags. - * 3. Is the remaining range a subsequence of the remaining language tag? + * To do extended: 1. Remove any -*- (but not *-) 2. Compare primary + * tags. 3. Is the remaining range a subsequence of the remaining + * language tag? */ - -// // Step one: remove "-*-" (but not "*-") -// int j = 1 ; -// for ( int i = 1 ; i < langRangeElts.length ; i++ ) -// { -// String range = langRangeElts[i] ; -// if ( range.equals("*") ) -// continue ; -// langRangeElts[j] = range ; -// j++ ; -// } -// -// // Null fill any free space. -// for ( int i = j ; i < langRangeElts.length ; i++ ) -// langRangeElts[i] = null ; - + + // // Step one: remove "-*-" (but not "*-") + // int j = 1 ; + // for ( int i = 1 ; i < langRangeElts.length ; i++ ) + // { + // String range = langRangeElts[i] ; + // if ( range.equals("*") ) + // continue ; + // langRangeElts[j] = range ; + // j++ ; + // } + // + // // Null fill any free space. + // for ( int i = j ; i < langRangeElts.length ; i++ ) + // langRangeElts[i] = null ; + // This is basic specific. - + if ( langRangeElts.length > langElts.length ) // Lang tag longer than pattern tag => can't match return NodeValue.FALSE ; - for ( int i = 0 ; i < langRangeElts.length ; i++ ) - { + for ( int i = 0 ; i < langRangeElts.length ; i++ ) { String range = langRangeElts[i] ; if ( range == null ) break ; @@ -274,163 +272,169 @@ public class NodeFunctions String lang = langElts[i] ; if ( range.equals("*") ) continue ; - if ( ! range.equalsIgnoreCase(lang) ) + if ( !range.equalsIgnoreCase(lang) ) return NodeValue.FALSE ; } return NodeValue.TRUE ; } - + // -------- isURI/isIRI - - public static NodeValue isIRI(NodeValue nv) { return NodeValue.booleanReturn(isIRI(nv.asNode())) ; } - - public static boolean isIRI(Node node) - { + + public static NodeValue isIRI(NodeValue nv) { + return NodeValue.booleanReturn(isIRI(nv.asNode())) ; + } + + public static boolean isIRI(Node node) { if ( node.isURI() ) return true ; return false ; } - public static NodeValue isURI(NodeValue nv) { return NodeValue.booleanReturn(isIRI(nv.asNode())) ; } - public static boolean isURI(Node node) { return isIRI(node) ; } - + public static NodeValue isURI(NodeValue nv) { + return NodeValue.booleanReturn(isIRI(nv.asNode())) ; + } + + public static boolean isURI(Node node) { + return isIRI(node) ; + } + // -------- isBlank - public static NodeValue isBlank(NodeValue nv) { return NodeValue.booleanReturn(isBlank(nv.asNode())) ; } - public static boolean isBlank(Node node) { return node.isBlank() ; } - + public static NodeValue isBlank(NodeValue nv) { + return NodeValue.booleanReturn(isBlank(nv.asNode())) ; + } + + public static boolean isBlank(Node node) { + return node.isBlank() ; + } + // -------- isLiteral - public static NodeValue isLiteral(NodeValue nv) { return NodeValue.booleanReturn(isLiteral(nv.asNode())) ; } - public static boolean isLiteral(Node node) { return node.isLiteral() ; } - - private static final IRIFactory iriFactory = IRIFactory.iriImplementation() ; - public static boolean warningsForIRIs = false ; - + public static NodeValue isLiteral(NodeValue nv) { + return NodeValue.booleanReturn(isLiteral(nv.asNode())) ; + } + + public static boolean isLiteral(Node node) { + return node.isLiteral() ; + } + + private static final IRIFactory iriFactory = IRIFactory.iriImplementation() ; + public static boolean warningsForIRIs = false ; + // -------- IRI - public static NodeValue iri(NodeValue nv, String baseIRI) - { + public static NodeValue iri(NodeValue nv, String baseIRI) { if ( isIRI(nv.asNode()) ) return nv ; Node n2 = iri(nv.asNode(), baseIRI) ; return NodeValue.makeNode(n2) ; } - - public static Node iri(Node nv, String baseIRI) - { + + public static Node iri(Node nv, String baseIRI) { if ( nv.isURI() ) return nv ; - - if ( nv.isBlank() ) - { + + if ( nv.isBlank() ) { // Skolemization of blank nodes to IRIs : Don't ask, just don't ask. String x = nv.getBlankNodeLabel() ; - return NodeFactory.createURI("_:"+x) ; + return NodeFactory.createURI("_:" + x) ; } - + // Simple literal or xsd:string String str = simpleLiteralOrXSDString(nv) ; - if (str == null ) - throw new ExprEvalException("Can't make an IRI from "+nv) ; + if ( str == null ) + throw new ExprEvalException("Can't make an IRI from " + nv) ; IRI iri = null ; String iriStr = nv.getLiteralLexicalForm() ; - + // Level of checking? - if ( baseIRI != null ) - { - IRI base = iriFactory.create(baseIRI); - iri = base.create(iriStr); - } - else - iri = iriFactory.create(iriStr); + if ( baseIRI != null ) { + IRI base = iriFactory.create(baseIRI) ; + iri = base.create(iriStr) ; + } else + iri = iriFactory.create(iriStr) ; - if ( ! iri.isAbsolute() ) - throw new ExprEvalException("Relative IRI string: "+iriStr) ; - if ( warningsForIRIs && iri.hasViolation(false) ) - { - String msg = "unknown violation from IRI library" ; + if ( !iri.isAbsolute() ) + throw new ExprEvalException("Relative IRI string: " + iriStr) ; + if ( warningsForIRIs && iri.hasViolation(false) ) { + String msg = "unknown violation from IRI library" ; Iterator<Violation> iter = iri.violations(false) ; - if ( iter.hasNext() ) - { + if ( iter.hasNext() ) { Violation viol = iter.next() ; msg = viol.getShortMessage() ; } - Log.warn(NodeFunctions.class, "Bad IRI: "+msg+": "+iri) ; + Log.warn(NodeFunctions.class, "Bad IRI: " + msg + ": " + iri) ; } return NodeFactory.createURI(iri.toString()) ; } - + // The Jena version can vbe slow to inityailise (but is pure java) - - //private static UUIDFactory factory = new UUID_V4_Gen() ; -// private static UUIDFactory factory = new UUID_V1_Gen() ; -// public static NodeValue uuid() -// { -// JenaUUID uuid = factory.generate() ; -// Node n = Node.createURI(uuid.asURN()) ; -// return NodeValue.makeNode(n) ; -// } -// -// public static NodeValue struuid() -// { -// JenaUUID uuid = factory.generate() ; -// return NodeValue.makeString(uuid.asString()) ; -// } - public static NodeValue struuid() - { + // private static UUIDFactory factory = new UUID_V4_Gen() ; + // private static UUIDFactory factory = new UUID_V1_Gen() ; + // public static NodeValue uuid() + // { + // JenaUUID uuid = factory.generate() ; + // Node n = Node.createURI(uuid.asURN()) ; + // return NodeValue.makeNode(n) ; + // } + // + // public static NodeValue struuid() + // { + // JenaUUID uuid = factory.generate() ; + // return NodeValue.makeString(uuid.asString()) ; + // } + + public static NodeValue struuid() { return NodeValue.makeString(uuidString()) ; } - - public static NodeValue uuid() - { - String str = "urn:uuid:"+uuidString() ; + + public static NodeValue uuid() { + String str = "urn:uuid:" + uuidString() ; Node n = NodeFactory.createURI(str) ; return NodeValue.makeNode(n) ; } - private static String uuidString() - { + private static String uuidString() { return UUID.randomUUID().toString() ; } - - private static String simpleLiteralOrXSDString(Node n) - { - if ( ! n.isLiteral() ) return null ; - - if ( n.getLiteralDatatype() == null ) - { + + private static String simpleLiteralOrXSDString(Node n) { + if ( !n.isLiteral() ) + return null ; + + if ( n.getLiteralDatatype() == null ) { if ( n.getLiteralLanguage().equals("") ) return n.getLiteralLexicalForm() ; - } else - if ( n.getLiteralDatatype().equals(XSDDatatype.XSDstring )) - return n.getLiteralLexicalForm() ; + } else if ( n.getLiteralDatatype().equals(XSDDatatype.XSDstring) ) + return n.getLiteralLexicalForm() ; return null ; } - - public static NodeValue strDatatype(NodeValue v1, NodeValue v2) - { - if ( ! v1.isString() ) throw new ExprEvalException("Not a string (arg 1): "+v1) ; - if ( ! v2.isIRI() ) throw new ExprEvalException("Not an IRI (arg 2): "+v2) ; - + + public static NodeValue strDatatype(NodeValue v1, NodeValue v2) { + if ( !v1.isString() ) + throw new ExprEvalException("Not a string (arg 1): " + v1) ; + if ( !v2.isIRI() ) + throw new ExprEvalException("Not an IRI (arg 2): " + v2) ; + String lex = v1.asString() ; Node dt = v2.asNode() ; // Check? - + Node n = NodeFactory.createLiteral(lex, null, NodeFactory.getType(dt.getURI())) ; - return NodeValue.makeNode(n) ; + return NodeValue.makeNode(n) ; } - - public static NodeValue strLang(NodeValue v1, NodeValue v2) - { - if ( ! v1.isString() ) throw new ExprEvalException("Not a string (arg 1): "+v1) ; - if ( ! v2.isString() ) throw new ExprEvalException("Not a string (arg 2): "+v2) ; - + + public static NodeValue strLang(NodeValue v1, NodeValue v2) { + if ( !v1.isString() ) + throw new ExprEvalException("Not a string (arg 1): " + v1) ; + if ( !v2.isString() ) + throw new ExprEvalException("Not a string (arg 2): " + v2) ; + String lex = v1.asString() ; String lang = v2.asString() ; // Check? - + Node n = NodeFactory.createLiteral(lex, lang, null) ; - return NodeValue.makeNode(n) ; + return NodeValue.makeNode(n) ; } } Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java?rev=1545994&r1=1545993&r2=1545994&view=diff ============================================================================== --- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java (original) +++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeFunctions.java Wed Nov 27 11:11:02 2013 @@ -16,7 +16,7 @@ * limitations under the License. */ -package com.hp.hpl.jena.sparql.expr; +package com.hp.hpl.jena.sparql.expr ; import org.apache.jena.atlas.junit.BaseTest ; import org.junit.Test ; @@ -28,219 +28,177 @@ import com.hp.hpl.jena.sparql.expr.nodev import com.hp.hpl.jena.sparql.graph.NodeConst ; import com.hp.hpl.jena.vocabulary.XSD ; -public class TestNodeFunctions extends BaseTest -{ +public class TestNodeFunctions extends BaseTest { private static final double accuracyExact = 0.0d ; private static final double accuracyClose = 0.000001d ; - -// public static TestSuite suite() -// { -// TestSuite ts = new TestSuite(TestNodeFunctions.class) ; -// ts.setName(Utils.classShortName(TestNodeFunctions.class)) ; -// return ts ; -// } + // public static TestSuite suite() + // { + // TestSuite ts = new TestSuite(TestNodeFunctions.class) ; + // ts.setName(Utils.classShortName(TestNodeFunctions.class)) ; + // return ts ; + // } - @Test public void testSameTerm1() - { + @Test public void testSameTerm1() { Node n1 = NodeFactory.createLiteral("xyz") ; Node n2 = NodeFactory.createLiteral("xyz") ; assertTrue(NodeFunctions.sameTerm(n1, n2)) ; } - - @Test public void testSameTerm2() - { + + @Test public void testSameTerm2() { Node n1 = NodeFactory.createLiteral("xyz") ; Node n2 = NodeFactory.createLiteral("abc") ; assertFalse(NodeFunctions.sameTerm(n1, n2)) ; } - - @Test public void testSameTerm3() - { + + @Test public void testSameTerm3() { Node n1 = NodeFactory.createLiteral("xyz") ; Node n2 = NodeFactory.createURI("xyz") ; assertFalse(NodeFunctions.sameTerm(n1, n2)) ; } - - @Test public void testSameTerm4() - { + + @Test public void testSameTerm4() { Node n1 = NodeFactory.createLiteral("xyz") ; Node n2 = NodeFactory.createLiteral("xyz", null, XSDDatatype.XSDstring) ; assertFalse(NodeFunctions.sameTerm(n1, n2)) ; } - - @Test public void testSameTerm5() - { + + @Test public void testSameTerm5() { Node n1 = NodeFactory.createLiteral("xyz", "en", null) ; Node n2 = NodeFactory.createLiteral("xyz", null, null) ; assertFalse(NodeFunctions.sameTerm(n1, n2)) ; } - - @Test public void testSameTerm6() - { + + @Test public void testSameTerm6() { Node n1 = NodeFactory.createLiteral("xyz", "en", null) ; Node n2 = NodeFactory.createLiteral("xyz", "EN", null) ; assertTrue(NodeFunctions.sameTerm(n1, n2)) ; } - - @Test public void testRDFtermEquals1() - { + + @Test public void testRDFtermEquals1() { Node n1 = NodeFactory.createURI("xyz") ; Node n2 = NodeFactory.createLiteral("xyz", null, null) ; assertFalse(NodeFunctions.rdfTermEquals(n1, n2)) ; } - - @Test public void testRDFtermEquals3() - { - // Unextended - no language tag + + @Test(expected=ExprEvalException.class) + public void testRDFtermEquals3() { + // Unextended - no language tag Node n1 = NodeFactory.createLiteral("xyz") ; Node n2 = NodeFactory.createLiteral("xyz", "en", null) ; - try { - NodeFunctions.rdfTermEquals(n1, n2) ; - fail("Expected an exception from rdfTermEquals") ; - } catch (ExprEvalException ex) {} + NodeFunctions.rdfTermEquals(n1, n2) ; } - - @Test public void testRDFtermEquals2() - { + @Test public void testRDFtermEquals2() { Node n1 = NodeFactory.createLiteral("xyz", "en", null) ; Node n2 = NodeFactory.createLiteral("xyz", "EN", null) ; assertTrue(NodeFunctions.rdfTermEquals(n1, n2)) ; } - - @Test public void testStr1() - { + + @Test public void testStr1() { NodeValue nv = NodeValue.makeNodeInteger(56) ; NodeValue s = NodeFunctions.str(nv) ; assertEquals("56", s.getString()) ; } - - @Test public void testStr2() - { + + @Test public void testStr2() { NodeValue nv = NodeValue.makeInteger(56) ; NodeValue s = NodeFunctions.str(nv) ; assertEquals("56", s.getString()) ; } - @Test public void testStr3() - { + @Test public void testStr3() { NodeValue nv = NodeValue.makeNode("abc", "fr", (String)null) ; NodeValue s = NodeFunctions.str(nv) ; assertEquals("abc", s.getString()) ; } - @Test public void testStr4() - { + @Test(expected=ExprTypeException.class) + public void testStr4() { Node n = NodeFactory.createAnon() ; - try { - String s = NodeFunctions.str(n) ; - fail("Expect a type exception but call succeeded") ; - } - catch (ExprTypeException ex) {} + String s = NodeFunctions.str(n) ; } - - @Test public void testDatatype1() - { + + @Test public void testDatatype1() { NodeValue nv = NodeValue.makeInteger(5) ; Node n = nv.asNode() ; Node r = NodeFunctions.datatype(n) ; assertEquals(XSD.integer.asNode(), r) ; } - @Test public void testDatatype2() - { + @Test public void testDatatype2() { NodeValue nv = NodeValue.makeInteger(5) ; NodeValue r = NodeFunctions.datatype(nv) ; NodeValue e = NodeValue.makeNode(XSD.integer.asNode()) ; assertEquals(e, r) ; } - @Test public void testDatatype3() - { + @Test public void testDatatype3() { NodeValue nv = NodeValue.makeString("abc") ; NodeValue r = NodeFunctions.datatype(nv) ; NodeValue e = NodeValue.makeNode(XSD.xstring.asNode()) ; assertEquals(e, r) ; } - @Test public void testDatatype4() - { + @Test public void testDatatype4() { NodeValue nv = NodeValue.makeNode("abc", "fr", (String)null) ; // SPARQL 1.0 -// try { -// NodeValue r = NodeFunctions.datatype(nv) ; -// fail("Expect a type exception but call succeeded") ; -// } -// catch (ExprTypeException ex) {} + // try { + // NodeValue r = NodeFunctions.datatype(nv) ; + // fail("Expect a type exception but call succeeded") ; + // } + // catch (ExprTypeException ex) {} // SPARQL 1.1 / RDF 1.1 NodeValue r = NodeFunctions.datatype(nv) ; NodeValue e = NodeValue.makeNode(NodeConst.dtRDFlangString) ; assertEquals(e, r) ; } - @Test public void testDatatype5() - { - try { - NodeValue nv = NodeValue.makeNode(NodeFactory.createURI("http://example")) ; - NodeValue r = NodeFunctions.datatype(nv) ; - fail("Expect a type exception but call succeeded") ; - } - catch (ExprTypeException ex) {} + @Test(expected=ExprTypeException.class) + public void testDatatype5() { + NodeValue nv = NodeValue.makeNode(NodeFactory.createURI("http://example")) ; + NodeValue r = NodeFunctions.datatype(nv) ; } - @Test public void testDatatype6() - { + @Test(expected=ExprTypeException.class) + public void testDatatype6() { NodeValue nv = NodeValue.makeNode(NodeFactory.createAnon()) ; - try { - NodeValue r = NodeFunctions.datatype(nv) ; - fail("Expect a type exception but call succeeded") ; - } - catch (ExprTypeException ex) {} + NodeValue r = NodeFunctions.datatype(nv) ; } - @Test public void testLang1() - { + @Test public void testLang1() { Node n = NodeFactory.createLiteral("abc", "en-gb", null) ; assertEquals("en-gb", NodeFunctions.lang(n)) ; } - @Test public void testLang2() - { + @Test public void testLang2() { NodeValue nv = NodeValue.makeNode("abc", "en", (String)null) ; NodeValue r = NodeFunctions.lang(nv) ; NodeValue e = NodeValue.makeString("en") ; assertEquals(e, r) ; } - @Test public void testLang3() - { + @Test public void testLang3() { NodeValue nv = NodeValue.makeInteger(5) ; NodeValue r = NodeFunctions.lang(nv) ; NodeValue e = NodeValue.makeString("") ; assertEquals(e, r) ; } - - @Test public void testLang4() - { + + @Test public void testLang4() { NodeValue nv = NodeValue.makeNode(NodeFactory.createLiteral("simple")) ; NodeValue r = NodeFunctions.lang(nv) ; NodeValue e = NodeValue.makeString("") ; assertEquals(e, r) ; } - - @Test public void testLang5() - { + + @Test(expected=ExprTypeException.class) + public void testLang5() { NodeValue nv = NodeValue.makeNode(NodeFactory.createURI("http://example/")) ; - try { - NodeValue r = NodeFunctions.lang(nv) ; - fail("Expect a type exception but call succeeded") ; - } - catch (ExprTypeException ex) {} + NodeValue r = NodeFunctions.lang(nv) ; } - - @Test public void testLangMatches1() - { + + @Test public void testLangMatches1() { NodeValue nv = NodeValue.makeString("en") ; NodeValue pat = NodeValue.makeString("en") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; @@ -248,8 +206,7 @@ public class TestNodeFunctions extends B assertFalse(NodeValue.FALSE.equals(r)) ; } - @Test public void testLangMatches2() - { + @Test public void testLangMatches2() { NodeValue nv = NodeValue.makeString("en") ; NodeValue pat = NodeValue.makeString("fr") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; @@ -257,48 +214,42 @@ public class TestNodeFunctions extends B assertFalse(NodeValue.TRUE.equals(r)) ; } - @Test public void testLangMatches3() - { + @Test public void testLangMatches3() { NodeValue nv = NodeValue.makeString("en-gb") ; NodeValue pat = NodeValue.makeString("en-gb") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; } - @Test public void testLangMatches4() - { + @Test public void testLangMatches4() { NodeValue nv = NodeValue.makeString("en-gb") ; NodeValue pat = NodeValue.makeString("en") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; } - @Test public void testLangMatches5() - { + @Test public void testLangMatches5() { NodeValue nv = NodeValue.makeString("abc") ; NodeValue pat = NodeValue.makeString("*") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; } - @Test public void testLangMatches6() - { + @Test public void testLangMatches6() { NodeValue nv = NodeValue.makeString("x-y-z") ; NodeValue pat = NodeValue.makeString("x") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.TRUE, r) ; } - @Test public void testLangMatches7() - { + @Test public void testLangMatches7() { NodeValue nv = NodeValue.makeString("x") ; NodeValue pat = NodeValue.makeString("x-y-z") ; NodeValue r = NodeFunctions.langMatches(nv, pat) ; assertEquals(NodeValue.FALSE, r) ; } - @Test public void testLangMatches8() - { + @Test public void testLangMatches8() { // The language tag of a plain literal is "" // A language tag is not allowed to be the empty string (by RFC 3066) NodeValue nv = NodeValue.makeString("") ; @@ -307,52 +258,63 @@ public class TestNodeFunctions extends B assertEquals(NodeValue.FALSE, r) ; } - @Test public void testIsIRI_1() - { + @Test + public void testLangMatches9() { + // The language-match of "" is not a legal by RFC 4647 but useful for language tags of "" + NodeValue nv = NodeValue.makeString("") ; + NodeValue pat = NodeValue.makeString("") ; + NodeValue r = NodeFunctions.langMatches(nv, pat) ; + assertEquals(NodeValue.TRUE, r) ; + } + + @Test + public void testLangMatches10() { + // The language-match of "" is not a legal by RFC 4647 but useful for language tags of "" + NodeValue nv = NodeValue.makeString("en") ; + NodeValue pat = NodeValue.makeString("") ; + NodeValue r = NodeFunctions.langMatches(nv, pat) ; + assertEquals(NodeValue.FALSE, r) ; + } + + @Test public void testIsIRI_1() { NodeValue nv = NodeValue.makeNode(NodeFactory.createURI("http://example/")) ; NodeValue r = NodeFunctions.isIRI(nv) ; assertEquals(NodeValue.TRUE, r) ; } - - @Test public void testIsIRI_2() - { + + @Test public void testIsIRI_2() { NodeValue nv = NodeValue.makeNode(NodeFactory.createLiteral("http://example/")) ; NodeValue r = NodeFunctions.isIRI(nv) ; assertEquals(NodeValue.FALSE, r) ; } - - @Test public void testIsBlank1() - { - NodeValue nv = NodeValue.makeNode(NodeFactory.createAnon()); + + @Test public void testIsBlank1() { + NodeValue nv = NodeValue.makeNode(NodeFactory.createAnon()) ; NodeValue r = NodeFunctions.isBlank(nv) ; assertEquals(NodeValue.TRUE, r) ; - + } - @Test public void testIsBlank2() - { + @Test public void testIsBlank2() { NodeValue nv = NodeValue.makeNode(NodeFactory.createLiteral("xyz")) ; NodeValue r = NodeFunctions.isBlank(nv) ; assertEquals(NodeValue.FALSE, r) ; } - @Test public void testIsBlank3() - { + @Test public void testIsBlank3() { NodeValue nv = NodeValue.makeNode(NodeFactory.createURI("http://example/")) ; NodeValue r = NodeFunctions.isBlank(nv) ; assertEquals(NodeValue.FALSE, r) ; - + } - - @Test public void testIsLiteral1() - { + + @Test public void testIsLiteral1() { NodeValue nv = NodeValue.makeNode(NodeFactory.createLiteral("xyz")) ; NodeValue r = NodeFunctions.isLiteral(nv) ; assertEquals(NodeValue.TRUE, r) ; } - @Test public void testIsLiteral2() - { + @Test public void testIsLiteral2() { NodeValue nv = NodeValue.makeNode(NodeFactory.createURI("http://example/")) ; NodeValue r = NodeFunctions.isLiteral(nv) ; assertEquals(NodeValue.FALSE, r) ;