[Mulgara-svn] r665 - trunk/src/jar/resolver/java/org/mulgara/resolver
pag at mulgara.org
pag at mulgara.org
Mon Mar 3 15:33:14 UTC 2008
Author: pag
Date: 2008-03-03 07:33:13 -0800 (Mon, 03 Mar 2008)
New Revision: 665
Modified:
trunk/src/jar/resolver/java/org/mulgara/resolver/AdvDatabaseSessionUnitTest.java
Log:
added testInsertionBlankNodes - contributed by Alex Hall
Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/AdvDatabaseSessionUnitTest.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/AdvDatabaseSessionUnitTest.java 2008-03-03 15:31:33 UTC (rev 664)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/AdvDatabaseSessionUnitTest.java 2008-03-03 15:33:13 UTC (rev 665)
@@ -34,21 +34,44 @@
import java.io.StringWriter;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
-// Third party packages
-import junit.framework.*; // JUnit
-import org.apache.log4j.Logger; // Log4J
-import org.jrdf.graph.SubjectNode; // JRDF
-import org.jrdf.graph.PredicateNode; // JRDF
-import org.jrdf.graph.ObjectNode; // JRDF
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.log4j.Logger;
+import org.jrdf.graph.BlankNode;
+import org.jrdf.graph.Literal;
+import org.jrdf.graph.ObjectNode;
+import org.jrdf.graph.PredicateNode;
+import org.jrdf.graph.SubjectNode;
import org.jrdf.graph.Triple;
-
-// Locally written packages
-import org.mulgara.query.*;
+import org.jrdf.graph.URIReference;
+import org.mulgara.query.Answer;
+import org.mulgara.query.ConstraintConjunction;
+import org.mulgara.query.ConstraintDisjunction;
+import org.mulgara.query.ConstraintExpression;
+import org.mulgara.query.ConstraintImpl;
+import org.mulgara.query.ConstraintIs;
+import org.mulgara.query.ModelResource;
+import org.mulgara.query.Order;
+import org.mulgara.query.Query;
+import org.mulgara.query.QueryException;
+import org.mulgara.query.Subquery;
+import org.mulgara.query.TuplesException;
+import org.mulgara.query.UnconstrainedAnswer;
+import org.mulgara.query.Variable;
+import org.mulgara.query.rdf.LiteralImpl;
import org.mulgara.query.rdf.Mulgara;
+import org.mulgara.query.rdf.TripleImpl;
import org.mulgara.query.rdf.URIReferenceImpl;
-import org.mulgara.query.rdf.TripleImpl;
+import org.mulgara.query.rdf.VariableNodeImpl;
import org.mulgara.server.Session;
import org.mulgara.util.FileUtil;
@@ -102,6 +125,7 @@
suite.addTest(new AdvDatabaseSessionUnitTest("testPrefixingWithUnbound"));
suite.addTest(new AdvDatabaseSessionUnitTest("testDatabaseDelete"));
suite.addTest(new AdvDatabaseSessionUnitTest("testCreateModel"));
+ suite.addTest(new AdvDatabaseSessionUnitTest("testInsertionBlankNodes"));
return suite;
}
@@ -1096,7 +1120,73 @@
}
}
+ /**
+ * Test two insertions in the same transaction using the same variable name.
+ * The variable blank node should map to different internal node ID's in each
+ * insert operation.
+ */
+ public void testInsertionBlankNodes()
+ {
+ logger.info("testInsertionBlankNodes");
+
+ try {
+ Session session = database.newSession();
+ try {
+ session.createModel(model2URI, null);
+ session.setAutoCommit(false);
+
+ URIReference refA = new URIReferenceImpl(URI.create("test:a"));
+ URIReference refP1 = new URIReferenceImpl(URI.create("test:p1"));
+ URIReference refP2 = new URIReferenceImpl(URI.create("test:p2"));
+ Literal o1 = new LiteralImpl("o1");
+ Literal o2 = new LiteralImpl("o2");
+ BlankNode bn = new VariableNodeImpl("bn");
+
+ Set<Triple> insert1 = new HashSet<Triple>();
+ insert1.add(new TripleImpl(refA, refP1, bn));
+ insert1.add(new TripleImpl(bn, refP2, o1));
+
+ Set<Triple> insert2 = new HashSet<Triple>();
+ insert2.add(new TripleImpl(refA, refP1, bn));
+ insert2.add(new TripleImpl(bn, refP2, o2));
+
+ session.insert(model2URI, insert1);
+ session.insert(model2URI, insert2);
+ session.setAutoCommit(true);
+
+ Variable subjectVariable = new Variable("subject");
+ Variable predicateVariable = new Variable("predicate");
+ Variable objectVariable = new Variable("object");
+ List<Object> selectList = new ArrayList<Object>(3);
+ selectList.add(subjectVariable);
+ selectList.add(predicateVariable);
+ selectList.add(objectVariable);
+
+ Answer answer = session.query(new Query(
+ selectList, // SELECT
+ new ModelResource(model2URI), // FROM
+ new ConstraintImpl(subjectVariable, // WHERE
+ predicateVariable,
+ objectVariable),
+ null, // HAVING
+ new ArrayList<Order>(), // ORDER BY
+ null, // LIMIT
+ 0, // OFFSET
+ new UnconstrainedAnswer() // GIVEN
+ ));
+
+ assertEquals(4, answer.getRowCount());
+ }
+ finally {
+ session.close();
+ }
+ }
+ catch (Exception e) {
+ fail(e);
+ }
+ }
+
/**
* Test two simultaneous, explicit transactions, in two threads. The second one should block
* until the first one sets auto-commit back to true.
More information about the Mulgara-svn
mailing list