This is an automated email from the ASF dual-hosted git repository. afs pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit ec739a53b2ba3c2853725fbcc7a21675ab5dcce1 Author: Andy Seaborne <[email protected]> AuthorDate: Mon Sep 7 14:58:43 2026 +0100 GH-3236: Convert EnhNode testing to JUnit6 --- .../enhanced/{TestProperty.java => TS6_enh.java} | 23 ++- .../enhanced/{TestAllImpl.java => T_AllImpl.java} | 26 +-- .../{TestCommonImpl.java => T_CommonImpl.java} | 20 +- .../jena/enhanced/{TestModel.java => T_Model.java} | 8 +- .../{TestModelImpl.java => T_ModelImpl.java} | 18 +- .../jena/enhanced/{TestNode.java => T_Node.java} | 10 +- .../enhanced/{TestObject.java => T_Object.java} | 4 +- .../{TestObjectImpl.java => T_ObjectImpl.java} | 16 +- .../{TestProperty.java => T_Property.java} | 6 +- .../{TestPropertyImpl.java => T_PropertyImpl.java} | 14 +- .../enhanced/{TestSubject.java => T_Subject.java} | 6 +- .../{TestSubjectImpl.java => T_SubjectImpl.java} | 14 +- .../enhanced/{TS3_enh.java => TestEnhanced.java} | 226 +++++++++++---------- .../org/apache/jena/test/JenaCoreTestAll_JU4.java | 2 +- .../org/apache/jena/test/JenaCoreTestAll_JU6.java | 3 + 15 files changed, 206 insertions(+), 190 deletions(-) diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestProperty.java b/jena-core/src/test/java/org/apache/jena/enhanced/TS6_enh.java similarity index 71% copy from jena-core/src/test/java/org/apache/jena/enhanced/TestProperty.java copy to jena-core/src/test/java/org/apache/jena/enhanced/TS6_enh.java index 7b4ab3d4a1..0e1edba40e 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestProperty.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/TS6_enh.java @@ -21,13 +21,20 @@ package org.apache.jena.enhanced; -import org.apache.jena.rdf.model.RDFNode; +import org.junit.platform.suite.api.BeforeSuite; +import org.junit.platform.suite.api.SelectClasses; +import org.junit.platform.suite.api.Suite; -/** - * @see TestObject - */ -public interface TestProperty extends RDFNode, TestNode { - - boolean isProperty(); - TestObject anObject(); +import org.apache.jena.test.JenaTestLib; + +@Suite +@SelectClasses({ + TestEnhanced.class +}) + +public class TS6_enh { + @BeforeSuite + public static void beforeSuite() { + JenaTestLib.setup(); + } } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestAllImpl.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_AllImpl.java similarity index 77% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestAllImpl.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_AllImpl.java index 0ec843c748..eee7d43d09 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestAllImpl.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_AllImpl.java @@ -23,7 +23,7 @@ package org.apache.jena.enhanced; import org.apache.jena.graph.*; import org.apache.jena.rdf.model.*; -public class TestAllImpl extends TestCommonImpl implements TestSubject, TestProperty, TestObject { +public class T_AllImpl extends T_CommonImpl implements T_Subject, T_Property, T_Object { public static final Implementation factory = new Implementation() { @Override @@ -31,12 +31,12 @@ public class TestAllImpl extends TestCommonImpl implements TestSubject, TestProp { return true; } @Override public EnhNode wrap(Node n,EnhGraph eg) { - return new TestAllImpl(n,eg); + return new T_AllImpl(n,eg); } }; - /** Creates a new instance of TestAllImpl */ - private TestAllImpl(Node n,EnhGraph eg) { + /** Creates a new instance of T_AllImpl */ + private T_AllImpl(Node n,EnhGraph eg) { super( n, eg ); } @@ -44,9 +44,9 @@ public class TestAllImpl extends TestCommonImpl implements TestSubject, TestProp { // return convertTo( t ) != null; return - t == TestProperty.class ? isProperty() - : t == TestSubject.class ? isSubject() - : t == TestObject.class ? isObject() + t == T_Property.class ? isProperty() + : t == T_Subject.class ? isSubject() + : t == T_Object.class ? isObject() : false ; } @@ -67,24 +67,24 @@ public class TestAllImpl extends TestCommonImpl implements TestSubject, TestProp } @Override - public TestObject anObject() { + public T_Object anObject() { if (!isProperty()) throw new IllegalStateException("Node is not the property of a triple."); - return enhGraph.getNodeAs(findPredicate().getObject(),TestObject.class); + return enhGraph.getNodeAs(findPredicate().getObject(),T_Object.class); } @Override - public TestProperty aProperty() { + public T_Property aProperty() { if (!isSubject()) throw new IllegalStateException("Node is not the subject of a triple."); - return enhGraph.getNodeAs(findSubject().getPredicate(),TestProperty.class); + return enhGraph.getNodeAs(findSubject().getPredicate(),T_Property.class); } @Override - public TestSubject aSubject() { + public T_Subject aSubject() { if (!isObject()) throw new IllegalStateException("Node is not the object of a triple."); - return enhGraph.getNodeAs(findObject().getSubject(),TestSubject.class); + return enhGraph.getNodeAs(findObject().getSubject(),T_Subject.class); } @Override diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestCommonImpl.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_CommonImpl.java similarity index 84% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestCommonImpl.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_CommonImpl.java index 104b9e3cbb..bdb8e8eb9d 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestCommonImpl.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_CommonImpl.java @@ -25,15 +25,15 @@ import org.apache.jena.rdf.model.*; import org.apache.jena.shared.JenaException; import org.apache.jena.util.iterator.*; -class TestCommonImpl extends EnhNode implements TestNode { +class T_CommonImpl extends EnhNode implements T_Node { - /** Creates new TestCommonImpl */ - TestCommonImpl(Node n, EnhGraph m ) { + /** Creates new T_CommonImpl */ + T_CommonImpl(Node n, EnhGraph m ) { super(n,m); } /** - We can't return TestModel now, because it clashes with the getModel() + We can't return T_Model now, because it clashes with the getModel() in RDFNode, which we have to inherit because of the personality tests. Fortunately the EnhGraph test set doesn't /need/ getModel, so we give it return type Model and throw an exception if it's ever called. @@ -71,18 +71,18 @@ class TestCommonImpl extends EnhNode implements TestNode { // Convenience routines, that wrap the generic // routines from EnhNode. @Override - public TestSubject asSubject() { - return asInternal(TestSubject.class); + public T_Subject asSubject() { + return asInternal(T_Subject.class); } @Override - public TestProperty asProperty() { - return asInternal(TestProperty.class); + public T_Property asProperty() { + return asInternal(T_Property.class); } @Override - public TestObject asObject() { - return asInternal(TestObject.class); + public T_Object asObject() { + return asInternal(T_Object.class); } public RDFNode inModel(Model m) { diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestModel.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_Model.java similarity index 90% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestModel.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_Model.java index ea1180e329..853b6b88aa 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestModel.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_Model.java @@ -26,9 +26,9 @@ package org.apache.jena.enhanced; * It allows you to access an arbitrary subject node, * or property node, or object node from the graph. */ -public interface TestModel { - TestSubject aSubject(); - TestProperty aProperty(); - TestObject anObject(); +public interface T_Model { + T_Subject aSubject(); + T_Property aProperty(); + T_Object anObject(); } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestModelImpl.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_ModelImpl.java similarity index 74% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestModelImpl.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_ModelImpl.java index 9b94945e06..8ed6dae892 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestModelImpl.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_ModelImpl.java @@ -24,10 +24,10 @@ import org.apache.jena.graph.*; import org.apache.jena.rdf.model.RDFNode; import org.apache.jena.util.iterator.*; -public class TestModelImpl extends EnhGraph implements TestModel { +public class T_ModelImpl extends EnhGraph implements T_Model { - /** Creates a new instance of TestModelImpl */ - public TestModelImpl(Graph g, Personality<RDFNode> p) { + /** Creates a new instance of T_ModelImpl */ + public T_ModelImpl(Graph g, Personality<RDFNode> p) { super(g,p); } private Triple aTriple() @@ -43,18 +43,18 @@ public class TestModelImpl extends EnhGraph implements TestModel { } @Override - public TestObject anObject() { - return getNodeAs(aTriple().getObject(),TestObject.class); + public T_Object anObject() { + return getNodeAs(aTriple().getObject(),T_Object.class); } @Override - public TestProperty aProperty() { - return getNodeAs(aTriple().getPredicate(),TestProperty.class); + public T_Property aProperty() { + return getNodeAs(aTriple().getPredicate(),T_Property.class); } @Override - public TestSubject aSubject() { - return getNodeAs(aTriple().getSubject(),TestSubject.class); + public T_Subject aSubject() { + return getNodeAs(aTriple().getSubject(),T_Subject.class); } } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestNode.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_Node.java similarity index 88% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestNode.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_Node.java index 85be04acfc..ee49cf1465 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestNode.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_Node.java @@ -21,13 +21,13 @@ package org.apache.jena.enhanced; -public interface TestNode { +public interface T_Node { // Convenience routines for converting between different // views using the subinterfaces, // These are implemented in the base implementation class - // TestCommonImpl. - TestSubject asSubject(); - TestObject asObject(); - TestProperty asProperty(); + // T_CommonImpl. + T_Subject asSubject(); + T_Object asObject(); + T_Property asProperty(); } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestObject.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_Object.java similarity index 93% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestObject.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_Object.java index 99324eb1b3..98e9e91489 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestObject.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_Object.java @@ -26,7 +26,7 @@ import org.apache.jena.rdf.model.RDFNode; /** * An interface for viewing object nodes in the graph. */ -public interface TestObject extends RDFNode, TestNode { +public interface T_Object extends RDFNode, T_Node { /** * Checks whether this node is right now the object of some @@ -39,5 +39,5 @@ public interface TestObject extends RDFNode, TestNode { * * @return the subject of a triple. */ - TestSubject aSubject(); + T_Subject aSubject(); } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestObjectImpl.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_ObjectImpl.java similarity index 83% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestObjectImpl.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_ObjectImpl.java index 9ca26342b1..0eef2ac3fe 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestObjectImpl.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_ObjectImpl.java @@ -24,9 +24,9 @@ import org.apache.jena.graph.*; import org.apache.jena.rdf.model.RDFNode; /** - * See {@link TestObject} for more detailed documentation. + * See {@link T_Object} for more detailed documentation. */ -public class TestObjectImpl extends TestCommonImpl implements TestObject { +public class T_ObjectImpl extends T_CommonImpl implements T_Object { /** The required field is the factory field, of * class Implementation. @@ -40,14 +40,14 @@ public class TestObjectImpl extends TestCommonImpl implements TestObject { Note the constructor can/should be private. */ @Override public EnhNode wrap(Node n,EnhGraph eg) - { return new TestObjectImpl(n,eg); } + { return new T_ObjectImpl(n,eg); } @Override public boolean canWrap( Node n, EnhGraph eg ) { return true; } }; - /** Creates a new instance of TestAllImpl */ - private TestObjectImpl(Node n,EnhGraph eg) { + /** Creates a new instance of T_AllImpl */ + private T_ObjectImpl(Node n,EnhGraph eg) { super( n, eg ); } @@ -65,12 +65,12 @@ public class TestObjectImpl extends TestCommonImpl implements TestObject { * (If the underlying graph has changed for the worse will * users prefer an early and unambiguous exception at this point). * - * @see org.apache.jena.enhanced.TestObject#aSubject() + * @see org.apache.jena.enhanced.T_Object#aSubject() */ @Override - public TestSubject aSubject() { + public T_Subject aSubject() { if (!isObject()) throw new IllegalStateException("Node is not the object of a triple."); - return enhGraph.getNodeAs(findObject().getSubject(),TestSubject.class); + return enhGraph.getNodeAs(findObject().getSubject(),T_Subject.class); } } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestProperty.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_Property.java similarity index 90% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestProperty.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_Property.java index 7b4ab3d4a1..471c31a151 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestProperty.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_Property.java @@ -24,10 +24,10 @@ package org.apache.jena.enhanced; import org.apache.jena.rdf.model.RDFNode; /** - * @see TestObject + * @see T_Object */ -public interface TestProperty extends RDFNode, TestNode { +public interface T_Property extends RDFNode, T_Node { boolean isProperty(); - TestObject anObject(); + T_Object anObject(); } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestPropertyImpl.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_PropertyImpl.java similarity index 81% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestPropertyImpl.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_PropertyImpl.java index c91d374147..295b2648d0 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestPropertyImpl.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_PropertyImpl.java @@ -24,21 +24,21 @@ import org.apache.jena.graph.*; import org.apache.jena.rdf.model.RDFNode; /** - * @see TestObjectImpl + * @see T_ObjectImpl */ -public class TestPropertyImpl extends TestCommonImpl implements TestProperty { +public class T_PropertyImpl extends T_CommonImpl implements T_Property { public static final Implementation factory = new Implementation() { @Override public EnhNode wrap(Node n,EnhGraph eg) { - return new TestPropertyImpl(n,eg); + return new T_PropertyImpl(n,eg); } @Override public boolean canWrap( Node n, EnhGraph eg ) { return true; } }; - /** Creates a new instance of TestAllImpl */ - private TestPropertyImpl(Node n,EnhGraph eg) { + /** Creates a new instance of T_AllImpl */ + private T_PropertyImpl(Node n,EnhGraph eg) { super( n, eg ); } @@ -51,10 +51,10 @@ public class TestPropertyImpl extends TestCommonImpl implements TestProperty { } @Override - public TestObject anObject() { + public T_Object anObject() { if (!isProperty()) throw new IllegalStateException("Node is not the property of a triple."); - return enhGraph.getNodeAs(findPredicate().getObject(),TestObject.class); + return enhGraph.getNodeAs(findPredicate().getObject(),T_Object.class); } } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestSubject.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_Subject.java similarity index 90% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestSubject.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_Subject.java index a59f608c82..fd6c243f51 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestSubject.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_Subject.java @@ -24,10 +24,10 @@ package org.apache.jena.enhanced; import org.apache.jena.rdf.model.RDFNode; /** - * @see TestObject + * @see T_Object */ -public interface TestSubject extends RDFNode, TestNode { +public interface T_Subject extends RDFNode, T_Node { boolean isSubject(); - TestProperty aProperty(); + T_Property aProperty(); } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TestSubjectImpl.java b/jena-core/src/test/java/org/apache/jena/enhanced/T_SubjectImpl.java similarity index 84% rename from jena-core/src/test/java/org/apache/jena/enhanced/TestSubjectImpl.java rename to jena-core/src/test/java/org/apache/jena/enhanced/T_SubjectImpl.java index ea6131ee6c..6fb950132f 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TestSubjectImpl.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/T_SubjectImpl.java @@ -24,9 +24,9 @@ package org.apache.jena.enhanced; import org.apache.jena.graph.*; import org.apache.jena.rdf.model.RDFNode; /** - * @see TestObjectImpl + * @see T_ObjectImpl */ -public class TestSubjectImpl extends TestCommonImpl implements TestSubject { +public class T_SubjectImpl extends T_CommonImpl implements T_Subject { public static final Implementation factory = new Implementation() { @Override @@ -34,12 +34,12 @@ public class TestSubjectImpl extends TestCommonImpl implements TestSubject { { return true; } @Override public EnhNode wrap(Node n,EnhGraph eg) { - return new TestSubjectImpl(n,eg); + return new T_SubjectImpl(n,eg); } }; - /** Creates a new instance of TestAllImpl */ - private TestSubjectImpl(Node n,EnhGraph eg) { + /** Creates a new instance of T_AllImpl */ + private T_SubjectImpl(Node n,EnhGraph eg) { super( n, eg ); } @@ -52,9 +52,9 @@ public class TestSubjectImpl extends TestCommonImpl implements TestSubject { } @Override - public TestProperty aProperty() { + public T_Property aProperty() { if (!isSubject()) throw new IllegalStateException("Node is not the subject of a triple."); - return enhGraph.getNodeAs(findSubject().getPredicate(),TestProperty.class); + return enhGraph.getNodeAs(findSubject().getPredicate(),T_Property.class); } } diff --git a/jena-core/src/test/java/org/apache/jena/enhanced/TS3_enh.java b/jena-core/src/test/java/org/apache/jena/enhanced/TestEnhanced.java similarity index 67% rename from jena-core/src/test/java/org/apache/jena/enhanced/TS3_enh.java rename to jena-core/src/test/java/org/apache/jena/enhanced/TestEnhanced.java index fa31bd2c8b..9f28016396 100644 --- a/jena-core/src/test/java/org/apache/jena/enhanced/TS3_enh.java +++ b/jena-core/src/test/java/org/apache/jena/enhanced/TestEnhanced.java @@ -19,26 +19,34 @@ * SPDX-License-Identifier: Apache-2.0 */ -/* - * EnhancedTestSuite.java - * - * Created on 27 November 2002, 04:53 - */ - package org.apache.jena.enhanced; -import junit.framework.TestCase; -import junit.framework.TestSuite; -import org.apache.jena.graph.*; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +import org.apache.jena.graph.Graph; +import org.apache.jena.graph.GraphMemFactory; +import org.apache.jena.graph.GraphTestLib; +import org.apache.jena.graph.Node; +import org.apache.jena.graph.NodeFactory; import org.apache.jena.junit.NodeCreateUtils; -import org.apache.jena.rdf.model.*; +import org.apache.jena.rdf.model.Literal; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.Property; +import org.apache.jena.rdf.model.RDFNode; +import org.apache.jena.rdf.model.RDFVisitor; +import org.apache.jena.rdf.model.Resource; +import org.apache.jena.rdf.model.ResourceFactory; +import org.apache.jena.rdf.model.StatementTerm; import org.apache.jena.shared.JenaException; +import org.apache.jena.test.JenaTestLib; /** * These tests give a small version of a model-like interface - {@link TestModel} with different views - * over the nodes in the graph {@link TestSubject}, - *{@link TestProperty} {@link TestObject} + {@link T_Model} with different views + * over the nodes in the graph {@link T_Subject}, + *{@link T_Property} {@link T_Object} *Any node can be any one of these three, but the interface only works *if the node is the subject, property or object, respectively, of some triple in the graph. @@ -52,7 +60,9 @@ import org.apache.jena.shared.JenaException; *These tests only test EnhNode polymorphism and not EnhGraph polymorphism. *EnhGraph polymorphism currently will not work. */ -public class TS3_enh extends TestCase { +public class TestEnhanced { + + static { JenaTestLib.setup(); } static final private Personality<RDFNode> split = new Personality<>(); @@ -67,31 +77,23 @@ public class TS3_enh extends TestCase { // Note this does not guarantee that the only implementations // of each interface will be the one specified. // See bitOfBoth. - split.add( TestObject.class, TestObjectImpl.factory ); - split.add( TestSubject.class, TestSubjectImpl.factory ); - split.add( TestProperty.class, TestPropertyImpl.factory ); + split.add( T_Object.class, T_ObjectImpl.factory ); + split.add( T_Subject.class, T_SubjectImpl.factory ); + split.add( T_Property.class, T_PropertyImpl.factory ); - combo.add( TestObject.class, TestAllImpl.factory ); - combo.add( TestSubject.class, TestAllImpl.factory ); - combo.add( TestProperty.class, TestAllImpl.factory ); + combo.add( T_Object.class, T_AllImpl.factory ); + combo.add( T_Subject.class, T_AllImpl.factory ); + combo.add( T_Property.class, T_AllImpl.factory ); - bitOfBoth.add( TestObject.class, TestObjectImpl.factory ); - bitOfBoth.add( TestSubject.class, TestSubjectImpl.factory ); - bitOfBoth.add( TestProperty.class, TestAllImpl.factory ); + bitOfBoth.add( T_Object.class, T_ObjectImpl.factory ); + bitOfBoth.add( T_Subject.class, T_SubjectImpl.factory ); + bitOfBoth.add( T_Property.class, T_AllImpl.factory ); // broken is misconfigured and must throw an exception. - broken.add(TestObject.class, TestObjectImpl.factory ); - broken.add( TestSubject.class, TestSubjectImpl.factory ); - broken.add( TestProperty.class, TestObjectImpl.factory ); + broken.add(T_Object.class, T_ObjectImpl.factory ); + broken.add( T_Subject.class, T_SubjectImpl.factory ); + broken.add( T_Property.class, T_ObjectImpl.factory ); } - /** Creates a new instance of EnhancedTestSuite */ - public TS3_enh(String name) { - super(name); - } - - public static TestSuite suite() { - return new TestSuite(TS3_enh.class); - } // Create the graph to test. // These are model tests so use a same-value model. @@ -103,6 +105,7 @@ public class TS3_enh extends TestCase { * test that equals works on an EnhNode (after hedgehog introduced FrontsNode it * didn't). */ + @Test public void testEquals() { EnhNode a = new EnhNode(NodeCreateUtils.create("eg:example"), null); assertEquals(a, a); @@ -111,29 +114,29 @@ public class TS3_enh extends TestCase { /** * View n as intf. This is supported iff rslt. */ - private static <X extends RDFNode> void miniAsSupports(String title, TestNode n, Class<X> intf, boolean rslt ) { - assertTrue(title +":sanity",n instanceof Polymorphic<?>); + private static <X extends RDFNode> void miniAsSupports(String title, T_Node n, Class<X> intf, boolean rslt ) { + assertTrue(n instanceof Polymorphic<?>, title +":sanity"); // It is always possible to view any node with any interface. - TestNode as1 = (TestNode)((EnhNode)n).viewAs(intf); - TestNode as2 = (TestNode)((EnhNode)n).viewAs(intf); + T_Node as1 = (T_Node)((EnhNode)n).viewAs(intf); + T_Node as2 = (T_Node)((EnhNode)n).viewAs(intf); // caching should ensure we get the same result both times. - assertTrue( title + ":idempotency", as1==as2 ); + assertTrue( as1==as2, title + ":idempotency" ); // Whether the interface is actually useable depends on the underlying // graph. This factoid is the rslt parameter. - assertEquals( title +":support",rslt,((EnhNode) as1).supports( intf ) ); + assertEquals( rslt, ((EnhNode) as1).supports( intf ), title +":support" ); } - private static void oneNodeAsSupports(String title, TestNode n, boolean rslts[] ) { + private static void oneNodeAsSupports(String title, T_Node n, boolean rslts[] ) { // Try n with all three interfaces. - miniAsSupports(title+"/TestSubject",n,TestSubject.class,rslts[0]); - miniAsSupports(title+"/TestProperty",n,TestProperty.class,rslts[1]); - miniAsSupports(title+"/TestObject",n,TestObject.class,rslts[2]); + miniAsSupports(title+"/T_Subject",n,T_Subject.class,rslts[0]); + miniAsSupports(title+"/T_Property",n,T_Property.class,rslts[1]); + miniAsSupports(title+"/T_Object",n,T_Object.class,rslts[2]); } - private static void manyNodeAsSupports(String title, TestNode n[], boolean rslts[][] ) { + private static void manyNodeAsSupports(String title, T_Node n[], boolean rslts[][] ) { // Try each n with each interface. for (int i=0;i<n.length;i++){ oneNodeAsSupports(title+"["+i+"]",n[i],rslts[i]); @@ -148,13 +151,13 @@ public class TS3_enh extends TestCase { */ private static void basic(String title, Personality<RDFNode> p) { Graph g = graphToTest(); - TestModel model = new TestModelImpl(g,p); + T_Model model = new T_ModelImpl(g,p); // create some data GraphTestLib.graphAdd( g, "x R y;" ); - // The graph has three nodes, extract them as TestNode's, + // The graph has three nodes, extract them as T_Node's, // using the minimalist ModelAPI. - TestNode nodes[] = new TestNode[]{ + T_Node nodes[] = new T_Node[]{ model.aSubject(), model.aProperty(), model.anObject() @@ -171,9 +174,9 @@ public class TS3_enh extends TestCase { GraphTestLib.graphAdd(g,"y R x;" ); // The expected results are now different. - // (A node is appropriate for the TestSubject interface if it is + // (A node is appropriate for the T_Subject interface if it is // the subject of some triple in the graph, so the third node - // can now be a TestSubject). + // can now be a T_Subject). manyNodeAsSupports(title+"(b)",nodes, new boolean[][]{ new boolean[]{true,false,true}, // nodes[0] is subj and obj, but not prop @@ -184,9 +187,9 @@ public class TS3_enh extends TestCase { g.delete( GraphTestLib.triple( "x R y" ) ); // The expected results are now different again. - // (A node is appropriate for the TestSubject interface if it is + // (A node is appropriate for the T_Subject interface if it is // the subject of some triple in the graph, so the third node - // can now be a TestSubject). + // can now be a T_Subject). manyNodeAsSupports(title+"(c)",nodes, new boolean[][]{ @@ -211,7 +214,7 @@ public class TS3_enh extends TestCase { // or not, we just try it. // Obviously sometimes it is broken, which should be reported using // an IllegalStateException. - private void canImplement(String title, TestNode n, int wh, boolean rslt ) { + private void canImplement(String title, T_Node n, int wh, boolean rslt ) { try { switch (wh) { case S: @@ -224,19 +227,19 @@ public class TS3_enh extends TestCase { n.asObject().aSubject(); break; } - assertTrue("IllegalStateException expected.",rslt); + assertTrue(rslt, "IllegalStateException expected."); } catch (IllegalStateException e) { - assertFalse("IllegalStateException at the wrong time.",rslt); + assertFalse(rslt, "IllegalStateException at the wrong time."); } } - private void canImplement(String title, TestNode n, boolean rslts[] ) { - canImplement(title+"/TestSubject",n,S,rslts[0]); - canImplement(title+"/TestProperty",n,P,rslts[1]); - canImplement(title+"/TestObject",n,O,rslts[2]); + private void canImplement(String title, T_Node n, boolean rslts[] ) { + canImplement(title+"/T_Subject",n,S,rslts[0]); + canImplement(title+"/T_Property",n,P,rslts[1]); + canImplement(title+"/T_Object",n,O,rslts[2]); } - private void canImplement(String title, TestNode n[], boolean rslts[][] ) { + private void canImplement(String title, T_Node n[], boolean rslts[][] ) { for (int i=0;i<n.length;i++){ canImplement(title+"["+i+"]",n[i],rslts[i]); } @@ -244,10 +247,10 @@ public class TS3_enh extends TestCase { private void follow(String title, Personality<RDFNode> p) { Graph g = graphToTest(); - TestModel model = new TestModelImpl(g,p); + T_Model model = new T_ModelImpl(g,p); // create some data GraphTestLib.graphAdd( g, "a b c;" ); - TestNode nodes[] = new TestNode[]{ + T_Node nodes[] = new T_Node[]{ model.aSubject(), model.aProperty(), model.anObject() @@ -285,7 +288,7 @@ public class TS3_enh extends TestCase { }); // Another twist. - canImplement(title+"(c)",new TestNode[]{ + canImplement(title+"(c)",new T_Node[]{ nodes[1].asSubject().aProperty(), nodes[2].asObject().aSubject(), nodes[0].asProperty().anObject() @@ -295,55 +298,59 @@ public class TS3_enh extends TestCase { new boolean[]{true,false,false}, new boolean[]{false,false,true} }); - assertTrue("Recreated node",nodes[0].asProperty().anObject().equals(nodes[2])); + assertTrue(nodes[0].asProperty().anObject().equals(nodes[2]), "Recreated node"); } + @Test public void testSplitBasic() { basic("Split: ",split); } + @Test public void testComboBasic() { basic("Combo: ",combo); } + @Test public void testSplitFollow() { follow("Split: ",split); } + @Test public void testComboFollow() { follow("Combo: ",combo); } + @Test public void testBitOfBothBasic() { basic("bob: ",bitOfBoth); } + @Test public void testBitOfBothFollow() { follow("bob: ",bitOfBoth); } + @Test public void testBitOfBothSurprise() { // bitOfBoth is a surprising personality ... // we can have two different java objects implementing the same interface. Graph g = graphToTest(); - TestModel model = new TestModelImpl(g,bitOfBoth); + T_Model model = new T_ModelImpl(g,bitOfBoth); // create some data GraphTestLib.graphAdd( g, "a a a;" ); - TestSubject testSubjectImpl = model.aSubject(); - assertTrue("BitOfBoth makes subjects using TestSubjectImpl", - testSubjectImpl instanceof TestSubjectImpl); - TestProperty testAllImpl = testSubjectImpl.aProperty(); - assertTrue("BitOfBoth makes properties using TestAllImpl", - testAllImpl instanceof TestAllImpl); - assertTrue("turning a TestAllImpl into a TestSubject is a no-op", - testAllImpl == testAllImpl.asSubject() ); - assertTrue("turning a TestAllImpl into a TestSubject is a no-op", - testSubjectImpl != testAllImpl.asSubject() ); - assertTrue("turning a TestAllImpl into a TestSubject is a no-op", - testSubjectImpl.asSubject() != testSubjectImpl.asSubject().asProperty().asSubject() ); + T_Subject testSubjectImpl = model.aSubject(); + assertTrue(testSubjectImpl instanceof T_SubjectImpl, + "BitOfBoth makes subjects using T_SubjectImpl"); + T_Property testAllImpl = testSubjectImpl.aProperty(); + assertTrue(testAllImpl instanceof T_AllImpl, + "BitOfBoth makes properties using T_AllImpl"); + assertTrue(testAllImpl == testAllImpl.asSubject(), + "turning a T_AllImpl into a T_Subject is a no-op"); + assertTrue(testSubjectImpl != testAllImpl.asSubject(), + "turning a T_AllImpl into a T_Subject is a no-op"); + assertTrue(testSubjectImpl.asSubject() != testSubjectImpl.asSubject().asProperty().asSubject(), + "turning a T_AllImpl into a T_Subject is a no-op"); } + @Test public void testBrokenBasic() { - try { - // Any of the tests ought to work up and til the point - // that they don't. At that point they need to detect the - // error and throw the PersonalityConfigException. - basic("Broken: ",broken); - fail("broken is a misconfigured personality, but it wasn't detected."); - } - catch (PersonalityConfigException e ) { - - } + // Any of the tests ought to work up and til the point + // that they don't. At that point they need to detect the + // error and throw the PersonalityConfigException. + assertThrows(PersonalityConfigException.class, + ()->basic("Broken: ",broken), + "broken is a misconfigured personality, but it wasn't detected."); } static class Example extends EnhNode implements RDFNode { @@ -388,15 +395,15 @@ public class TS3_enh extends TestCase { { return null; } } + @Test public void testSimple() { Graph g = graphToTest(); Personality<RDFNode> ours = BuiltinPersonalities.model.copy().add(Example.class, Example.factory); EnhGraph eg = new EnhGraph(g, ours); - Node n = NodeFactory.createURI("spoo:bar"); EnhNode eNode = new EnhNode(NodeFactory.createURI("spoo:bar"), eg); EnhNode eBlank = new EnhNode(NodeFactory.createBlankNode(), eg); - assertTrue("URI node can be an Example", eNode.supports(Example.class)); - assertFalse("Blank node cannot be an Example", eBlank.supports(Example.class)); + assertTrue(eNode.supports(Example.class), "URI node can be an Example"); + assertFalse(eBlank.supports(Example.class), "Blank node cannot be an Example"); } static class AnotherExample { @@ -413,6 +420,7 @@ public class TS3_enh extends TestCase { }; } + @Test public void testAlreadyLinkedViewException() { Graph g = graphToTest(); Personality<RDFNode> ours = BuiltinPersonalities.model.copy().add(Example.class, Example.factory); @@ -422,10 +430,9 @@ public class TS3_enh extends TestCase { EnhNode multiplexed = new Example(n, eg); multiplexed.as(Property.class); eNode.viewAs(Example.class); - try { - eNode.addView(multiplexed); - fail("should raise an AlreadyLinkedViewException "); - } catch (AlreadyLinkedViewException e) {} + assertThrows(AlreadyLinkedViewException.class, + ()->eNode.addView(multiplexed), + "should raise an AlreadyLinkedViewException"); } /** @@ -433,21 +440,20 @@ public class TS3_enh extends TestCase { * supported by the enhanced graph generates an UnsupportedPolymorphism * exception. */ + @Test public void testNullPointerTrap() { Graph g = graphToTest(); EnhGraph eg = new EnhGraph(g, new Personality<RDFNode>()); Node n = NodeCreateUtils.create("eh:something"); EnhNode en = new EnhNode(n, eg); - try { - en.as(Property.class); - fail("oops"); - } catch (UnsupportedPolymorphismException e) { - assertEquals(en, e.getBadNode()); - assertTrue("exception should have cuplprit graph", eg == ((EnhNode)e.getBadNode()).getGraph()); - assertSame("exception should have culprit class", Property.class, e.getBadClass()); - } + UnsupportedPolymorphismException e = + assertThrows(UnsupportedPolymorphismException.class, ()->en.as(Property.class)); + assertEquals(en, e.getBadNode()); + assertTrue(eg == ((EnhNode)e.getBadNode()).getGraph(), "exception should have cuplprit graph"); + assertSame(Property.class, e.getBadClass(), "exception should have culprit class"); } + @Test public void testNullPointerTrapInCanSupport() { Graph g = graphToTest(); EnhGraph eg = new EnhGraph(g, new Personality<RDFNode>()); @@ -456,6 +462,7 @@ public class TS3_enh extends TestCase { assertFalse(en.canAs(Property.class)); } + @Test public void testAsToOwnClassWithNoModel() { Resource r = ResourceFactory.createResource(); assertEquals(null, r.getModel()); @@ -463,20 +470,19 @@ public class TS3_enh extends TestCase { assertSame(r, r.as(Resource.class)); } + @Test public void testCanAsReturnsFalseIfNoModel() { Resource r = ResourceFactory.createResource(); assertEquals(false, r.canAs(Example.class)); } + @Test public void testAsThrowsPolymorphismExceptionIfNoModel() { Resource r = ResourceFactory.createResource(); - try { - r.as(Example.class); - fail("should throw UnsupportedPolymorphismException"); - } catch (UnsupportedPolymorphismException e) { - assertTrue(e.getBadNode() instanceof EnhNode); - assertEquals(null, ((EnhNode)e.getBadNode()).getGraph()); - assertEquals(Example.class, e.getBadClass()); - } + UnsupportedPolymorphismException e = + assertThrows(UnsupportedPolymorphismException.class, ()->r.as(Example.class)); + assertTrue(e.getBadNode() instanceof EnhNode); + assertEquals(null, ((EnhNode)e.getBadNode()).getGraph()); + assertEquals(Example.class, e.getBadClass()); } } diff --git a/jena-core/src/test/java/org/apache/jena/test/JenaCoreTestAll_JU4.java b/jena-core/src/test/java/org/apache/jena/test/JenaCoreTestAll_JU4.java index b323842a67..bd789ea41f 100644 --- a/jena-core/src/test/java/org/apache/jena/test/JenaCoreTestAll_JU4.java +++ b/jena-core/src/test/java/org/apache/jena/test/JenaCoreTestAll_JU4.java @@ -44,7 +44,7 @@ public class JenaCoreTestAll_JU4 extends TestCase { // ** COMPLEX // Generates tests. - addTest(ts, "Enhanced", org.apache.jena.enhanced.TS3_enh.suite()); +//JU6 addTest(ts, "Enhanced", org.apache.jena.enhanced.TS3_enh.suite()); addTest(ts, "Graph", adaptJUnit4(org.apache.jena.graph.TS3_graph.class)); //JU6 addTest(ts, "Mem", adaptJUnit4(org.apache.jena.mem.TS4_GraphMem.class)); diff --git a/jena-core/src/test/java/org/apache/jena/test/JenaCoreTestAll_JU6.java b/jena-core/src/test/java/org/apache/jena/test/JenaCoreTestAll_JU6.java index 864446eae0..5a2c797abe 100644 --- a/jena-core/src/test/java/org/apache/jena/test/JenaCoreTestAll_JU6.java +++ b/jena-core/src/test/java/org/apache/jena/test/JenaCoreTestAll_JU6.java @@ -27,6 +27,7 @@ import org.junit.platform.suite.api.Suite; import org.apache.jena.core_ttl.tests.TS6_TestTurtle; import org.apache.jena.datatypes.TS6_dt; +import org.apache.jena.enhanced.TS6_enh; import org.apache.jena.irix.TS6_IRIx2; import org.apache.jena.langtagx.TS6_LangTagX; import org.apache.jena.mem.TS6_GraphMem; @@ -49,6 +50,8 @@ import org.apache.jena.vocabulary.TS6_Vocabularies; TS6_LangTagX.class, TS6_dt.class, + TS6_enh.class, + TS6_GraphMem.class, TS6_GraphMemValue.class,
