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 2014/11/30 11:28:35 UTC

[2/2] jena git commit: JENA-818 : More tests for LiteralLabel.sameValueAs

JENA-818 : More tests for LiteralLabel.sameValueAs

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

Branch: refs/heads/master
Commit: bc2d4458fc537afc4cabd1a59975e92e092e90e6
Parents: a89706e
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Nov 30 10:28:21 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Nov 30 10:28:21 2014 +0000

----------------------------------------------------------------------
 .../jena/datatypes/xsd/impl/RDFLangString.java  |  4 +-
 .../jena/datatypes/xsd/impl/XMLLiteralType.java |  4 +-
 .../graph/test/TestLiteralLabelSameValueAs.java | 99 ++++++++++++++++++++
 .../hpl/jena/graph/test/TestLiteralLabels.java  |  1 +
 .../com/hp/hpl/jena/graph/test/TestPackage.java |  1 +
 .../hpl/jena/graph/test/TestTypedLiterals.java  |  1 +
 6 files changed, 106 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/bc2d4458/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/RDFLangString.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/RDFLangString.java b/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/RDFLangString.java
index 08cc197..5bd6973 100644
--- a/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/RDFLangString.java
+++ b/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/RDFLangString.java
@@ -21,7 +21,6 @@ package com.hp.hpl.jena.datatypes.xsd.impl;
 import com.hp.hpl.jena.datatypes.BaseDatatype ;
 import com.hp.hpl.jena.datatypes.RDFDatatype ;
 import com.hp.hpl.jena.graph.impl.LiteralLabel ;
-import com.hp.hpl.jena.vocabulary.RDF ;
 
 /** rdf:langString.
  * This covers the unusual case of "foo"^^"rdf:langString"
@@ -31,7 +30,8 @@ import com.hp.hpl.jena.vocabulary.RDF ;
 
 public class RDFLangString extends BaseDatatype implements RDFDatatype {
     /** Singleton instance */
-    public static final RDFDatatype rdfLangString = new RDFLangString(RDF.getURI() + "langString");
+    // Include the string for the RDF namespace, not use RDF.getURI(), to avoid an initializer circularity
+    public static final RDFDatatype rdfLangString = new RDFLangString("http://www.w3.org/1999/02/22-rdf-syntax-ns#langString");
     
     /**
      * Private constructor.

http://git-wip-us.apache.org/repos/asf/jena/blob/bc2d4458/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/XMLLiteralType.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/XMLLiteralType.java b/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/XMLLiteralType.java
index 26f3c7db..2116682 100644
--- a/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/XMLLiteralType.java
+++ b/jena-core/src/main/java/com/hp/hpl/jena/datatypes/xsd/impl/XMLLiteralType.java
@@ -33,7 +33,6 @@ import com.hp.hpl.jena.rdfxml.xmlinput.ARP ;
 import com.hp.hpl.jena.rdfxml.xmlinput.AResource ;
 import com.hp.hpl.jena.rdfxml.xmlinput.StatementHandler ;
 import com.hp.hpl.jena.shared.BrokenException ;
-import com.hp.hpl.jena.vocabulary.RDF ;
 
 /**
  * Builtin data type to represent XMLLiteral (i.e. items created
@@ -41,7 +40,8 @@ import com.hp.hpl.jena.vocabulary.RDF ;
  */
 public class XMLLiteralType extends BaseDatatype implements RDFDatatype {
     /** Singleton instance */
-    public static final RDFDatatype theXMLLiteralType = new XMLLiteralType(RDF.getURI() + "XMLLiteral");
+    // Include the string for the RDF namespace, not use RDF.getURI(), to avoid an initializer circularity
+    public static final RDFDatatype theXMLLiteralType = new XMLLiteralType("http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral");
     
     /**
      * Private constructor.

http://git-wip-us.apache.org/repos/asf/jena/blob/bc2d4458/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestLiteralLabelSameValueAs.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestLiteralLabelSameValueAs.java b/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestLiteralLabelSameValueAs.java
new file mode 100644
index 0000000..63d6709
--- /dev/null
+++ b/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestLiteralLabelSameValueAs.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.graph.test;
+
+import static org.junit.Assert.* ;
+import junit.framework.JUnit4TestAdapter ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.datatypes.RDFDatatype ;
+import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
+import com.hp.hpl.jena.graph.NodeFactory ;
+import com.hp.hpl.jena.graph.impl.LiteralLabel ;
+import com.hp.hpl.jena.graph.impl.LiteralLabelFactory ;
+
+// See also TestTypedLiterals
+/** Tests for LiteralLabel.sameValueAs
+ *  These tests shoudl work for RDF 1.0 and RDF 1.1 
+ */
+public class TestLiteralLabelSameValueAs
+{
+    public TestLiteralLabelSameValueAs() {} 
+
+    public static junit.framework.Test suite() {
+        return new JUnit4TestAdapter(TestLiteralLabelSameValueAs.class) ;
+    }
+    
+    private static void testSameValueAs(LiteralLabel lit1, LiteralLabel lit2, boolean sameValue) {
+        assertEquals("lit1 sameValueAs lit2", sameValue, lit1.sameValueAs(lit2)) ;
+        assertEquals("lit2 sameValueAs lit1", sameValue, lit2.sameValueAs(lit1)) ;
+        if ( ! sameValue ) {
+            // ! SameValue => ! equals 
+            assertFalse(lit1.equals(lit2)) ;
+            assertFalse(lit2.equals(lit1)) ;
+        } 
+    }
+    
+    private static LiteralLabel gen(String lex, RDFDatatype dt) {
+        return  LiteralLabelFactory.create(lex, dt) ;
+    }
+
+    private static LiteralLabel gen(String lex, String lang) {
+        return LiteralLabelFactory.create(lex, lang) ;
+    }
+    
+    private static LiteralLabel gen(String lex) {
+        return LiteralLabelFactory.create(lex) ;
+    }
+
+    static RDFDatatype dtUnknown = NodeFactory.getType("http://example/unknown") ; 
+    
+    // Strings.
+    @Test public void literalLabel_string_01()     { testSameValueAs(gen("abc"), gen("abc"), true) ; }
+    @Test public void literalLabel_string_02()     { testSameValueAs(gen("abc"), gen("abcd"), false) ; }
+    @Test public void literalLabel_string_03()     { testSameValueAs(gen("abc"), gen("abc", XSDDatatype.XSDstring), true) ; }
+    
+    // Lang
+    @Test public void literalLabel_lang_01()     { testSameValueAs(gen("abc", "en"), gen("abc", "en-uk"), false) ; }
+    @Test public void literalLabel_lang_02()     { testSameValueAs(gen("abc", "en"), gen("abc", "EN"), true) ; }
+    @Test public void literalLabel_lang_03()     { testSameValueAs(gen("abc", "en"), gen("abc", "en-uk"), false) ; }
+    
+    // Decimal derived types.
+    @Test public void literalLabel_numeric_01()     { testSameValueAs(gen("01", XSDDatatype.XSDinteger), gen("+1", XSDDatatype.XSDinteger), true) ; }
+    @Test public void literalLabel_numeric_02()     { testSameValueAs(gen("01", XSDDatatype.XSDinteger), gen("+1", XSDDatatype.XSDint), true) ; }
+    @Test public void literalLabel_numeric_03()     { testSameValueAs(gen("-01", XSDDatatype.XSDinteger), gen("-1", XSDDatatype.XSDdecimal), true) ; }
+    @Test public void literalLabel_numeric_04()     { testSameValueAs(gen("-01", XSDDatatype.XSDinteger), gen("-1.0", XSDDatatype.XSDdecimal), true) ; }
+    
+    @Test public void literalLabel_numeric_05()     { testSameValueAs(gen("+1", XSDDatatype.XSDdouble), gen("1e0", XSDDatatype.XSDdouble), true) ; }
+    @Test public void literalLabel_numeric_06()     { testSameValueAs(gen("-10e-1", XSDDatatype.XSDfloat), gen("-0.1e1", XSDDatatype.XSDfloat), true) ; }
+    
+    // Not across double/integer
+    @Test public void literalLabel_numeric_10()     { testSameValueAs(gen("1", XSDDatatype.XSDinteger), gen("1e0", XSDDatatype.XSDdouble), false) ; }
+    
+    // Unknown
+    @Test public void literalLabel_unknown_01()     { testSameValueAs(gen("abc", dtUnknown), gen("abc", dtUnknown), true) ; }
+    @Test public void literalLabel_unknown_02()     { testSameValueAs(gen("abc", dtUnknown), gen("xyz", dtUnknown), false) ; }
+    @Test public void literalLabel_unknown_03()     { testSameValueAs(gen("1", XSDDatatype.XSDinteger), gen("1", dtUnknown), false) ; }
+    
+    // Bad lexical forms.
+    @Test public void literalLabel_bad_01()     { testSameValueAs(gen("abc",XSDDatatype.XSDinteger), gen("abc"), false) ; }
+    @Test public void literalLabel_bad_03()     { testSameValueAs(gen("abc", XSDDatatype.XSDinteger), gen("abc", dtUnknown), false) ; }
+
+    
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/bc2d4458/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestLiteralLabels.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestLiteralLabels.java b/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestLiteralLabels.java
index 7de1a82..ebd284c 100644
--- a/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestLiteralLabels.java
+++ b/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestLiteralLabels.java
@@ -26,6 +26,7 @@ import com.hp.hpl.jena.datatypes.RDFDatatype ;
 import com.hp.hpl.jena.graph.impl.LiteralLabel ;
 import com.hp.hpl.jena.graph.impl.LiteralLabelFactory ;
 
+// See also TestLiteralLabelSameValueAs, TestTypedLiterals
 public class TestLiteralLabels extends GraphTestBase
 {
     public TestLiteralLabels(String name)

http://git-wip-us.apache.org/repos/asf/jena/blob/bc2d4458/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestPackage.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestPackage.java b/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestPackage.java
index d42b6f9..05edbea 100644
--- a/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestPackage.java
+++ b/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestPackage.java
@@ -35,6 +35,7 @@ public class TestPackage extends TestSuite {
         super("graph");
         addTest( TestFindLiterals.suite() );
         addTest( TestLiteralLabels.suite() );
+        addTest( TestLiteralLabelSameValueAs.suite() );
         addTest( TestNode.suite() );
         addTest( TestTriple.suite() );
         addTest( TestTripleField.suite() );

http://git-wip-us.apache.org/repos/asf/jena/blob/bc2d4458/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestTypedLiterals.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestTypedLiterals.java b/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestTypedLiterals.java
index 664241e..127c84a 100644
--- a/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestTypedLiterals.java
+++ b/jena-core/src/test/java/com/hp/hpl/jena/graph/test/TestTypedLiterals.java
@@ -50,6 +50,7 @@ import com.hp.hpl.jena.vocabulary.XSD ;
 /**
  * Unit test for the typed literal machinery - including RDFDatatype,
  * TypeMapper and LiteralLabel.
+ * See also TestLiteralLabelSameValueAs
  */
 public class TestTypedLiterals extends TestCase {