You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by cl...@apache.org on 2013/08/31 13:01:48 UTC
svn commit: r1519171 [4/4] - in /jena/Experimental/new-test: ./
src/test/java/com/hp/hpl/jena/datatypes/
src/test/java/com/hp/hpl/jena/datatypes/xsd/
src/test/java/com/hp/hpl/jena/graph/
src/test/java/com/hp/hpl/jena/graph/impl/ src/test/java/com/hp/hp...
Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/CollectionGraphSuite.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/CollectionGraphSuite.java?rev=1519171&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/CollectionGraphSuite.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/CollectionGraphSuite.java Sat Aug 31 11:01:47 2013
@@ -0,0 +1,45 @@
+/*
+ * 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.impl;
+
+import java.util.HashSet;
+
+import org.junit.BeforeClass;
+
+import com.hp.hpl.jena.graph.AbstractGraphProducer;
+import com.hp.hpl.jena.graph.AbstractGraphSuite;
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.Triple;
+import com.hp.hpl.jena.graph.impl.CollectionGraph;
+
+public class CollectionGraphSuite extends AbstractGraphSuite {
+
+ @BeforeClass
+ public static void beforeClass() {
+ setGraphProducer(new GraphProducer());
+ }
+
+ public static class GraphProducer extends AbstractGraphProducer {
+ @Override
+ public Graph createNewGraph() {
+ return new CollectionGraph(new HashSet<Triple>());
+ }
+ }
+
+}
Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/CollectionGraphSuite.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestCollectionGraph.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestCollectionGraph.java?rev=1519171&r1=1519170&r2=1519171&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestCollectionGraph.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestCollectionGraph.java Sat Aug 31 11:01:47 2013
@@ -20,6 +20,7 @@ package com.hp.hpl.jena.graph.impl;
import java.util.HashSet;
+import com.hp.hpl.jena.graph.AbstractGraphProducer;
import com.hp.hpl.jena.graph.GraphProducerInterface;
import com.hp.hpl.jena.graph.AbstractGraphTest;
import com.hp.hpl.jena.graph.Graph;
@@ -27,17 +28,18 @@ import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.graph.impl.CollectionGraph;
public class TestCollectionGraph extends AbstractGraphTest {
-
- public TestCollectionGraph() {
- super( new GraphProducer() );
- }
- public static class GraphProducer implements GraphProducerInterface
- {
@Override
- public Graph newGraph() {
- return new CollectionGraph( new HashSet<Triple>() );
+ protected GraphProducerInterface getGraphProducer() {
+ // TODO Auto-generated method stub
+ return null;
}
+
+ public static class GraphProducer extends AbstractGraphProducer {
+ @Override
+ public Graph createNewGraph() {
+ return new CollectionGraph(new HashSet<Triple>());
+ }
}
}
Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraph.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraph.java?rev=1519171&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraph.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraph.java Sat Aug 31 11:01:47 2013
@@ -0,0 +1,187 @@
+/*
+ * 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.impl;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestSuite;
+
+import com.hp.hpl.jena.graph.AbstractGraphTest;
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.GraphProducerInterface;
+import com.hp.hpl.jena.graph.GraphUtil;
+import com.hp.hpl.jena.graph.impl.FileGraph;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.util.FileUtils;
+
+/**
+ * Test FileGraph by seeing if we can make some file graphs and then read them
+ * back.
+ */
+
+public class TestFileGraph extends AbstractGraphTest {
+
+ public TestFileGraph(GraphProducerInterface graphProducer) {
+ super(graphProducer);
+ // TODO Auto-generated constructor stub
+ }
+
+ // TODO want a wider variety of cases, now we've discovered how to abstract.
+ public static TestSuite suite() {
+ TestSuite result = new TestSuite(TestFileGraph.class);
+ result.addTest(new Case("x /R y", "xxxA", ".rdf"));
+ result.addTest(new Case("x /R y", "xxxB", ".n3"));
+ result.addTest(new Case("x /R y", "xxxC", ".nt"));
+ result.addTest(new Case("x /R y; p /R q", "xxxD", ".rdf"));
+ result.addTest(new Case("x /R y; p /R q", "xxxE", ".n3"));
+ result.addTest(new Case("x /R y; p /R q", "xxxF", ".nt"));
+ result.addTest(new Case("http://domain/S ftp:ftp/P O", "xxxG", ".rdf"));
+ result.addTest(new Case("http://domain/S ftp:ftp/P O", "xxxH", ".nt"));
+ result.addTest(new Case("http://domain/S ftp:ftp/P O", "xxxI", ".n3"));
+ return result;
+ }
+
+ public void testPlausibleGraphname() {
+ assertTrue(FileGraph.isPlausibleGraphName("agnessi.rdf"));
+ assertTrue(FileGraph.isPlausibleGraphName("parabola.nt"));
+ assertTrue(FileGraph.isPlausibleGraphName("hyperbola.n3"));
+ assertTrue(FileGraph.isPlausibleGraphName("chris.dollin.n3"));
+ assertTrue(FileGraph.isPlausibleGraphName("hedgehog.spine.end.rdf"));
+ }
+
+ public void testisPlausibleUppercaseGraphname() {
+ assertTrue(FileGraph.isPlausibleGraphName("LOUDER.RDF"));
+ assertTrue(FileGraph.isPlausibleGraphName("BRIDGE.NT"));
+ assertTrue(FileGraph.isPlausibleGraphName("NOTN2.N3"));
+ assertTrue(FileGraph.isPlausibleGraphName("chris.dollin.N3"));
+ assertTrue(FileGraph.isPlausibleGraphName("hedgehog.spine.end.RDF"));
+ }
+
+ public void testImPlausibleGraphName() {
+ assertFalse(FileGraph.isPlausibleGraphName("undecorated"));
+ assertFalse(FileGraph.isPlausibleGraphName("danger.exe"));
+ assertFalse(FileGraph.isPlausibleGraphName("pretty.jpg"));
+ assertFalse(FileGraph.isPlausibleGraphName("FileGraph.java"));
+ assertFalse(FileGraph.isPlausibleGraphName("infix.rdf.c"));
+ }
+
+ public void testTransactionCommit() {
+ Graph initial = graphWithTxn("initial hasValue 42; also hasURI hello");
+ Graph extra = graphWithTxn("extra hasValue 17; also hasURI world");
+ File foo = FileUtils.tempFileName("fileGraph", ".nt");
+
+ Graph g = new FileGraph(foo, true, true);
+ GraphUtil.addInto(g, initial);
+ g.getTransactionHandler().begin();
+ GraphUtil.addInto(g, extra);
+ g.getTransactionHandler().commit();
+ Graph union = graphWithTxn("");
+ GraphUtil.addInto(union, initial);
+ GraphUtil.addInto(union, extra);
+ assertIsomorphic(union, g);
+ Model inFile = ModelFactory.createDefaultModel();
+ inFile.read("file:///" + foo, "N-TRIPLES");
+ assertIsomorphic(union, inFile.getGraph());
+ }
+
+ public void testTransactionAbort() {
+ Graph initial = graphWithTxn("initial hasValue 42; also hasURI hello");
+ Graph extra = graphWithTxn("extra hasValue 17; also hasURI world");
+ File foo = FileUtils.tempFileName("fileGraph", ".n3");
+ Graph g = new FileGraph(foo, true, true);
+ GraphUtil.addInto(g, initial);
+ g.getTransactionHandler().begin();
+ GraphUtil.addInto(g, extra);
+ g.getTransactionHandler().abort();
+ assertIsomorphic(initial, g);
+ }
+
+ public void testTransactionCommitThenAbort() {
+ Graph initial = graphWithTxn("A pings B; B pings C");
+ Graph extra = graphWithTxn("C pingedBy B; fileGraph rdf:type Graph");
+ File foo = FileUtils.tempFileName("fileGraph", ".nt");
+ Graph g = new FileGraph(foo, true, true);
+ g.getTransactionHandler().begin();
+ GraphUtil.addInto(g, initial);
+ g.getTransactionHandler().commit();
+ g.getTransactionHandler().begin();
+ GraphUtil.addInto(g, extra);
+ g.getTransactionHandler().abort();
+ assertIsomorphic(initial, g);
+ Model inFile = ModelFactory.createDefaultModel();
+ inFile.read("file:///" + foo, "N-TRIPLES");
+ assertIsomorphic(initial, inFile.getGraph());
+ }
+
+ public void testClosingNotifys() {
+ final List<File> history = new ArrayList<File>();
+ FileGraph.NotifyOnClose n = new FileGraph.NotifyOnClose() {
+ @Override
+ public void notifyClosed(File f) {
+ history.add(f);
+ }
+ };
+ File file = FileUtils.tempFileName("fileGraph", ".nt");
+ Graph g = new FileGraph(n, file, true, true);
+ assertEquals(new ArrayList<File>(), history);
+ g.close();
+ assertEquals(oneElementList(file), history);
+ }
+
+ protected List<Object> oneElementList(Object x) {
+ List<Object> result = new ArrayList<Object>();
+ result.add(x);
+ return result;
+ }
+
+ /**
+ * Test that the graph encoded as the test-string content can be written out
+ * to a temporary file generated from the prefix and suffix, and then read
+ * back correctly. The temporary files are marked as delete-on-exit to try
+ * and avoid cluttering the user's filespace ...
+ */
+ private static class Case extends TestFileGraph {
+ String content;
+ String prefix;
+ String suffix;
+
+ Case(String content, String prefix, String suffix) {
+ super("Case: " + content + " in " + prefix + "*" + suffix);
+ this.content = content;
+ this.prefix = prefix;
+ this.suffix = suffix;
+ }
+
+ @Override
+ public void runTest() {
+ File foo = FileUtils.tempFileName(prefix, suffix);
+ Graph original = graphWithTxn(content);
+ Graph g = new FileGraph(foo, true, true);
+ GraphUtil.addInto(g, original);
+ g.close();
+ Graph g2 = new FileGraph(foo, false, true);
+ assertIsomorphic(original, g2);
+ g2.close();
+ }
+ }
+
+}
Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraph.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraphMaker.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraphMaker.java?rev=1519171&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraphMaker.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraphMaker.java Sat Aug 31 11:01:47 2013
@@ -0,0 +1,128 @@
+/*
+ * 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.impl;
+
+import java.io.File;
+import java.util.HashSet;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+import static com.hp.hpl.jena.graph.GraphTestUtils.*;
+
+import com.hp.hpl.jena.graph.AbstractTestGraphMaker;
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.GraphMaker;
+import com.hp.hpl.jena.graph.GraphUtil;
+import com.hp.hpl.jena.graph.impl.FileGraph;
+import com.hp.hpl.jena.graph.impl.FileGraphMaker;
+import com.hp.hpl.jena.util.FileUtils;
+
+/**
+ * Test a FileGraphMaker; use the abstract tests, plus specialised ones for the
+ * name conversion routines.
+ */
+public class TestFileGraphMaker extends AbstractTestGraphMaker {
+
+ @Override
+ public GraphMaker getGraphMaker() {
+ String scratch = FileUtils.getScratchDirectory(
+ "jena-test-FileGraphMaker").getPath();
+ return new FileGraphMaker(scratch, true);
+ }
+
+ @Test
+ public void testToFilename() {
+ assertEquals("plain", FileGraphMaker.toFilename("plain"));
+ assertEquals("with_Sslash", FileGraphMaker.toFilename("with/slash"));
+ assertEquals("with_Ccolon", FileGraphMaker.toFilename("with:colon"));
+ assertEquals("with_Uunderbar",
+ FileGraphMaker.toFilename("with_underbar"));
+ assertEquals("with_Stwo_Sslashes",
+ FileGraphMaker.toFilename("with/two/slashes"));
+ assertEquals("with_Sa_Cmixture_U...",
+ FileGraphMaker.toFilename("with/a:mixture_..."));
+ }
+
+ @Test
+ public void testToGraphname() {
+ assertEquals("plain", FileGraphMaker.toGraphname("plain"));
+ assertEquals("with/slash", FileGraphMaker.toGraphname("with_Sslash"));
+ assertEquals("with:colon", FileGraphMaker.toGraphname("with_Ccolon"));
+ assertEquals("with_underbar",
+ FileGraphMaker.toGraphname("with_Uunderbar"));
+ assertEquals("a/mixture_of:things",
+ FileGraphMaker.toGraphname("a_Smixture_Uof_Cthings"));
+ assertEquals("with/two/slashes",
+ FileGraphMaker.toGraphname("with_Stwo_Sslashes"));
+ }
+
+ @Test
+ public void testDetectsExistingFiles() {
+ File scratch = FileUtils
+ .getScratchDirectory("jena-test-FileGraphMaker-already");
+ Graph content = graphWith("something hasProperty someValue");
+ FileGraphMaker A = new FileGraphMaker(scratch.getPath(), true);
+ FileGraphMaker B = new FileGraphMaker(scratch.getPath(), true);
+ FileGraph gA = (FileGraph) A.createGraph("already", true);
+ GraphUtil.addInto(gA, content);
+ gA.close();
+ FileGraph gB = (FileGraph) B.openGraph("already", false);
+ assertIsomorphic(content, gB);
+ gB.close();
+ gB.delete();
+ gA.delete();
+ }
+
+ @Test
+ public void testDeletesFilesOfClosedMaker() {
+ File scratch = FileUtils
+ .getScratchDirectory("jena-test-FileGraphMaker-forgets");
+ FileGraphMaker A = new FileGraphMaker(scratch.getPath(), true);
+ A.createGraph("empty").close();
+ assertTrue("file 'empty' should exist in '" + scratch + "'", new File(
+ scratch, "empty").exists());
+ A.close();
+ assertFalse("file 'empty' should no longer exist in '" + scratch + "'",
+ new File(scratch, "empty").exists());
+ }
+
+ @Test
+ public void testForgetsClosedGraphs() {
+ File scratch = FileUtils
+ .getScratchDirectory("jena-test-FileGraphMaker-forgets");
+ FileGraphMaker m = new FileGraphMaker(scratch.getPath(), true);
+ m.createGraph("example").close();
+ assertEquals(new HashSet<String>(), m.listGraphs().toSet());
+ m.close();
+ }
+
+ @Test
+ public void testDoesntReusedClosedGraphs() {
+ File scratch = FileUtils
+ .getScratchDirectory("jena-test-FileGraphMaker-noReuse");
+ FileGraphMaker m = new FileGraphMaker(scratch.getPath(), true);
+ Graph m1 = m.createGraph("hello");
+ m1.close();
+ Graph m2 = m.createGraph("hello");
+ assertNotSame(m1, m2);
+ m2.add(triple("this graph isOpen"));
+ m.close();
+ }
+}
Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TestFileGraphMaker.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TripleStoreProducerInterface.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TripleStoreProducerInterface.java?rev=1519171&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TripleStoreProducerInterface.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TripleStoreProducerInterface.java Sat Aug 31 11:01:47 2013
@@ -0,0 +1,18 @@
+package com.hp.hpl.jena.graph.impl;
+
+import com.hp.hpl.jena.graph.impl.TripleStore;
+
+/**
+ * Creates the graph for testing
+ *
+ */
+public interface TripleStoreProducerInterface {
+
+ /**
+ * Returns a TripleStore to take part in the test. Must be overridden in a
+ * subclass.
+ *
+ * @return The TripleStore implementation to test.
+ */
+ public abstract TripleStore newTripleStore();
+}
Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/TripleStoreProducerInterface.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphSuite.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphSuite.java?rev=1519171&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphSuite.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphSuite.java Sat Aug 31 11:01:47 2013
@@ -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 com.hp.hpl.jena.graph.impl;
+
+/**
+ Tests that check GraphMem and WrappedGraph for correctness against the Graph
+ and reifier test suites.
+ */
+
+import org.junit.BeforeClass;
+import com.hp.hpl.jena.graph.AbstractGraphProducer;
+import com.hp.hpl.jena.graph.AbstractGraphSuite;
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.impl.WrappedGraph;
+import com.hp.hpl.jena.sparql.graph.GraphFactory;
+
+public class WrappedGraphSuite extends AbstractGraphSuite {
+ @BeforeClass
+ public static void beforeClass() {
+ setGraphProducer(new GraphProducer());
+ }
+
+ public static class GraphProducer extends AbstractGraphProducer {
+ @Override
+ public Graph createNewGraph() {
+ return new WrappedGraph(GraphFactory.createGraphMem());
+ }
+ }
+
+}
Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphSuite.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphTest.java?rev=1519171&view=auto
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphTest.java (added)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphTest.java Sat Aug 31 11:01:47 2013
@@ -0,0 +1,84 @@
+/*
+ * 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.impl;
+
+/**
+ Tests that check GraphMem and WrappedGraph for correctness against the Graph
+ and reifier test suites.
+ */
+
+import org.junit.Test;
+
+import com.hp.hpl.jena.graph.AbstractGraphSuite;
+import com.hp.hpl.jena.graph.AbstractGraphTest;
+import com.hp.hpl.jena.graph.Factory;
+import com.hp.hpl.jena.graph.Graph;
+import com.hp.hpl.jena.graph.GraphProducerInterface;
+import com.hp.hpl.jena.graph.impl.WrappedGraph;
+import com.hp.hpl.jena.mem.GraphMem;
+import com.hp.hpl.jena.sparql.graph.GraphFactory;
+
+public class WrappedGraphTest extends AbstractGraphSuite {
+ public WrappedGraphTest(String name) {
+ super(name);
+ }
+
+ /**
+ * Answer a test suite that runs the Graph tests on GraphMem and on
+ * WrappedGraphMem, the latter standing in for testing WrappedGraph.
+ */
+ public static TestSuite suite() {
+ TestSuite result = new TestSuite(WrappedGraphTest.class);
+ result.addTest(suite(MetaTestGraph.class, GraphMem.class));
+ result.addTest(suite(TestReifier.class, GraphMem.class));
+ result.addTest(suite(MetaTestGraph.class, WrappedGraphMem.class));
+ result.addTest(suite(TestReifier.class, WrappedGraphMem.class));
+ result.addTest(TestGraphListener.suite());
+ result.addTestSuite(TestRegisterGraphListener.class);
+ return result;
+ }
+
+ public static TestSuite suite(Class<? extends Test> classWithTests,
+ Class<? extends Graph> graphClass) {
+ return MetaTestGraph.suite(classWithTests, graphClass);
+ }
+
+ /**
+ * Trivial [incomplete] test that a Wrapped graph pokes through to the
+ * underlying graph. Really want something using mock classes. Will think
+ * about it.
+ */
+ @Test
+ public void testWrappedSame() {
+ Graph m = Factory.createGraphMem();
+ Graph w = new WrappedGraph(m);
+ graphAdd(m, "a trumps b; c eats d");
+ assertIsomorphic(m, w);
+ graphAdd(w, "i write this; you read that");
+ assertIsomorphic(w, m);
+ }
+
+ public static class GraphProducer implements GraphProducerInterface {
+ @Override
+ public Graph newGraph() {
+ return new WrappedGraph(GraphFactory.createGraphMem());
+ }
+ }
+
+}
Propchange: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/graph/impl/WrappedGraphTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/test/TestUtils.java
URL: http://svn.apache.org/viewvc/jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/test/TestUtils.java?rev=1519171&r1=1519170&r2=1519171&view=diff
==============================================================================
--- jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/test/TestUtils.java (original)
+++ jena/Experimental/new-test/src/test/java/com/hp/hpl/jena/test/TestUtils.java Sat Aug 31 11:01:47 2013
@@ -26,142 +26,169 @@ import com.hp.hpl.jena.util.CollectionFa
import com.hp.hpl.jena.util.iterator.*;
/**
- A basis for Jena test cases which provides assertFalse and assertDiffer.
- Often the logic of the names is clearer than using a negation.
-*/
-public class TestUtils
- {
+ * A basis for Jena test cases which provides assertFalse and assertDiffer.
+ * Often the logic of the names is clearer than using a negation.
+ */
+public class TestUtils {
// do not instantiate
- protected TestUtils() {};
-
- /**
- assert that the two objects must be unequal according to .equals().
- @param title a labelling string for the assertion failure text
- @param x an object to test; the subject of a .equals()
- @param y the other object; the argument of the .equals()
- */
- public static void assertDiffer( String title, Object x, Object y )
- {
- if (x == null ? y == null : x.equals( y ))
- fail( (title == null ? "objects should be different, but both were: " : title) + x );
- }
-
- /**
- assert that the two objects must be unequal according to .equals().
- @param x an object to test; the subject of a .equals()
- @param y the other object; the argument of the .equals()
- */
- public static void assertDiffer( Object x, Object y )
- { assertDiffer( null, x, y ); }
-
- /**
- assert that the object <code>x</code> must be of the class
- <code>expected</code>.
- */
- public static void assertInstanceOf( Class<?> expected, Object x )
- {
- if (x == null)
- fail( "expected instance of " + expected + ", but had null" );
- if (!expected.isInstance( x ))
- fail( "expected instance of " + expected + ", but had instance of " + x.getClass() );
- }
-
- /**
- Answer a Set formed from the elements of the List <code>L</code>.
- */
- public static <T> Set<T> listToSet( List<T> L )
- { return CollectionFactory.createHashedSet( L ); }
-
- /**
- Answer a List of the substrings of <code>s</code> that are separated
- by spaces.
- */
- public static List<String> listOfStrings( String s )
- {
- List<String> result = new ArrayList<String>();
- StringTokenizer st = new StringTokenizer( s );
- while (st.hasMoreTokens()) result.add( st.nextToken() );
- return result;
- }
-
- /**
- Answer a Set of the substrings of <code>s</code> that are separated
- by spaces.
- */
- public static Set<String> setOfStrings( String s )
- {
- Set<String> result = new HashSet<String>();
- StringTokenizer st = new StringTokenizer( s );
- while (st.hasMoreTokens()) result.add( st.nextToken() );
- return result;
- }
-
- /**
- Answer a list containing the single object <code>x</code>.
- */
- public static <T> List<T> listOfOne( T x )
- {
- List<T> result = new ArrayList<T>();
- result.add( x );
- return result;
- }
-
- /**
- Answer a Set containing the single object <code>x</code>.
- */
- public static <T> Set<T> setOfOne( T x )
- {
- Set<T> result = new HashSet<T>();
- result.add( x );
- return result;
- }
-
- /**
- Answer a fresh list which is the concatenation of <code>L</code> then
- <code>R</code>. Neither <code>L</code> nor <code>R</code> is updated.
- */
- public static <T> List<T> append( List<? extends T> L, List<? extends T> R )
- { List<T> result = new ArrayList<T>( L );
- result.addAll( R );
- return result; }
-
- /**
- Answer an iterator over the space-separated substrings of <code>s</code>.
- */
- protected static ExtendedIterator<String> iteratorOfStrings( String s )
- { return WrappedIterator.create( listOfStrings( s ).iterator() ); }
-
- /**
- Answer the constructor of the class <code>c</code> which takes arguments
- of the type(s) in <code>args</code>, or <code>null</code> if there
- isn't one.
- */
- public static Constructor<?> getConstructor( Class<?> c, Class<?> [] args )
- {
- try { return c.getConstructor( args ); }
- catch (NoSuchMethodException e) { return null; }
- }
-
- /**
- Answer true iff <code>subClass</code> is the same class as
- <code>superClass</code>, if its superclass <i>is</i> <code>superClass</code>,
- or if one of its interfaces hasAsInterface that class.
- */
- public static boolean hasAsParent( Class<?> subClass, Class<?> superClass )
- {
- if (subClass == superClass || subClass.getSuperclass() == superClass) return true;
- Class<?> [] is = subClass.getInterfaces();
- for (int i = 0; i < is.length; i += 1) if (hasAsParent( is[i], superClass )) return true;
- return false;
- }
-
- /**
- Fail unless <code>subClass</code> has <code>superClass</code> as a
- parent, either a superclass or an implemented (directly or not) interface.
- */
- public static void assertHasParent( Class<?> subClass, Class<?> superClass )
- {
- if (hasAsParent( subClass, superClass ) == false)
- fail( "" + subClass + " should have " + superClass + " as a parent" );
- }
- }
+ protected TestUtils() {
+ };
+
+ /**
+ * assert that the two objects must be unequal according to .equals().
+ *
+ * @param title
+ * a labelling string for the assertion failure text
+ * @param x
+ * an object to test; the subject of a .equals()
+ * @param y
+ * the other object; the argument of the .equals()
+ */
+ public static void assertDiffer(String title, Object x, Object y) {
+ if (x == null ? y == null : x.equals(y))
+ fail((title == null ? "objects should be different, but both were: "
+ : title)
+ + x);
+ }
+
+ /**
+ * assert that the two objects must be unequal according to .equals().
+ *
+ * @param x
+ * an object to test; the subject of a .equals()
+ * @param y
+ * the other object; the argument of the .equals()
+ */
+ public static void assertDiffer(Object x, Object y) {
+ assertDiffer(null, x, y);
+ }
+
+ /**
+ * assert that the object <code>x</code> must be of the class
+ * <code>expected</code>.
+ */
+ public static void assertInstanceOf(Class<?> expected, Object x) {
+ if (x == null)
+ fail("expected instance of " + expected + ", but had null");
+ if (!expected.isInstance(x))
+ fail("expected instance of " + expected + ", but had instance of "
+ + x.getClass());
+ }
+
+ /**
+ * Answer a Set formed from the elements of the List <code>L</code>.
+ */
+ public static <T> Set<T> listToSet(List<T> L) {
+ return CollectionFactory.createHashedSet(L);
+ }
+
+ /**
+ * Answer a List of the substrings of <code>s</code> that are separated by
+ * spaces.
+ */
+ public static List<String> listOfStrings(String s) {
+ List<String> result = new ArrayList<String>();
+ StringTokenizer st = new StringTokenizer(s);
+ while (st.hasMoreTokens())
+ result.add(st.nextToken());
+ return result;
+ }
+
+ /**
+ * Answer a Set of the substrings of <code>s</code> that are separated by
+ * spaces.
+ */
+ public static Set<String> setOfStrings(String s) {
+ Set<String> result = new HashSet<String>();
+ StringTokenizer st = new StringTokenizer(s);
+ while (st.hasMoreTokens())
+ result.add(st.nextToken());
+ return result;
+ }
+
+ /**
+ * Answer a list containing the single object <code>x</code>.
+ */
+ public static <T> List<T> listOfOne(T x) {
+ List<T> result = new ArrayList<T>();
+ result.add(x);
+ return result;
+ }
+
+ /**
+ * Answer a Set containing the single object <code>x</code>.
+ */
+ public static <T> Set<T> setOfOne(T x) {
+ Set<T> result = new HashSet<T>();
+ result.add(x);
+ return result;
+ }
+
+ /**
+ * Answer a fresh list which is the concatenation of <code>L</code> then
+ * <code>R</code>. Neither <code>L</code> nor <code>R</code> is updated.
+ */
+ public static <T> List<T> append(List<? extends T> L, List<? extends T> R) {
+ List<T> result = new ArrayList<T>(L);
+ result.addAll(R);
+ return result;
+ }
+
+ /**
+ * Answer an iterator over the space-separated substrings of <code>s</code>.
+ */
+ protected static ExtendedIterator<String> iteratorOfStrings(String s) {
+ return WrappedIterator.create(listOfStrings(s).iterator());
+ }
+
+ /**
+ * Answer the constructor of the class <code>c</code> which takes arguments
+ * of the type(s) in <code>args</code>, or <code>null</code> if there isn't
+ * one.
+ */
+ public static Constructor<?> getConstructor(Class<?> c, Class<?>[] args) {
+ try {
+ return c.getConstructor(args);
+ } catch (NoSuchMethodException e) {
+ return null;
+ }
+ }
+
+ /**
+ * Answer true iff <code>subClass</code> is the same class as
+ * <code>superClass</code>, if its superclass <i>is</i>
+ * <code>superClass</code>, or if one of its interfaces hasAsInterface that
+ * class.
+ */
+ public static boolean hasAsParent(Class<?> subClass, Class<?> superClass) {
+ if (subClass == superClass || subClass.getSuperclass() == superClass)
+ return true;
+ Class<?>[] is = subClass.getInterfaces();
+ for (int i = 0; i < is.length; i += 1)
+ if (hasAsParent(is[i], superClass))
+ return true;
+ return false;
+ }
+
+ /**
+ * Fail unless <code>subClass</code> has <code>superClass</code> as a
+ * parent, either a superclass or an implemented (directly or not)
+ * interface.
+ */
+ public static void assertHasParent(Class<?> subClass, Class<?> superClass) {
+ if (hasAsParent(subClass, superClass) == false)
+ fail("" + subClass + " should have " + superClass + " as a parent");
+ }
+
+ /**
+ * Tests o1.equals( o2 ) && o2.equals(o1) && o1.hashCode() == o2.hashCode()
+ *
+ * @param o1
+ * @param o2
+ */
+ public static void assertEquivalent(Object o1, Object o2) {
+ assertEquals(o1, o2);
+ assertEquals(o2, o1);
+ assertEquals(o1.hashCode(), o2.hashCode());
+ }
+}