You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2013/09/06 16:21:40 UTC
[1/3] git commit: added test for new statement collections with
parameterized equality
Updated Branches:
refs/heads/develop e43574efa -> 408be3d55
added test for new statement collections with parameterized equality
Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/a9673202
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/a9673202
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/a9673202
Branch: refs/heads/develop
Commit: a96732021819e5c878ac2bc52eed70137aca8eaf
Parents: e43574e
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Fri Sep 6 15:30:11 2013 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Fri Sep 6 15:30:11 2013 +0200
----------------------------------------------------------------------
.../collections/EquivalenceHashSetTest.java | 2 +
.../sesame/model/StatementCommonsTest.java | 225 +++++++++++++++++++
.../kiwi/reasoner/engine/ReasoningEngine.java | 6 +-
.../kiwi/reasoner/model/program/Pattern.java | 21 +-
.../kiwi/test/PostgreSQLConcurrencyTest.java | 3 +
5 files changed, 242 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/a9673202/commons/marmotta-commons/src/test/java/org/apache/marmotta/commons/collections/EquivalenceHashSetTest.java
----------------------------------------------------------------------
diff --git a/commons/marmotta-commons/src/test/java/org/apache/marmotta/commons/collections/EquivalenceHashSetTest.java b/commons/marmotta-commons/src/test/java/org/apache/marmotta/commons/collections/EquivalenceHashSetTest.java
index 4aa3e9c..a01813c 100644
--- a/commons/marmotta-commons/src/test/java/org/apache/marmotta/commons/collections/EquivalenceHashSetTest.java
+++ b/commons/marmotta-commons/src/test/java/org/apache/marmotta/commons/collections/EquivalenceHashSetTest.java
@@ -107,10 +107,12 @@ public class EquivalenceHashSetTest {
// test sets with elements, insertion order different
Assert.assertEquals(set1,set2);
+ Assert.assertEquals(set1.hashCode(), set2.hashCode());
set1.add(c1);
Assert.assertNotEquals(set1,set2);
+ Assert.assertNotEquals(set1.hashCode(), set2.hashCode());
}
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/a9673202/commons/marmotta-commons/src/test/java/org/apache/marmotta/commons/sesame/model/StatementCommonsTest.java
----------------------------------------------------------------------
diff --git a/commons/marmotta-commons/src/test/java/org/apache/marmotta/commons/sesame/model/StatementCommonsTest.java b/commons/marmotta-commons/src/test/java/org/apache/marmotta/commons/sesame/model/StatementCommonsTest.java
new file mode 100644
index 0000000..05a6003
--- /dev/null
+++ b/commons/marmotta-commons/src/test/java/org/apache/marmotta/commons/sesame/model/StatementCommonsTest.java
@@ -0,0 +1,225 @@
+package org.apache.marmotta.commons.sesame.model;
+
+import com.google.common.base.Equivalence;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openrdf.model.*;
+import org.openrdf.model.impl.ValueFactoryImpl;
+
+import java.util.*;
+
+/**
+ * Add file description here!
+ *
+ * @author Sebastian Schaffert (sschaffert@apache.org)
+ */
+public class StatementCommonsTest {
+
+ protected static Random rnd = new Random();
+
+
+ Statement stmt1, stmt2, stmt3, stmt4;
+
+ ValueFactory valueFactory;
+
+ private List<URI> resources = new ArrayList<>();
+
+ private List<Value> objects = new ArrayList<>();
+
+
+ @Before
+ public void setup() {
+ valueFactory = new ValueFactoryImpl();
+
+ Resource s1 = randomURI();
+ URI p1 = randomURI();
+ URI p2 = randomURI();
+ Value o1 = randomObject();
+ Resource c1 = randomURI();
+ Resource c2 = randomURI();
+
+
+ stmt1 = valueFactory.createStatement(s1,p1,o1,c1);
+ stmt2 = valueFactory.createStatement(s1,p1,o1,c2);
+ stmt3 = valueFactory.createStatement(s1,p2,o1,c1);
+ stmt4 = valueFactory.createStatement(s1,p1,o1,c1);
+ }
+
+
+ @Test
+ public void testTripleEquivalence() {
+ Equivalence<Statement> e = StatementCommons.tripleEquivalence();
+
+ Assert.assertTrue(e.equivalent(stmt1,stmt2));
+ Assert.assertTrue(e.equivalent(stmt1,stmt4));
+ Assert.assertFalse(e.equivalent(stmt1,stmt3));
+ }
+
+ @Test
+ public void testQuadrupleEquivalence() {
+ Equivalence<Statement> e = StatementCommons.tripleEquivalence();
+
+ Assert.assertTrue(e.equivalent(stmt1,stmt2));
+ Assert.assertTrue(e.equivalent(stmt1,stmt4));
+ Assert.assertFalse(e.equivalent(stmt1,stmt3));
+ }
+
+ @Test
+ public void testTripleSet() {
+ Set<Statement> set = StatementCommons.newTripleSet();
+
+ set.add(stmt1);
+
+ // triple 2 just has different context, so should be contained already
+ Assert.assertTrue(set.contains(stmt2));
+
+ // adding triple 2 should not change size
+ set.add(stmt2);
+
+ Assert.assertEquals(1,set.size());
+
+ // statement 3 is different, so not contained and size increased
+ Assert.assertFalse(set.contains(stmt3));
+
+ set.add(stmt3);
+
+ Assert.assertEquals(2,set.size());
+
+ }
+
+ @Test
+ public void testQuadrupleSet() {
+ Set<Statement> set = StatementCommons.newQuadrupleSet();
+
+ set.add(stmt1);
+
+ // triple 2 has different context, so should not be contained already
+ Assert.assertFalse(set.contains(stmt2));
+
+ // adding triple 2 should change size
+ set.add(stmt2);
+
+ Assert.assertEquals(2,set.size());
+
+ // statement 3 is different, so not contained and size increased
+ Assert.assertFalse(set.contains(stmt3));
+
+ set.add(stmt3);
+
+ Assert.assertEquals(3,set.size());
+
+ }
+
+
+ @Test
+ public void testTripleMap() {
+ Map<Statement, String> map = StatementCommons.newTripleMap();
+
+ String s1 = RandomStringUtils.random(8);
+ String s2 = RandomStringUtils.random(8);
+ String s3 = RandomStringUtils.random(8);
+
+ map.put(stmt1, s1);
+
+ // triple 2 just has different context, so should be contained already
+ Assert.assertEquals(s1, map.get(stmt2));
+
+ // adding triple 2 should not change size
+ map.put(stmt2,s2);
+
+ Assert.assertEquals(1, map.size());
+
+ // value now replaced?
+ Assert.assertEquals(s2, map.get(stmt1));
+
+ // statement 3 is different, so not contained and size increased
+ Assert.assertFalse(map.containsKey(stmt3));
+
+ map.put(stmt3,s3);
+
+ Assert.assertEquals(2, map.size());
+
+ }
+
+ @Test
+ public void testQuadrupleMap() {
+ Map<Statement, String> map = StatementCommons.newQuadrupleMap();
+
+ String s1 = RandomStringUtils.random(8);
+ String s2 = RandomStringUtils.random(8);
+ String s3 = RandomStringUtils.random(8);
+
+ map.put(stmt1, s1);
+
+ // triple 2 just has different context, so should be contained already
+ Assert.assertNotEquals(s1, map.get(stmt2));
+
+ // adding triple 2 should change size
+ map.put(stmt2,s2);
+
+ Assert.assertEquals(2, map.size());
+
+ // value not replaced?
+ Assert.assertEquals(s1, map.get(stmt1));
+
+ // statement 3 is different, so not contained and size increased
+ Assert.assertFalse(map.containsKey(stmt3));
+
+ map.put(stmt3,s3);
+
+ Assert.assertEquals(3, map.size());
+
+ }
+
+
+ /**
+ * Return a random URI, with a 10% chance of returning a URI that has already been used.
+ * @return
+ */
+ protected URI randomURI() {
+ if(resources.size() > 0 && rnd.nextInt(10) == 0) {
+ // return a resource that was already used
+ return resources.get(rnd.nextInt(resources.size()));
+ } else {
+ URI resource = valueFactory.createURI("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
+ resources.add(resource);
+ return resource;
+ }
+ }
+
+ /**
+ * Return a random RDF value, either a reused object (10% chance) or of any other kind.
+ * @return
+ */
+ protected Value randomObject() {
+ if(objects.size() > 0 && rnd.nextInt(10) == 0) {
+ return objects.get(rnd.nextInt(objects.size()));
+ } else {
+ Value object;
+ switch(rnd.nextInt(6)) {
+ case 0: object = valueFactory.createURI("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
+ break;
+ case 1: object = valueFactory.createBNode();
+ break;
+ case 2: object = valueFactory.createLiteral(RandomStringUtils.randomAscii(40));
+ break;
+ case 3: object = valueFactory.createLiteral(rnd.nextInt());
+ break;
+ case 4: object = valueFactory.createLiteral(rnd.nextDouble());
+ break;
+ case 5: object = valueFactory.createLiteral(rnd.nextBoolean());
+ break;
+ default: object = valueFactory.createURI("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
+ break;
+
+ }
+ objects.add(object);
+ return object;
+ }
+
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/a9673202/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java b/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
index 415fa3c..8d2e08d 100644
--- a/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
+++ b/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/engine/ReasoningEngine.java
@@ -924,10 +924,10 @@ public class ReasoningEngine implements TransactionListener {
public void shutdown() {
log.info("shutting down reasoning service ...");
- for(int i = 0; i<10 && isRunning(); i++) {
- log.warn("reasoner not yet finished, waiting for 10 seconds (try={})", i+1);
+ for(int i = 0; i<20 && isRunning(); i++) {
+ log.warn("reasoner not yet finished, waiting for 1 seconds (try={})", i+1);
try {
- Thread.sleep(10000);
+ Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/a9673202/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/model/program/Pattern.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/model/program/Pattern.java b/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/model/program/Pattern.java
index 91c9aa4..6fd96f9 100644
--- a/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/model/program/Pattern.java
+++ b/libraries/kiwi/kiwi-reasoner/src/main/java/org/apache/marmotta/kiwi/reasoner/model/program/Pattern.java
@@ -17,6 +17,8 @@
*/
package org.apache.marmotta.kiwi.reasoner.model.program;
+import com.google.common.base.Objects;
+
import java.util.Map;
/**
@@ -93,28 +95,23 @@ public class Pattern {
@Override
public boolean equals(Object o) {
if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- if(context == null && object == null && subject == null && property == null) {
- return super.equals(o);
+ if(! (o instanceof Pattern)) {
+ return false;
}
Pattern pattern = (Pattern) o;
- if (context != null ? !context.equals(pattern.context) : pattern.context != null) return false;
- if (object != null ? !object.equals(pattern.object) : pattern.object != null) return false;
- if (property != null ? !property.equals(pattern.property) : pattern.property != null) return false;
- if (subject != null ? !subject.equals(pattern.subject) : pattern.subject != null) return false;
+ if(!Objects.equal(this.context, pattern.context)) return false;
+ if(!Objects.equal(this.object, pattern.object)) return false;
+ if(!Objects.equal(this.property, pattern.property)) return false;
+ if(!Objects.equal(this.subject, pattern.subject)) return false;
return true;
}
@Override
public int hashCode() {
- int result = subject != null ? subject.hashCode() : 0;
- result = 31 * result + (property != null ? property.hashCode() : 0);
- result = 31 * result + (object != null ? object.hashCode() : 0);
- result = 31 * result + (context != null ? context.hashCode() : 0);
- return result;
+ return Objects.hashCode(subject, property, object, context);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/a9673202/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java
index 8d5fb94..cfe352d 100644
--- a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java
+++ b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/PostgreSQLConcurrencyTest.java
@@ -30,6 +30,8 @@ public class PostgreSQLConcurrencyTest extends ConcurrencyTestBase {
public static void setup() throws RepositoryException {
logger = LoggerFactory.getLogger(PostgreSQLConcurrencyTest.class);
+ logger.info("creating test setup...");
+
KiWiConfiguration psql = KiWiDatabaseRunner.createKiWiConfig("PostgreSQL", new PostgreSQLDialect());
DBConnectionChecker.checkDatabaseAvailability(psql);
@@ -42,6 +44,7 @@ public class PostgreSQLConcurrencyTest extends ConcurrencyTestBase {
@AfterClass
public static void dropDatabase() throws RepositoryException, SQLException, SailException {
+ logger.info("cleaning up test setup...");
if (store != null && store.isInitialized()) {
assertTrue(store.checkConsistency());
store.closeValueFactory(); // release all connections before dropping the database
[2/3] git commit: added more testing to track down reasoner bugs
Posted by ss...@apache.org.
added more testing to track down reasoner bugs
Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/10f71b42
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/10f71b42
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/10f71b42
Branch: refs/heads/develop
Commit: 10f71b4225bf43ae97b3a2c4a7f5451f97f078cf
Parents: a967320
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Fri Sep 6 16:17:17 2013 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Fri Sep 6 16:17:17 2013 +0200
----------------------------------------------------------------------
.../reasoner/test/model/JustificationTest.java | 149 +++++++++++++++++++
1 file changed, 149 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/10f71b42/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/model/JustificationTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/model/JustificationTest.java b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/model/JustificationTest.java
new file mode 100644
index 0000000..b0a5ef9
--- /dev/null
+++ b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/model/JustificationTest.java
@@ -0,0 +1,149 @@
+package org.apache.marmotta.kiwi.reasoner.test.model;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.marmotta.commons.sesame.model.Namespaces;
+import org.apache.marmotta.kiwi.model.rdf.*;
+import org.apache.marmotta.kiwi.reasoner.model.program.Justification;
+import org.apache.marmotta.kiwi.reasoner.model.program.Rule;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.openrdf.model.URI;
+import org.openrdf.model.Value;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * Test critical functionality of justification objects, primarily equals and similar
+ *
+ * @author Sebastian Schaffert (sschaffert@apache.org)
+ */
+public class JustificationTest {
+
+ protected static Random rnd = new Random();
+
+
+ private KiWiTriple t1, t2, t3, t4; // base
+ private KiWiTriple i1, i2, i3, i4; // inferred
+ private Rule r1, r2;
+
+ private KiWiUriResource ctx_inferred;
+
+
+ private List<KiWiUriResource> resources = new ArrayList<>();
+
+ private List<KiWiNode> objects = new ArrayList<>();
+
+
+ @Before
+ public void setup() {
+ KiWiUriResource s1 = randomURI();
+ KiWiUriResource s2 = randomURI();
+ KiWiUriResource s3 = randomURI();
+ KiWiUriResource s4 = randomURI();
+ KiWiUriResource p1 = randomURI();
+ KiWiUriResource p2 = randomURI();
+ KiWiNode o1 = randomObject();
+ KiWiNode o2 = randomObject();
+ KiWiNode o3 = randomObject();
+ KiWiNode o4 = randomObject();
+
+ ctx_inferred = randomURI();
+
+ t1 = new KiWiTriple(s1,p1,o1, null);
+ t2 = new KiWiTriple(s1,p1,o2, null);
+ t3 = new KiWiTriple(s2,p1,o3, null);
+ t4 = new KiWiTriple(s1,p1,o1, randomURI());
+
+
+ i1 = new KiWiTriple(s1,p2,o1, ctx_inferred); i1.setInferred(true);
+ i2 = new KiWiTriple(s1,p1,o2, ctx_inferred); i2.setInferred(true);
+ i3 = new KiWiTriple(s3,p1,o3, ctx_inferred); i3.setInferred(true);
+ i4 = new KiWiTriple(s1,p2,o1, ctx_inferred); i4.setInferred(true);
+
+
+ }
+
+
+ @Test
+ public void testJustificationEquals() {
+ Justification j1 = new Justification();
+ j1.setTriple(i1);
+ j1.getSupportingTriples().add(t1);
+ j1.getSupportingTriples().add(t4);
+
+ Justification j2 = new Justification();
+ j2.setTriple(i4);
+ j2.getSupportingTriples().add(t4);
+ j2.getSupportingTriples().add(t1);
+
+ Assert.assertEquals(j1,j2);
+
+ // j3 differs in the inferred triple
+ Justification j3 = new Justification();
+ j3.setTriple(i2);
+ j3.getSupportingTriples().add(t4);
+ j3.getSupportingTriples().add(t1);
+
+ Assert.assertNotEquals(j1, j3);
+
+ // j4 differs in the supporting triples
+ Justification j4 = new Justification();
+ j4.setTriple(i1);
+ j4.getSupportingTriples().add(t2);
+ j4.getSupportingTriples().add(t4);
+
+ Assert.assertNotEquals(j1, j4);
+ }
+
+
+ /**
+ * Return a random URI, with a 10% chance of returning a URI that has already been used.
+ * @return
+ */
+ protected KiWiUriResource randomURI() {
+ if(resources.size() > 0 && rnd.nextInt(10) == 0) {
+ // return a resource that was already used
+ return resources.get(rnd.nextInt(resources.size()));
+ } else {
+ KiWiUriResource resource = new KiWiUriResource("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
+ resources.add(resource);
+ return resource;
+ }
+ }
+
+ /**
+ * Return a random RDF value, either a reused object (10% chance) or of any other kind.
+ * @return
+ */
+ protected KiWiNode randomObject() {
+ if(objects.size() > 0 && rnd.nextInt(10) == 0) {
+ return objects.get(rnd.nextInt(objects.size()));
+ } else {
+ KiWiNode object;
+ switch(rnd.nextInt(6)) {
+ case 0: object = new KiWiUriResource("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
+ break;
+ case 1: object = new KiWiAnonResource();
+ break;
+ case 2: object = new KiWiStringLiteral(RandomStringUtils.randomAscii(40));
+ break;
+ case 3: object = new KiWiIntLiteral(rnd.nextLong(), new KiWiUriResource(Namespaces.NS_XSD + "integer"));
+ break;
+ case 4: object = new KiWiDoubleLiteral(rnd.nextDouble(), new KiWiUriResource(Namespaces.NS_XSD + "double"));
+ break;
+ case 5: object = new KiWiBooleanLiteral(rnd.nextBoolean(), new KiWiUriResource(Namespaces.NS_XSD + "boolean"));
+ break;
+ default: object = new KiWiUriResource("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
+ break;
+
+ }
+ objects.add(object);
+ return object;
+ }
+
+ }
+
+}
[3/3] git commit: more justification testing
Posted by ss...@apache.org.
more justification testing
Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/408be3d5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/408be3d5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/408be3d5
Branch: refs/heads/develop
Commit: 408be3d55c2e97b30fe0fb29ec2499ced3ea2135
Parents: 10f71b4
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Fri Sep 6 16:21:40 2013 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Fri Sep 6 16:21:40 2013 +0200
----------------------------------------------------------------------
.../reasoner/test/model/JustificationTest.java | 112 ++++++++++++-------
1 file changed, 71 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/408be3d5/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/model/JustificationTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/model/JustificationTest.java b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/model/JustificationTest.java
index b0a5ef9..086f2e8 100644
--- a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/model/JustificationTest.java
+++ b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/model/JustificationTest.java
@@ -11,9 +11,7 @@ import org.junit.Test;
import org.openrdf.model.URI;
import org.openrdf.model.Value;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
/**
* Test critical functionality of justification objects, primarily equals and similar
@@ -31,12 +29,6 @@ public class JustificationTest {
private KiWiUriResource ctx_inferred;
-
- private List<KiWiUriResource> resources = new ArrayList<>();
-
- private List<KiWiNode> objects = new ArrayList<>();
-
-
@Before
public void setup() {
KiWiUriResource s1 = randomURI();
@@ -99,19 +91,63 @@ public class JustificationTest {
}
+ @Test
+ public void testJustificationSet() {
+ Set<Justification> set = new HashSet<>();
+
+ Justification j1 = new Justification();
+ j1.setTriple(i1);
+ j1.getSupportingTriples().add(t1);
+ j1.getSupportingTriples().add(t4);
+ set.add(j1);
+
+ Justification j2 = new Justification();
+ j2.setTriple(i4);
+ j2.getSupportingTriples().add(t4);
+ j2.getSupportingTriples().add(t1);
+
+ Assert.assertTrue(set.contains(j2));
+
+ set.add(j2);
+
+ Assert.assertEquals(1, set.size());
+
+
+ // j3 differs in the inferred triple
+ Justification j3 = new Justification();
+ j3.setTriple(i2);
+ j3.getSupportingTriples().add(t4);
+ j3.getSupportingTriples().add(t1);
+
+ Assert.assertFalse(set.contains(j3));
+
+ set.add(j3);
+
+ Assert.assertEquals(2, set.size());
+
+
+ // j4 differs in the supporting triples
+ Justification j4 = new Justification();
+ j4.setTriple(i1);
+ j4.getSupportingTriples().add(t2);
+ j4.getSupportingTriples().add(t4);
+
+ Assert.assertFalse(set.contains(j4));
+
+ set.add(j4);
+
+ Assert.assertEquals(3, set.size());
+ }
+
+
+
/**
* Return a random URI, with a 10% chance of returning a URI that has already been used.
* @return
*/
protected KiWiUriResource randomURI() {
- if(resources.size() > 0 && rnd.nextInt(10) == 0) {
- // return a resource that was already used
- return resources.get(rnd.nextInt(resources.size()));
- } else {
- KiWiUriResource resource = new KiWiUriResource("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
- resources.add(resource);
- return resource;
- }
+ KiWiUriResource resource = new KiWiUriResource("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
+ return resource;
}
/**
@@ -119,31 +155,25 @@ public class JustificationTest {
* @return
*/
protected KiWiNode randomObject() {
- if(objects.size() > 0 && rnd.nextInt(10) == 0) {
- return objects.get(rnd.nextInt(objects.size()));
- } else {
- KiWiNode object;
- switch(rnd.nextInt(6)) {
- case 0: object = new KiWiUriResource("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
- break;
- case 1: object = new KiWiAnonResource();
- break;
- case 2: object = new KiWiStringLiteral(RandomStringUtils.randomAscii(40));
- break;
- case 3: object = new KiWiIntLiteral(rnd.nextLong(), new KiWiUriResource(Namespaces.NS_XSD + "integer"));
- break;
- case 4: object = new KiWiDoubleLiteral(rnd.nextDouble(), new KiWiUriResource(Namespaces.NS_XSD + "double"));
- break;
- case 5: object = new KiWiBooleanLiteral(rnd.nextBoolean(), new KiWiUriResource(Namespaces.NS_XSD + "boolean"));
- break;
- default: object = new KiWiUriResource("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
- break;
-
- }
- objects.add(object);
- return object;
- }
+ KiWiNode object;
+ switch(rnd.nextInt(6)) {
+ case 0: object = new KiWiUriResource("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
+ break;
+ case 1: object = new KiWiAnonResource(RandomStringUtils.randomAscii(8));
+ break;
+ case 2: object = new KiWiStringLiteral(RandomStringUtils.randomAscii(40));
+ break;
+ case 3: object = new KiWiIntLiteral(rnd.nextLong(), new KiWiUriResource(Namespaces.NS_XSD + "integer"));
+ break;
+ case 4: object = new KiWiDoubleLiteral(rnd.nextDouble(), new KiWiUriResource(Namespaces.NS_XSD + "double"));
+ break;
+ case 5: object = new KiWiBooleanLiteral(rnd.nextBoolean(), new KiWiUriResource(Namespaces.NS_XSD + "boolean"));
+ break;
+ default: object = new KiWiUriResource("http://localhost/" + RandomStringUtils.randomAlphanumeric(8));
+ break;
+ }
+ return object;
}
}