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 2023/12/27 17:02:45 UTC
(jena) 08/10: Add tests (RDFString, ModelUtil, Lib)
This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git
commit be56ea9e96295fe10e4291925db53272c01499bd
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Sun Dec 24 22:07:14 2023 +0000
Add tests (RDFString, ModelUtil, Lib)
---
.../main/java/org/apache/jena/atlas/lib/Lib.java | 2 -
.../java/org/apache/jena/atlas/lib/TS_Lib.java | 8 +-
.../org/apache/jena/atlas/lib/TestBaseLib.java | 46 +++++++
.../apache/jena/graph/test/TestPackage_graph.java | 2 +
.../jena/graph/test/TestRDFStringLiterals.java | 145 +++++++++++++++++++++
.../jena/rdf/model/test/AbstractTestPackage.java | 4 +-
.../java/org/apache/jena/test/TestModelUtil.java | 96 ++++++++++++++
.../org/apache/jena/test/TestPackage_core.java | 2 +
8 files changed, 295 insertions(+), 10 deletions(-)
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
index 5ae21d676d..0356e6c80f 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Lib.java
@@ -146,8 +146,6 @@ public class Lib
return string.toUpperCase(Locale.ROOT);
}
-
-
public static final void sleep(int milliSeconds) {
try { Thread.sleep(milliSeconds); }
catch (InterruptedException ex) { Log.warn(Lib.class, "interrupted", ex); }
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java
index df01eb86da..6d92b0e321 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/lib/TS_Lib.java
@@ -28,7 +28,8 @@ import org.junit.runners.Suite ;
*/
@RunWith(Suite.class)
@Suite.SuiteClasses( {
- TestAlg.class
+ TestBaseLib.class
+ , TestAlg.class
, TestBitsLong.class
, TestBitsInt.class
, TestBytes.class
@@ -54,7 +55,4 @@ import org.junit.runners.Suite ;
, TestPowerSet.class
} )
-public class TS_Lib
-{
-
-}
+public class TS_Lib {}
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestBaseLib.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestBaseLib.java
new file mode 100644
index 0000000000..a9aeeb50e9
--- /dev/null
+++ b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestBaseLib.java
@@ -0,0 +1,46 @@
+/*
+ * 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 org.apache.jena.atlas.lib;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+/** Tests for operations in {@link Lib} */
+public class TestBaseLib {
+ @Test public void lowercase_1() { assertEquals("", Lib.lowercase("")); }
+ @Test public void lowercase_2() { assertEquals("abc", Lib.lowercase("AbC")); }
+ @Test public void lowercase_3() { assertEquals("abc", Lib.lowercase("ABC")); }
+ @Test public void lowercase_4() { assertEquals("abc", Lib.lowercase("abc")); }
+
+ @Test public void uppercase_1() { assertEquals("", Lib.uppercase("")); }
+ @Test public void uppercase_2() { assertEquals("ABC", Lib.uppercase("AbC")); }
+ @Test public void uppercase_3() { assertEquals("ABC", Lib.uppercase("ABC")); }
+ @Test public void uppercase_4() { assertEquals("ABC", Lib.uppercase("abc")); }
+
+ @Test public void isEmpty_1() { assertEquals(true, Lib.isEmpty("")); }
+ @Test public void isEmpty_2() { assertEquals(true, Lib.isEmpty(null)); }
+ @Test public void isEmpty_3() { assertEquals(false, Lib.isEmpty("X")); }
+
+ @Test public void concatpaths_1() { assertEquals("A/B", Lib.concatPaths("A", "B")); }
+ @Test public void concatpaths_2() { assertEquals("A/B", Lib.concatPaths("A/", "B")); }
+ @Test public void concatpaths_3() { assertEquals("/B", Lib.concatPaths("A", "/B")); }
+ @Test public void concatpaths_4() { assertEquals("A", Lib.concatPaths("A", "")); }
+ @Test public void concatpaths_5() { assertEquals("A/", Lib.concatPaths("A/", "")); }
+}
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestPackage_graph.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestPackage_graph.java
index 9431f4df45..5236ca13b5 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/TestPackage_graph.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestPackage_graph.java
@@ -54,8 +54,10 @@ public class TestPackage_graph extends TestSuite {
addTestSuite( TestGraphEvents.class );
addTestSuite( TestGraphBaseToString.class );
addTest( new JUnit4TestAdapter(TestNodeExtras.class) );
+ addTest( new JUnit4TestAdapter(TestRDFStringLiterals.class) );
// Has to be in a different package.
addTest( new JUnit4TestAdapter(TestGraphUtil.class) );
+
}
}
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/TestRDFStringLiterals.java b/jena-core/src/test/java/org/apache/jena/graph/test/TestRDFStringLiterals.java
new file mode 100644
index 0000000000..49bbb0bed8
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/TestRDFStringLiterals.java
@@ -0,0 +1,145 @@
+/*
+ * 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 org.apache.jena.graph.test;
+
+import static org.apache.jena.graph.TextDirection.*;
+import static org.junit.Assert.assertEquals;
+
+import org.apache.jena.datatypes.RDFDatatype;
+import org.apache.jena.datatypes.xsd.XSDDatatype;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.TextDirection;
+import org.apache.jena.shared.JenaException;
+import org.apache.jena.vocabulary.RDF;
+import org.junit.Test;
+
+/** Tests for create RDF Terms (@link Node Nodes}) involving strings
+ * (xsd:string, rdf:langString, rdf:dirLangString).
+ * Initial text direction introduced in RDF 1.2.
+ */
+public class TestRDFStringLiterals {
+
+ private static TextDirection noTextDirection = Node.noTextDirection;
+ private static String noLangTag = Node.noLangTag;
+
+ // ---- xsd:string
+
+ @Test public void string01() {
+ Node n = NodeFactory.createLiteralString("abc");
+ test(n, "abc", "", noTextDirection , XSDDatatype.XSDstring, "abc");
+ }
+
+ @Test public void string02() {
+ Node n = NodeFactory.createLiteralLang("abc", null);
+ test(n, "abc", "", null, XSDDatatype.XSDstring, "abc");
+ }
+
+ @Test public void string03() {
+ Node n = NodeFactory.createLiteralDirLang("abc", null, (String)null);
+ test(n, "abc", "", null, XSDDatatype.XSDstring, "abc");
+ }
+
+ @Test public void string04() {
+ Node n = NodeFactory.createLiteralDirLang("abc", "", "");
+ test(n, "abc", "", null, XSDDatatype.XSDstring, "abc");
+ }
+
+ // ---- rdf:langString
+
+ @Test public void strLang01() {
+ Node n = NodeFactory.createLiteralLang("abc", "en");
+ test(n, "abc", "en", null, RDF.dtLangString, "abc@en");
+ }
+
+ @Test public void strLang02() {
+ Node n = NodeFactory.createLiteralLang("abc", "EN");
+ test(n, "abc", "en", null, RDF.dtLangString, "abc@en");
+ }
+
+ @Test public void strLang03() {
+ Node n = NodeFactory.createLiteralLang("abc", "");
+ test(n, "abc", "", null, XSDDatatype.XSDstring, "abc");
+ }
+
+ // Make with explicit no text direction.
+
+ @Test public void strLang04() {
+ Node n = NodeFactory.createLiteralDirLang("abc", null, (String)null);
+ test(n, "abc", "", null, XSDDatatype.XSDstring, "abc");
+ }
+
+ @Test public void strLang05() {
+ // "" is a convenience of no direction.
+ Node n = NodeFactory.createLiteralDirLang("abc", "", "");
+ test(n, "abc", "", null, XSDDatatype.XSDstring, "abc");
+ }
+
+
+ // ---- rdf:dirLangString
+
+ @Test public void dirLangString01() {
+ Node n = NodeFactory.createLiteralDirLang("abc", "en", "rtl");
+ test(n, "abc", "en", RTL, RDF.dtDirLangString, "abc@en");
+ }
+
+ @Test public void dirLangString02() {
+ Node n = NodeFactory.createLiteralDirLang("abc", "en", "LTR");
+ test(n, "abc", "en", LTR, RDF.dtDirLangString, "abc@en");
+ }
+
+ // Errors
+
+ @Test(expected=JenaException.class)
+ public void rdfStringBad01() {
+ // No lang but with a direction
+ Node n = NodeFactory.createLiteralDirLang("abc", null, TextDirection.LTR);
+ }
+
+ @Test(expected=JenaException.class)
+ public void rdfStringBad02() {
+ // No lang but with a direction
+ Node n = NodeFactory.createLiteralDirLang("abc", "", TextDirection.LTR);
+ }
+
+ @Test(expected=NullPointerException.class)
+ public void rdfStringBad03() {
+ Node n = NodeFactory.createLiteralString((String)null);
+ }
+
+ @Test(expected=NullPointerException.class)
+ public void rdfStringBad04() {
+ Node n = NodeFactory.createLiteralLang((String)null, "en");
+ }
+
+ @Test(expected=NullPointerException.class)
+ public void rdfStringBad05() {
+ Node n = NodeFactory.createLiteralDirLang((String)null, "en", TextDirection.LTR);
+ }
+
+ // ----
+
+ private static void test(Node node, String lexicalForm, String lang, TextDirection textDir, RDFDatatype datatype, String indexingValue) {
+ assertEquals("Lexical form:", lexicalForm, node.getLiteralLexicalForm());
+ assertEquals("Language:", lang, node.getLiteralLanguage());
+ assertEquals("Text Direction:", textDir, node.getLiteralTextDirection());
+ assertEquals("Datatype:", datatype, node.getLiteralDatatype());
+ assertEquals("Indexing:", indexingValue, node.getIndexingValue());
+ }
+}
diff --git a/jena-core/src/test/java/org/apache/jena/rdf/model/test/AbstractTestPackage.java b/jena-core/src/test/java/org/apache/jena/rdf/model/test/AbstractTestPackage.java
index 554c02daef..eb1ac6cf69 100644
--- a/jena-core/src/test/java/org/apache/jena/rdf/model/test/AbstractTestPackage.java
+++ b/jena-core/src/test/java/org/apache/jena/rdf/model/test/AbstractTestPackage.java
@@ -56,9 +56,7 @@ public abstract class AbstractTestPackage extends TestSuite
* @throws IllegalAccessException
* @throws InvocationTargetException
*/
- protected AbstractTestPackage( final String suiteName,
- final TestingModelFactory modelFactory )
- {
+ protected AbstractTestPackage( String suiteName, TestingModelFactory modelFactory ) {
super(suiteName);
addTest(TestModelFactory.class);
diff --git a/jena-core/src/test/java/org/apache/jena/test/TestModelUtil.java b/jena-core/src/test/java/org/apache/jena/test/TestModelUtil.java
new file mode 100644
index 0000000000..a9d1b92b89
--- /dev/null
+++ b/jena-core/src/test/java/org/apache/jena/test/TestModelUtil.java
@@ -0,0 +1,96 @@
+/*
+ * 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 org.apache.jena.test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import junit.framework.TestSuite;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.rdf.model.impl.Util;
+import org.junit.Test;
+
+/** Tests for {@link org.apache.jena.rdf.model.impl.Util} */
+public class TestModelUtil extends TestSuite {
+
+ public static TestSuite suite() {
+ return new TestSuite(TestModelUtil.class);
+ }
+
+ // -- xsd:string
+
+ @Test public void testIsSimpleString1() {
+ Node n = NodeFactory.createLiteralString("abc");
+ assertTrue(Util.isSimpleString(n));
+ assertFalse(Util.isLangString(n));
+ assertFalse(Util.isDirLangString(n));
+ assertFalse(Util.hasLang(n));
+ assertFalse(Util.hasDirection(n));
+ }
+
+ @Test public void testIsSimpleString2() {
+ Node n = NodeFactory.createLiteralLang("abc", "");
+ assertTrue(Util.isSimpleString(n));
+ assertFalse(Util.isLangString(n));
+ assertFalse(Util.isDirLangString(n));
+ assertFalse(Util.hasLang(n));
+ assertFalse(Util.hasDirection(n));
+ }
+
+ @Test public void testIsSimpleString3() {
+ Node n = NodeFactory.createLiteralDirLang("abc", "", (String)null);
+ assertTrue(Util.isSimpleString(n));
+ assertFalse(Util.isLangString(n));
+ assertFalse(Util.isDirLangString(n));
+ assertFalse(Util.hasLang(n));
+ assertFalse(Util.hasDirection(n));
+ }
+
+ // -- rdf:langString
+
+ @Test public void testIsLangString1() {
+ Node n = NodeFactory.createLiteralLang("abc", "en-GB");
+ assertFalse(Util.isSimpleString(n));
+ assertTrue(Util.isLangString(n));
+ assertFalse(Util.isDirLangString(n));
+ assertTrue(Util.hasLang(n));
+ assertFalse(Util.hasDirection(n));
+ }
+
+ @Test public void testIsLangString2() {
+ Node n = NodeFactory.createLiteralDirLang("abc", "en-GB", (String)null);
+ assertFalse(Util.isSimpleString(n));
+ assertTrue(Util.isLangString(n));
+ assertFalse(Util.isDirLangString(n));
+ assertTrue(Util.hasLang(n));
+ assertFalse(Util.hasDirection(n));
+ }
+
+ // -- rdf:dirLangString (only one way to make it)
+
+ @Test public void testIsDirLangString1() {
+ Node n = NodeFactory.createLiteralDirLang("abc", "en-GB", "ltr");
+ assertFalse(Util.isSimpleString(n));
+ assertFalse(Util.isLangString(n));
+ assertTrue(Util.isDirLangString(n));
+ assertTrue(Util.hasLang(n));
+ assertTrue(Util.hasDirection(n));
+ }
+}
diff --git a/jena-core/src/test/java/org/apache/jena/test/TestPackage_core.java b/jena-core/src/test/java/org/apache/jena/test/TestPackage_core.java
index a953267149..cb3e7507be 100644
--- a/jena-core/src/test/java/org/apache/jena/test/TestPackage_core.java
+++ b/jena-core/src/test/java/org/apache/jena/test/TestPackage_core.java
@@ -43,6 +43,7 @@ public class TestPackage_core extends TestCase {
addTest(ts, "Mem", org.apache.jena.mem.test.TestMemPackage.suite() );
addTest(ts, "Mem2", org.apache.jena.mem.test.TestGraphMemPackage.suite() );
addTest(ts, "Model", org.apache.jena.rdf.model.test.TestPackage_model.suite());
+
addTest(ts, "StandardModels", org.apache.jena.rdf.model.test.TestStandardModels.suite() );
// Currently, "ARP[IRIx]"
addTest(ts, "XML Input", org.apache.jena.rdfxml.xmlinput1.TestPackage_xmlinput1.suite());
@@ -62,6 +63,7 @@ public class TestPackage_core extends TestCase {
// Local TTL parser for tests - not fully compliant.
addTest(ts, "Turtle", org.apache.jena.ttl_test.test.turtle.TurtleTestSuite.suite()) ;
+ addTest(ts, "ModelUtils", org.apache.jena.test.TestModelUtil.suite());
return ts ;
}