http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/DatasetClauseTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/DatasetClauseTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/DatasetClauseTest.java new file mode 100644 index 0000000..76d27c3 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/DatasetClauseTest.java @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.clauses; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; +import org.apache.jena.arq.querybuilder.clauses.DatasetClause; +import org.apache.jena.arq.querybuilder.handlers.DatasetHandler; +import org.junit.After; +import org.xenei.junit.contract.Contract; +import org.xenei.junit.contract.ContractTest; +import org.xenei.junit.contract.IProducer; + +import com.hp.hpl.jena.graph.NodeFactory; +import com.hp.hpl.jena.sparql.core.Var; + +@Contract(DatasetClause.class) +public class DatasetClauseTest<T extends DatasetClause<?>> extends + AbstractClauseTest { + + // the producer we will user + private IProducer<T> producer; + + @Contract.Inject + // define the method to set producer. + public final void setProducer(IProducer<T> producer) { + this.producer = producer; + } + + protected final IProducer<T> getProducer() { + return producer; + } + + @After + public final void cleanupDatasetClauseTest() { + getProducer().cleanUp(); // clean up the producer for the next run + } + + @ContractTest + public void testFromNamed() { + DatasetClause<?> datasetClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = datasetClause.fromNamed("name"); + String[] s = byLine(builder); + assertContains("FROM NAMED <name>", s); + builder = datasetClause.fromNamed("name2"); + s = byLine(builder); + assertContains("FROM NAMED <name>", s); + assertContains("FROM NAMED <name2>", s); + } + + @ContractTest + public void testFromNamedCollection() { + String[] names = { "name", "name2" }; + DatasetClause<?> datasetClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = datasetClause.fromNamed(Arrays + .asList(names)); + String[] s = byLine(builder); + assertContains("FROM NAMED <name>", s); + assertContains("FROM NAMED <name2>", s); + } + + @ContractTest + public void testFrom() { + DatasetClause<?> datasetClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = datasetClause.from("name"); + String[] s = byLine(builder); + assertContains("FROM <name>", s); + builder = datasetClause.from("name2"); + s = byLine(builder); + assertContains("FROM <name2>", s); + } + + @ContractTest + public void testGetDatasetHandler() { + DatasetClause<?> datasetClause = getProducer().newInstance(); + DatasetHandler dsHandler = datasetClause.getDatasetHandler(); + assertNotNull(dsHandler); + } + + @ContractTest + public void testAll() { + DatasetClause<?> datasetClause = getProducer().newInstance(); + datasetClause.fromNamed("name"); + datasetClause.fromNamed("name2"); + AbstractQueryBuilder<?> builder = datasetClause.from("name3"); + String[] s = byLine(builder); + assertContains("FROM NAMED <name>", s); + assertContains("FROM NAMED <name2>", s); + assertContains("FROM <name3>", s); + } + + @ContractTest + public void setVarsFromNamed() { + DatasetClause<?> datasetClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = datasetClause.fromNamed("?foo"); + datasetClause.from("?bar"); + builder.setVar(Var.alloc("foo"), + NodeFactory.createURI("http://example.com/foo")); + + String s = builder.buildString(); + assertTrue(s.contains("FROM NAMED <http://example.com/foo>")); + assertTrue(s.contains("FROM <?bar>")); + } + + @ContractTest + public void setVarsFrom() { + DatasetClause<?> datasetClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = datasetClause.fromNamed("?foo"); + datasetClause.from("?bar"); + builder.setVar(Var.alloc("bar"), + NodeFactory.createURI("http://example.com/bar")); + + String s = builder.buildString(); + assertTrue(s.contains("FROM NAMED <?foo>")); + assertTrue(s.contains("FROM <http://example.com/bar>")); + } + + @ContractTest + public void setVarsBoth() { + DatasetClause<?> datasetClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = datasetClause.fromNamed("?foo"); + datasetClause.from("?bar"); + builder.setVar(Var.alloc("bar"), + NodeFactory.createURI("http://example.com/bar")); + builder.setVar(Var.alloc("foo"), + NodeFactory.createURI("http://example.com/foo")); + String s = builder.buildString(); + assertTrue(s.contains("FROM NAMED <http://example.com/foo>")); + assertTrue(s.contains("FROM <http://example.com/bar>")); + } + +}
http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/PrologClauseTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/PrologClauseTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/PrologClauseTest.java new file mode 100644 index 0000000..0637958 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/PrologClauseTest.java @@ -0,0 +1,144 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.clauses; + +import static org.junit.Assert.*; + +import java.util.HashMap; +import java.util.Map; +import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; +import org.apache.jena.arq.querybuilder.clauses.PrologClause; +import org.apache.jena.arq.querybuilder.handlers.PrologHandler; +import org.junit.After; +import org.xenei.junit.contract.Contract; +import org.xenei.junit.contract.ContractTest; +import org.xenei.junit.contract.IProducer; + +import com.hp.hpl.jena.graph.NodeFactory; +import com.hp.hpl.jena.rdf.model.ResourceFactory; + +@Contract(PrologClause.class) +public class PrologClauseTest<T extends PrologClause<?>> extends + AbstractClauseTest { + + // the producer we will user + private IProducer<T> producer; + + @Contract.Inject + // define the method to set producer. + public final void setProducer(IProducer<T> producer) { + this.producer = producer; + } + + protected final IProducer<T> getProducer() { + return producer; + } + + @After + public final void cleanupDatasetClauseTest() { + getProducer().cleanUp(); // clean up the producer for the next run + } + + @ContractTest + public void testGetPrologHandler() { + PrologClause<?> prologClause = getProducer().newInstance(); + PrologHandler handler = prologClause.getPrologHandler(); + assertNotNull(handler); + } + + @ContractTest + public void testAddPrefixResource() { + PrologClause<?> prologClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = prologClause.addPrefix("pfx", + ResourceFactory.createResource("uri")); + + String[] s = byLine(builder); + assertContainsRegex("PREFIX\\s+pfx:\\s+\\<uri\\>", s); + } + + @ContractTest + public void testAddPrefixNode() { + PrologClause<?> prologClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = prologClause.addPrefix("pfx", + NodeFactory.createURI("uri")); + + String[] s = byLine(builder); + assertContainsRegex("PREFIX\\s+pfx:\\s+\\<uri\\>", s); + } + + @ContractTest + public void testAddPrefixString() { + PrologClause<?> prologClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = prologClause.addPrefix("pfx", "uri"); + + String[] s = byLine(builder); + assertContainsRegex("PREFIX\\s+pfx:\\s+\\<uri\\>", s); + } + + @ContractTest + public void testAddPrefixes() { + Map<String, String> map = new HashMap<String, String>(); + map.put("pfx", "uri"); + map.put("pfx2", "uri2"); + PrologClause<?> prologClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = prologClause.addPrefixes(map); + String[] s = byLine(builder); + assertContainsRegex("PREFIX\\s+pfx:\\s+\\<uri\\>", s); + assertContainsRegex("PREFIX\\s+pfx2:\\s+\\<uri2\\>", s); + } + + @ContractTest + public void testSetBaseResource() { + PrologClause<?> prologClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = prologClause.setBase(ResourceFactory + .createResource("http://example.com/uri")); + + String[] s = byLine(builder); + assertContainsRegex("BASE\\s+\\<http://example\\.com/uri\\>", s); + } + + @ContractTest + public void testSetBaseNode() { + PrologClause<?> prologClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = prologClause.setBase(NodeFactory + .createURI("http://example.com/uri")); + + String[] s = byLine(builder); + assertContainsRegex("BASE\\s+\\<http://example\\.com/uri\\>", s); + } + + @ContractTest + public void testSetBaseString() { + PrologClause<?> prologClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = prologClause.setBase("uri"); + + String[] s = byLine(builder); + assertContainsRegex("BASE\\s+\\<file:\\S+/uri\\>", s); + } + + @ContractTest + public void testSetBaseTwice() { + PrologClause<?> prologClause = getProducer().newInstance(); + prologClause.setBase("uri"); + AbstractQueryBuilder<?> builder = prologClause.setBase("uri2"); + + String[] s = byLine(builder); + assertContainsRegex("BASE\\s+\\<file:\\S+/uri2\\>", s); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SelectClauseTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SelectClauseTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SelectClauseTest.java new file mode 100644 index 0000000..8933bb7 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SelectClauseTest.java @@ -0,0 +1,170 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.clauses; + +import static org.junit.Assert.*; + +import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; +import org.apache.jena.arq.querybuilder.handlers.SelectHandler; +import org.junit.After; +import org.xenei.junit.contract.Contract; +import org.xenei.junit.contract.ContractTest; +import org.xenei.junit.contract.IProducer; + +import com.hp.hpl.jena.graph.NodeFactory; +import com.hp.hpl.jena.query.Query; +import com.hp.hpl.jena.sparql.core.Var; +import com.hp.hpl.jena.sparql.core.VarExprList; + +@Contract(SelectClause.class) +public class SelectClauseTest<T extends SelectClause<?>> extends + AbstractClauseTest { + + // the producer we will user + private IProducer<T> producer; + + @Contract.Inject + // define the method to set producer. + public final void setProducer(IProducer<T> producer) { + this.producer = producer; + } + + protected final IProducer<T> getProducer() { + return producer; + } + + @After + public final void cleanupSelectClauseTest() { + getProducer().cleanUp(); // clean up the producer for the next run + } + + @ContractTest + public void getSelectHandlerTest() { + SelectClause<?> selectClause = getProducer().newInstance(); + SelectHandler handler = selectClause.getSelectHandler(); + assertNotNull(handler); + } + + @ContractTest + public void setDistinctTest() throws Exception { + SelectClause<?> selectClause = getProducer().newInstance(); + Query query = getQuery((AbstractQueryBuilder<?>) selectClause); + assertFalse(query.isDistinct()); + assertFalse(query.isReduced()); + + query = getQuery(selectClause.setDistinct(true)); + assertTrue(query.isDistinct()); + assertFalse(query.isReduced()); + + query = getQuery(selectClause.setReduced(false)); + assertTrue(query.isDistinct()); + assertFalse(query.isReduced()); + + query = getQuery(selectClause.setReduced(true)); + assertFalse(query.isDistinct()); + assertTrue(query.isReduced()); + + query = getQuery(selectClause.setDistinct(true)); + assertTrue(query.isDistinct()); + assertFalse(query.isReduced()); + + query = getQuery(selectClause.setDistinct(false)); + assertFalse(query.isDistinct()); + assertFalse(query.isReduced()); + } + + @ContractTest + public void setReducedTest() throws Exception { + SelectClause<?> selectClause = getProducer().newInstance(); + Query query = getQuery((AbstractQueryBuilder<?>) selectClause); + assertFalse(query.isDistinct()); + assertFalse(query.isReduced()); + + query = getQuery(selectClause.setReduced(true)); + assertFalse(query.isDistinct()); + assertTrue(query.isReduced()); + + query = getQuery(selectClause.setDistinct(false)); + assertFalse(query.isDistinct()); + assertTrue(query.isReduced()); + + query = getQuery(selectClause.setDistinct(true)); + assertTrue(query.isDistinct()); + assertFalse(query.isReduced()); + + query = getQuery(selectClause.setReduced(true)); + assertFalse(query.isDistinct()); + assertTrue(query.isReduced()); + + query = getQuery(selectClause.setReduced(false)); + assertFalse(query.isDistinct()); + assertFalse(query.isReduced()); + } + + @ContractTest + public void testAddVarString() throws Exception { + Var v = Var.alloc("one"); + SelectClause<?> selectClause = getProducer().newInstance(); + selectClause.addVar("one"); + Query query = getQuery(selectClause.addVar("one")); + VarExprList expr = query.getProject(); + assertEquals(1, expr.size()); + assertTrue(expr.contains(v)); + } + + @ContractTest + public void testAddVarNode() throws Exception { + Var v = Var.alloc("one"); + SelectClause<?> selectClause = getProducer().newInstance(); + selectClause.addVar("one"); + Query query = getQuery(selectClause.addVar(NodeFactory + .createVariable("one"))); + VarExprList expr = query.getProject(); + assertEquals(1, expr.size()); + assertTrue(expr.contains(v)); + } + + @ContractTest + public void testAddVarVar() throws Exception { + Var v = Var.alloc("one"); + SelectClause<?> selectClause = getProducer().newInstance(); + Query query = getQuery(selectClause.addVar(v)); + VarExprList expr = query.getProject(); + assertEquals(1, expr.size()); + assertTrue(expr.contains(v)); + } + + @ContractTest + public void getVarsTest() { + SelectClause<?> selectClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = selectClause.addVar(NodeFactory + .createVariable("foo")); + String[] s = byLine(builder); + } + + @ContractTest + public void testAddVarAsterisk() throws Exception { + SelectClause<?> selectClause = getProducer().newInstance(); + selectClause.addVar("*"); + Query query = getQuery(selectClause.addVar("*")); + VarExprList expr = query.getProject(); + assertEquals(0, expr.size()); + assertTrue(query.isQueryResultStar()); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java new file mode 100644 index 0000000..8a96f54 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java @@ -0,0 +1,175 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.clauses; + +import static org.junit.Assert.assertFalse; + +import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; +import org.apache.jena.arq.querybuilder.clauses.SolutionModifierClause; +import org.junit.After; +import org.xenei.junit.contract.Contract; +import org.xenei.junit.contract.ContractTest; +import org.xenei.junit.contract.IProducer; + +import com.hp.hpl.jena.sparql.core.Var; +import com.hp.hpl.jena.sparql.lang.sparql_11.ParseException; + +@Contract(SolutionModifierClause.class) +public class SolutionModifierTest<T extends SolutionModifierClause<?>> extends + AbstractClauseTest { + + // the producer we will user + private IProducer<T> producer; + + @Contract.Inject + // define the method to set producer. + public final void setProducer(IProducer<T> producer) { + this.producer = producer; + } + + protected final IProducer<T> getProducer() { + return producer; + } + + @After + public final void cleanupDatasetClauseTest() { + getProducer().cleanUp(); // clean up the producer for the next run + } + + @ContractTest + public void testAddOrderBy() { + SolutionModifierClause<?> solutionModifier = getProducer() + .newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo"); + assertContainsRegex(ORDER_BY + var("foo"), builder.buildString()); + + builder = solutionModifier.addOrderBy("bar"); + assertContainsRegex(ORDER_BY + var("foo") + SPACE + var("bar"), + builder.buildString()); + } + + @ContractTest + public void testAddGroupBy() { + SolutionModifierClause<?> solutionModifier = getProducer() + .newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy("foo"); + assertContainsRegex(GROUP_BY + var("foo"), builder.buildString()); + + builder = solutionModifier.addGroupBy("bar"); + assertContainsRegex(GROUP_BY + var("foo") + SPACE + var("bar"), + builder.buildString()); + } + + @ContractTest + public void testAddHaving() throws ParseException { + SolutionModifierClause<?> solutionModifier = getProducer() + .newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.addHaving("?foo<10"); + assertContainsRegex(HAVING + OPEN_PAREN + var("foo") + OPT_SPACE + LT + + OPT_SPACE + "10" + CLOSE_PAREN, builder.buildString()); + + builder = solutionModifier.addHaving("?bar < 10"); + assertContainsRegex(HAVING + OPEN_PAREN + var("foo") + OPT_SPACE + LT + + OPT_SPACE + "10" + CLOSE_PAREN + OPT_SPACE + OPEN_PAREN + + var("bar") + OPT_SPACE + LT + OPT_SPACE + "10" + CLOSE_PAREN, + builder.buildString()); + } + + @ContractTest + public void testSetLimit() { + SolutionModifierClause<?> solutionModifier = getProducer() + .newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.setLimit(500); + assertContainsRegex("LIMIT\\s+500", builder.buildString()); + + builder = solutionModifier.setLimit(200); + String s = builder.buildString(); + assertContainsRegex("LIMIT\\s+200", s); + assertNotContainsRegex("LIMIT\\s+500", s); + + builder = solutionModifier.setLimit(0); + assertFalse("Should not contain LIMIT", + builder.buildString().contains("LIMIT")); + } + + @ContractTest + public void testSetOffset() { + SolutionModifierClause<?> solutionModifier = getProducer() + .newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.setOffset(500); + + assertContainsRegex("OFFSET\\s+500", builder.buildString()); + + builder = solutionModifier.setOffset(200); + + String s = builder.buildString(); + assertContainsRegex("OFFSET\\s+200", s); + assertNotContainsRegex("OFFSET\\s+500", s); + + builder = solutionModifier.setOffset(0); + + assertFalse("Should not contain OFFSET", builder.buildString() + .contains("OFFSET")); + } + + @ContractTest + public void testSetVarsGroupBy() { + Var v = Var.alloc("v"); + SolutionModifierClause<?> solutionModifier = getProducer() + .newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy("?v"); + + String[] s = byLine(builder); + assertContainsRegex(GROUP_BY + var("v"), s); + + builder.setVar(v, Var.alloc("v2")); + s = byLine(builder); + assertContainsRegex(GROUP_BY + var("v2"), s); + } + + @ContractTest + public void testSetVarsHaving() throws ParseException { + Var v = Var.alloc("v"); + SolutionModifierClause<?> solutionModifier = getProducer() + .newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.addHaving("?v"); + + String[] s = byLine(builder); + assertContainsRegex(HAVING + var("v"), s); + + builder.setVar(v, Var.alloc("v2")); + s = byLine(builder); + assertContainsRegex(HAVING + var("v2"), s); + } + + @ContractTest + public void testSetVarsOrderBy() { + Var v = Var.alloc("v"); + SolutionModifierClause<?> solutionModifier = getProducer() + .newInstance(); + AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("?v"); + + String[] s = byLine(builder); + assertContainsRegex(ORDER_BY + var("v"), s); + + builder.setVar(v, Var.alloc("v2")); + s = byLine(builder); + assertContainsRegex(ORDER_BY + var("v2"), s); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java new file mode 100644 index 0000000..f663732 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java @@ -0,0 +1,285 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.clauses; + +import static org.junit.Assert.assertNotNull; + +import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; +import org.apache.jena.arq.querybuilder.SelectBuilder; +import org.apache.jena.arq.querybuilder.clauses.WhereClause; +import org.apache.jena.arq.querybuilder.handlers.WhereHandler; +import org.junit.After; +import org.xenei.junit.contract.Contract; +import org.xenei.junit.contract.ContractTest; +import org.xenei.junit.contract.IProducer; + +import com.hp.hpl.jena.graph.NodeFactory; +import com.hp.hpl.jena.graph.Triple; +import com.hp.hpl.jena.graph.impl.LiteralLabelFactory; +import com.hp.hpl.jena.sparql.core.Var; +import com.hp.hpl.jena.sparql.lang.sparql_11.ParseException; + +@Contract(WhereClause.class) +public class WhereClauseTest<T extends WhereClause<?>> extends + AbstractClauseTest { + + // the producer we will user + private IProducer<T> producer; + + @Contract.Inject + // define the method to set producer. + public final void setProducer(IProducer<T> producer) { + this.producer = producer; + } + + protected final IProducer<T> getProducer() { + return producer; + } + + @After + public final void cleanupDatasetClauseTest() { + getProducer().cleanUp(); // clean up the producer for the next run + } + + @ContractTest + public void testGetWhereHandler() { + WhereClause<?> whereClause = getProducer().newInstance(); + WhereHandler handler = whereClause.getWhereHandler(); + assertNotNull(handler); + } + + @ContractTest + public void testAddWhereTriple() { + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addWhere(new Triple( + NodeFactory.createURI("one"), NodeFactory.createURI("two"), + NodeFactory.createURI("three"))); + + String[] s = byLine(builder); + assertContainsRegex("<one>\\s+<two>\\s+<three>\\s*\\.", s); + } + + @ContractTest + public void testAddWhereObjects() { + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addWhere( + NodeFactory.createURI("one"), NodeFactory.createURI("two"), + NodeFactory.createURI("three")); + + String[] s = byLine(builder); + assertContainsRegex("<one>\\s+<two>\\s+<three>\\s*\\.", s); + } + + @ContractTest + public void testAddWhereStrings() { + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addWhere("<one>", + "<two>", "three"); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + quote("three") + "\\^\\^" + + node("http://www.w3.org/2001/XMLSchema#string") + OPT_SPACE + + DOT + CLOSE_CURLY, builder.buildString()); + } + + @ContractTest + public void testAddOptionalString() { + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addOptional("<one>", + "<two>", "three"); + + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + quote("three") + "\\^\\^" + + node("http://www.w3.org/2001/XMLSchema#string") + OPT_SPACE + + DOT + CLOSE_CURLY + CLOSE_CURLY, builder.buildString()); + + } + + @ContractTest + public void testAddOptionalObjects() { + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addOptional( + NodeFactory.createURI("one"), NodeFactory.createURI("two"), + NodeFactory.createURI("three")); + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + node("three") + OPT_SPACE + DOT + CLOSE_CURLY, + builder.buildString()); + } + + @ContractTest + public void testAddOptionalTriple() { + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addOptional(new Triple( + NodeFactory.createURI("one"), NodeFactory.createURI("two"), + NodeFactory.createURI("three"))); + + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + node("three") + OPT_SPACE + DOT + CLOSE_CURLY, + builder.buildString()); + } + + @ContractTest + public void testAddFilter() throws ParseException { + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addFilter("?one<10"); + + assertContainsRegex(WHERE + OPEN_CURLY + "FILTER" + OPT_SPACE + + OPEN_PAREN + var("one") + OPT_SPACE + LT + OPT_SPACE + "10" + + CLOSE_PAREN + CLOSE_CURLY, builder.buildString()); + } + + @ContractTest + public void addSubQuery() { + SelectBuilder sb = new SelectBuilder(); + sb.addPrefix("pfx", "urn:uri").addVar("?x") + .addWhere("pfx:one", "pfx:two", "pfx:three"); + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addSubQuery(sb); + + assertContainsRegex(PREFIX + "pfx:" + SPACE + node("urn:uri") + SPACE + + ".*" + WHERE + OPEN_CURLY + OPEN_CURLY + SELECT + var("x") + + SPACE + WHERE + OPEN_CURLY + "pfx:one" + SPACE + "pfx:two" + + SPACE + "pfx:three" + OPT_SPACE + DOT + CLOSE_CURLY, + builder.buildString()); + + } + + @ContractTest + public void testAddUnion() { + SelectBuilder sb = new SelectBuilder(); + sb.addPrefix("pfx", "uri").addVar("?x") + .addWhere("<one>", "<two>", "three"); + WhereClause<?> whereClause = getProducer().newInstance(); + whereClause.getWhereHandler().addWhere(Triple.ANY); + AbstractQueryBuilder<?> builder = whereClause.addUnion(sb); + + assertContainsRegex(PREFIX + "pfx:" + SPACE + node("uri") + ".+" + + UNION + OPEN_CURLY + SELECT + var("x") + SPACE + WHERE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + quote("three") + "\\^\\^" + + node("http://www.w3.org/2001/XMLSchema#string") + OPT_SPACE + + DOT + CLOSE_CURLY + CLOSE_CURLY, builder.buildString()); + + } + + @ContractTest + public void testSetVarsInTriple() { + Var v = Var.alloc("v"); + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addWhere(new Triple( + NodeFactory.createURI("one"), NodeFactory.createURI("two"), v)); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + var("v") + OPT_SPACE + DOT + + CLOSE_CURLY, builder.buildString()); + + builder.setVar(v, NodeFactory.createURI("three")); + + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + node("three") + OPT_SPACE + DOT + + CLOSE_CURLY, builder.buildString()); + + builder.setVar(v, NodeFactory.createURI("four")); + + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + node("four") + OPT_SPACE + DOT + + CLOSE_CURLY, builder.buildString()); + + builder.setVar(v, null); + + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + var("v") + OPT_SPACE + DOT + + CLOSE_CURLY, builder.buildString()); + + } + + @ContractTest + public void testSetVarsInFilter() throws ParseException { + Var v = Var.alloc("v"); + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addFilter("?one < ?v"); + assertContainsRegex(WHERE + OPEN_CURLY + "FILTER" + OPT_SPACE + + OPEN_PAREN + var("one") + OPT_SPACE + LT + OPT_SPACE + + var("v") + CLOSE_PAREN + CLOSE_CURLY, builder.buildString()); + + builder.setVar(Var.alloc("v"), + NodeFactory.createLiteral(LiteralLabelFactory.create(10))); + + assertContainsRegex(WHERE + OPEN_CURLY + "FILTER" + OPT_SPACE + + OPEN_PAREN + var("one") + OPT_SPACE + LT + OPT_SPACE + + quote("10") + "\\^\\^" + + node("http://www.w3.org/2001/XMLSchema#int") + CLOSE_PAREN + + CLOSE_CURLY, builder.buildString()); + + } + + @ContractTest + public void testSetVarsInOptional() { + Var v = Var.alloc("v"); + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addOptional(new Triple( + NodeFactory.createURI("one"), NodeFactory.createURI("two"), v)); + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + var("v") + OPT_SPACE + DOT + CLOSE_CURLY + CLOSE_CURLY, + builder.buildString()); + + builder.setVar(v, NodeFactory.createURI("three")); + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + node("three") + OPT_SPACE + DOT + CLOSE_CURLY + CLOSE_CURLY, + builder.buildString()); + } + + @ContractTest + public void testSetVarsInSubQuery() { + Var v = Var.alloc("v"); + SelectBuilder sb = new SelectBuilder(); + sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", v); + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addSubQuery(sb); + + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + ".+" + + node("two") + ".+" + var("v") + ".+" + CLOSE_CURLY, + builder.buildString()); + + builder.setVar(v, NodeFactory.createURI("three")); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + ".+" + + node("two") + ".+" + node("three") + ".+" + CLOSE_CURLY, + builder.buildString()); + } + + @ContractTest + public void testSetVarsInUnion() { + Var v = Var.alloc("v"); + SelectBuilder sb = new SelectBuilder(); + sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", v); + WhereClause<?> whereClause = getProducer().newInstance(); + AbstractQueryBuilder<?> builder = whereClause.addUnion(sb); + assertContainsRegex(WHERE + OPEN_CURLY + UNION + OPEN_CURLY + + node("one") + ".+" + node("two") + ".+" + var("v") + ".+" + + CLOSE_CURLY, builder.buildString()); + + builder.setVar(v, NodeFactory.createURI("three")); + assertContainsRegex(WHERE + OPEN_CURLY + UNION + OPEN_CURLY + + node("one") + ".+" + node("two") + ".+" + node("three") + + ".+" + CLOSE_CURLY, builder.buildString()); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/AbstractHandlerTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/AbstractHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/AbstractHandlerTest.java new file mode 100644 index 0000000..64cd39c --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/AbstractHandlerTest.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.handlers; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import java.util.Arrays; +import java.util.List; +import org.apache.jena.arq.AbstractRegexpBasedTest; + +public abstract class AbstractHandlerTest extends AbstractRegexpBasedTest { + + protected final String[] byLine(String s) { + return s.split("\n"); + } + + protected final void assertContains(String expected, String[] lst) { + List<String> s = Arrays.asList(lst); + assertTrue(String.format("%s not found in %s", expected, s), + s.contains(expected)); + } + + protected final void assertNotContains(String expected, String[] lst) { + List<String> s = Arrays.asList(lst); + assertFalse(String.format("%s found in %s", expected, s), + s.contains(expected)); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/ConstructHandlerTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/ConstructHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/ConstructHandlerTest.java new file mode 100644 index 0000000..6ba2dc1 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/ConstructHandlerTest.java @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.handlers; + +import static org.junit.Assert.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; + +import com.hp.hpl.jena.graph.Node; +import com.hp.hpl.jena.graph.NodeFactory; +import com.hp.hpl.jena.graph.Triple; +import com.hp.hpl.jena.query.Query; +import com.hp.hpl.jena.sparql.core.Var; +import com.hp.hpl.jena.sparql.syntax.Template; + +public class ConstructHandlerTest extends AbstractHandlerTest { + private Query query; + private ConstructHandler handler; + + @Before + public void setup() { + query = new Query(); + handler = new ConstructHandler(query); + } + + @Test + public void testAddAll() { + Triple t = new Triple(NodeFactory.createURI("one"), + NodeFactory.createURI("two"), NodeFactory.createURI("three")); + ConstructHandler handler2 = new ConstructHandler(new Query()); + handler2.addConstruct(t); + handler.addAll(handler2); + Template template = query.getConstructTemplate(); + assertNotNull(template); + List<Triple> lst = template.getTriples(); + assertEquals(1, lst.size()); + assertEquals(t, lst.get(0)); + } + + @Test + public void testAddConstruct() { + Triple t = new Triple(NodeFactory.createURI("one"), + NodeFactory.createURI("two"), NodeFactory.createURI("three")); + handler.addConstruct(t); + Template template = query.getConstructTemplate(); + assertNotNull(template); + List<Triple> lst = template.getTriples(); + assertEquals(1, lst.size()); + assertEquals(t, lst.get(0)); + } + + @Test + public void testSetVars() { + Var v = Var.alloc("v"); + Triple t = new Triple(NodeFactory.createURI("one"), + NodeFactory.createURI("two"), v); + handler.addConstruct(t); + Template template = query.getConstructTemplate(); + assertNotNull(template); + List<Triple> lst = template.getTriples(); + assertEquals(1, lst.size()); + assertEquals(t, lst.get(0)); + + Map<Var, Node> values = new HashMap<Var, Node>(); + values.put(v, NodeFactory.createURI("three")); + handler.setVars(values); + + template = query.getConstructTemplate(); + assertNotNull(template); + lst = template.getTriples(); + assertEquals(1, lst.size()); + t = new Triple(NodeFactory.createURI("one"), + NodeFactory.createURI("two"), NodeFactory.createURI("three")); + assertEquals(t, lst.get(0)); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/DatasetHandlerTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/DatasetHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/DatasetHandlerTest.java new file mode 100644 index 0000000..f9e2d49 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/DatasetHandlerTest.java @@ -0,0 +1,126 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.handlers; + +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import org.apache.jena.arq.querybuilder.handlers.DatasetHandler; +import org.junit.Before; +import org.junit.Test; + +import com.hp.hpl.jena.graph.Node; +import com.hp.hpl.jena.graph.NodeFactory; +import com.hp.hpl.jena.query.Query; +import com.hp.hpl.jena.sparql.core.Var; + +public class DatasetHandlerTest extends AbstractHandlerTest { + private Query query; + private DatasetHandler handler; + + @Before + public void setup() { + query = new Query(); + handler = new DatasetHandler(query); + } + + @Test + public void testAddAll() { + DatasetHandler handler2 = new DatasetHandler(new Query()); + handler2.from("foo"); + handler2.fromNamed("bar"); + handler.addAll(handler2); + String s = query.toString(); + assertTrue(s.contains("FROM <foo>")); + assertTrue(s.contains("FROM NAMED <bar>")); + } + + @Test + public void testFromNamedString() { + handler.fromNamed("foo"); + assertTrue(query.toString().contains("FROM NAMED <foo>")); + } + + @Test + public void fromNamedCollection() { + String[] names = { "foo", "bar" }; + handler.fromNamed(Arrays.asList(names)); + String s = query.toString(); + assertTrue(s.contains("FROM NAMED <foo>")); + assertTrue(s.contains("FROM NAMED <bar>")); + } + + @Test + public void fromString() { + handler.from("foo"); + assertTrue(query.toString().contains("FROM <foo>")); + } + + @Test + public void fromStringCollection() { + String[] names = { "foo", "bar" }; + handler.from(Arrays.asList(names)); + assertTrue(query.toString().contains("FROM <foo>")); + assertTrue(query.toString().contains("FROM <bar>")); + } + + @Test + public void setVarsFromNamed() { + Map<Var, Node> values = new HashMap<Var, Node>(); + handler.fromNamed("?foo"); + handler.from("?bar"); + values.put(Var.alloc("foo"), + NodeFactory.createURI("http://example.com/foo")); + handler.setVars(values); + String s = query.toString(); + assertTrue(s.contains("FROM NAMED <http://example.com/foo>")); + assertTrue(s.contains("FROM <?bar>")); + } + + @Test + public void setVarsFrom() { + Map<Var, Node> values = new HashMap<Var, Node>(); + handler.fromNamed("?foo"); + handler.from("?bar"); + values.put(Var.alloc("bar"), + NodeFactory.createURI("http://example.com/bar")); + handler.setVars(values); + String s = query.toString(); + assertTrue(s.contains("FROM NAMED <?foo>")); + assertTrue(s.contains("FROM <http://example.com/bar>")); + } + + @Test + public void setVarsBoth() { + Map<Var, Node> values = new HashMap<Var, Node>(); + handler.fromNamed("?foo"); + handler.from("?bar"); + values.put(Var.alloc("bar"), + NodeFactory.createURI("http://example.com/bar")); + values.put(Var.alloc("foo"), + NodeFactory.createURI("http://example.com/foo")); + handler.setVars(values); + String s = query.toString(); + assertTrue(s.contains("FROM NAMED <http://example.com/foo>")); + assertTrue(s.contains("FROM <http://example.com/bar>")); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/PrologHandlerTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/PrologHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/PrologHandlerTest.java new file mode 100644 index 0000000..b53c611 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/PrologHandlerTest.java @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.handlers; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.jena.arq.querybuilder.handlers.PrologHandler; +import org.junit.Before; +import org.junit.Test; + +import com.hp.hpl.jena.query.Query; + +public class PrologHandlerTest extends AbstractHandlerTest { + + private PrologHandler handler; + private Query query; + + @Before + public void setup() { + query = new Query(); + handler = new PrologHandler(query); + } + + @Test + public void testAddPrefixString() { + handler.addPrefix("pfx", "uri"); + String[] lst = byLine(query.toString()); + assertContainsRegex(PREFIX+"pfx:"+SPACE+node("uri"), lst); + } + + @Test + public void testAddPrefixStringWithColon() { + handler.addPrefix("pfx:", "uri"); + String[] lst = byLine(query.toString()); + assertContainsRegex(PREFIX+"pfx:"+SPACE+node("uri"), lst); + } + + @Test + public void testAddPrefixHandler() { + PrologHandler handler2 = new PrologHandler(new Query()); + handler2.addPrefix("pfx", "uri"); + handler.addAll(handler2); + String[] lst = byLine(query.toString()); + assertContainsRegex("PREFIX\\s+pfx:\\s+\\<uri\\>", lst); + } + + @Test + public void testAddPrefixes() { + Map<String, String> map = new HashMap<String, String>(); + map.put("pfx", "uri"); + map.put("pfx2", "uri2"); + handler.addPrefixes(map); + String[] lst = byLine(query.toString()); + assertContainsRegex(PREFIX+"pfx:"+SPACE+node("uri"), lst); + assertContainsRegex(PREFIX+"pfx2:"+SPACE+node("uri2"), lst); + } + + @Test + public void testAddPrefixesWithColon() { + Map<String, String> map = new HashMap<String, String>(); + map.put("pfx:", "uri"); + map.put("pfx2", "uri2"); + handler.addPrefixes(map); + String[] lst = byLine(query.toString()); + assertContainsRegex(PREFIX+"pfx:"+SPACE+node("uri"), lst); + assertContainsRegex(PREFIX+"pfx2:"+SPACE+node("uri2"), lst); + } + + @Test + public void testAddDuplicatePrefix() { + handler.addPrefix("pfx", "uri"); + handler.addPrefix("pfx", "uri"); + String[] lst = byLine(query.toString()); + assertContainsRegex("PREFIX\\s+pfx:\\s+\\<uri\\>", lst); + } + + @Test + public void testSetBaseString() { + handler.setBase("foo"); + String[] lst = byLine(query.toString()); + assertContainsRegex("BASE\\s+\\<.+/foo\\>", lst); + } + + @Test + public void testBaseAndPrefix() { + handler.setBase("foo"); + handler.addPrefix("pfx", "uri"); + String[] lst = byLine(query.toString()); + assertContainsRegex("PREFIX\\s+pfx:\\s+\\<uri\\>", lst); + assertContainsRegex("BASE\\s+\\<.+/foo\\>", lst); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SelectHandlerTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SelectHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SelectHandlerTest.java new file mode 100644 index 0000000..0f49c8f --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SelectHandlerTest.java @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.handlers; + +import static org.junit.Assert.*; + +import org.junit.Before; +import org.junit.Test; + +import com.hp.hpl.jena.query.Query; +import com.hp.hpl.jena.sparql.core.Var; +import com.hp.hpl.jena.sparql.core.VarExprList; + +public class SelectHandlerTest extends AbstractHandlerTest { + + private SelectHandler handler; + private Query query; + + @Before + public void setup() { + query = new Query(); + handler = new SelectHandler(query); + } + + @Test + public void testAddVar() { + Var v = Var.alloc("one"); + handler.addVar(v); + VarExprList expr = query.getProject(); + assertEquals(1, expr.size()); + assertTrue(expr.contains(v)); + } + + @Test + public void testAddVarAsterisk() { + handler.addVar(null); + VarExprList expr = query.getProject(); + assertEquals(0, expr.size()); + assertTrue(query.isQueryResultStar()); + } + + @Test + public void testAddVarAfterAsterisk() { + handler.addVar(null); + handler.addVar(Var.alloc("x")); + VarExprList expr = query.getProject(); + assertEquals(1, expr.size()); + assertFalse(query.isQueryResultStar()); + assertTrue(expr.contains(Var.alloc("x"))); + } + + @Test + public void testAddVarVar() { + Var v = Var.alloc("one"); + handler.addVar(v); + VarExprList expr = query.getProject(); + assertEquals(1, expr.size()); + assertTrue(expr.contains(v)); + } + + @Test + public void testSetDistinct() { + assertFalse(query.isDistinct()); + assertFalse(query.isReduced()); + + handler.setDistinct(true); + assertTrue(query.isDistinct()); + assertFalse(query.isReduced()); + + handler.setReduced(false); + assertTrue(query.isDistinct()); + assertFalse(query.isReduced()); + + handler.setReduced(true); + assertFalse(query.isDistinct()); + assertTrue(query.isReduced()); + + handler.setDistinct(true); + assertTrue(query.isDistinct()); + assertFalse(query.isReduced()); + + handler.setDistinct(false); + assertFalse(query.isDistinct()); + assertFalse(query.isReduced()); + } + + @Test + public void testSetReduced() { + assertFalse(query.isDistinct()); + assertFalse(query.isReduced()); + + handler.setReduced(true); + assertFalse(query.isDistinct()); + assertTrue(query.isReduced()); + + handler.setDistinct(false); + assertFalse(query.isDistinct()); + assertTrue(query.isReduced()); + + handler.setDistinct(true); + assertTrue(query.isDistinct()); + assertFalse(query.isReduced()); + + handler.setReduced(true); + assertFalse(query.isDistinct()); + assertTrue(query.isReduced()); + + handler.setReduced(false); + assertFalse(query.isDistinct()); + assertFalse(query.isReduced()); + + } + + @Test + public void testAddAllResultStartReduced() { + SelectHandler sh = new SelectHandler(new Query()); + sh.addVar(null); + sh.setReduced(true); + + handler.addAll(sh); + assertTrue(query.isReduced()); + assertTrue(query.isQueryResultStar()); + } + + @Test + public void testAddAllVarsDistinct() { + SelectHandler sh = new SelectHandler(new Query()); + sh.addVar(Var.alloc("foo")); + sh.setDistinct(true); + + handler.addAll(sh); + assertTrue(query.isDistinct()); + assertFalse(query.isQueryResultStar()); + assertEquals(1, query.getResultVars().size()); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandlerTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandlerTest.java new file mode 100644 index 0000000..bba1807 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/SolutionModifierHandlerTest.java @@ -0,0 +1,201 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.handlers; + +import static org.junit.Assert.assertEquals; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.jena.arq.querybuilder.handlers.SolutionModifierHandler; +import org.junit.Before; +import org.junit.Test; + +import com.hp.hpl.jena.graph.Node; +import com.hp.hpl.jena.query.Query; +import com.hp.hpl.jena.query.SortCondition; +import com.hp.hpl.jena.sparql.core.Var; +import com.hp.hpl.jena.sparql.lang.sparql_11.ParseException; + +public class SolutionModifierHandlerTest extends AbstractHandlerTest { + + private Query query; + private SolutionModifierHandler solutionModifier; + + @Before + public void setup() { + query = new Query(); + solutionModifier = new SolutionModifierHandler(query); + } + + @Test + public void testAddAll() throws ParseException { + SolutionModifierHandler solutionModifier2 = new SolutionModifierHandler( + new Query()); + solutionModifier2.addOrderBy("orderBy"); + solutionModifier2.addGroupBy("groupBy"); + solutionModifier2.addHaving("?having<10"); + solutionModifier2.setLimit(500); + solutionModifier2.setOffset(200); + + solutionModifier.addAll(solutionModifier2); + + String[] s = byLine(query.toString()); + assertContainsRegex(GROUP_BY + var("groupBy"), s); + assertContainsRegex(HAVING + OPEN_PAREN + var("having") + OPT_SPACE + + LT + OPT_SPACE + "10" + CLOSE_PAREN, s); + assertContainsRegex(ORDER_BY + var("orderBy"), s); + assertContainsRegex(LIMIT + "500", s); + assertContainsRegex(OFFSET + "200", s); + } + + @Test + public void testAll() throws ParseException { + solutionModifier.addOrderBy("orderBy"); + solutionModifier.addGroupBy("groupBy"); + solutionModifier.addHaving("SUM(?lprice) > 10"); + solutionModifier.setLimit(500); + solutionModifier.setOffset(200); + + String[] s = byLine(query.toString()); + assertContainsRegex("GROUP BY\\s+\\?groupBy", s); + assertContainsRegex("HAVING\\s+\\( sum\\(\\?lprice\\) > 10 \\)", s); + assertContainsRegex("ORDER BY\\s+\\?orderBy", s); + assertContainsRegex("LIMIT\\s+500", s); + assertContainsRegex("OFFSET\\s+200", s); + + } + + @Test + public void testAddOrderBy() { + solutionModifier.addOrderBy("orderBy"); + List<SortCondition> sc = query.getOrderBy(); + assertEquals("Wrong number of conditions", 1, sc.size()); + assertEquals("Wrong value", sc.get(0).expression.asVar(), + Var.alloc("orderBy")); + + solutionModifier.addOrderBy("orderBy2"); + sc = query.getOrderBy(); + assertEquals("Wrong number of conditions", 2, sc.size()); + assertEquals("Wrong value", sc.get(0).expression.asVar(), + Var.alloc("orderBy")); + assertEquals("Wrong value", sc.get(1).expression.asVar(), + Var.alloc("orderBy2")); + } + + @Test + public void testAddGroupBy() { + solutionModifier.addGroupBy("groupBy"); + String[] s = byLine(query.toString()); + assertContainsRegex("GROUP BY\\s+\\?groupBy", s); + + solutionModifier.addGroupBy("groupBy2"); + s = byLine(query.toString()); + assertContainsRegex("GROUP BY\\s+\\?groupBy\\s+\\?groupBy2", s); + } + + @Test + public void testAddHaving() throws ParseException { + solutionModifier.addHaving("?having<10"); + assertContainsRegex(HAVING + OPEN_PAREN + var("having") + OPT_SPACE + + LT + OPT_SPACE + 10 + CLOSE_PAREN, query.toString()); + + solutionModifier.addHaving("?having2"); + assertContainsRegex(HAVING + OPEN_PAREN + var("having") + OPT_SPACE + + LT + OPT_SPACE + 10 + CLOSE_PAREN + OPT_SPACE + + var("having2"), query.toString()); + } + + @Test + public void testSetLimit() { + solutionModifier.setLimit(500); + String[] s = byLine(query.toString()); + assertContainsRegex("LIMIT\\s+500", s); + + solutionModifier.setLimit(200); + s = byLine(query.toString()); + assertContainsRegex("LIMIT\\s+200", s); + + solutionModifier.setLimit(-1); + s = byLine(query.toString()); + assertNotContainsRegex("LIMIT.*", s); + + } + + @Test + public void testSetOffset() { + solutionModifier.setOffset(500); + String[] s = byLine(query.toString()); + assertContainsRegex("OFFSET\\s+500", s); + + solutionModifier.setOffset(200); + s = byLine(query.toString()); + assertContainsRegex("OFFSET\\s+200", s); + + solutionModifier.setOffset(-1); + s = byLine(query.toString()); + assertNotContainsRegex("OFFSET.*", s); + } + + @Test + public void testSetVarsGroupBy() { + Var v = Var.alloc("v"); + solutionModifier.addGroupBy(v); + + String[] s = byLine(query.toString()); + assertContainsRegex(GROUP_BY + var("v"), s); + + Map<Var, Node> values = new HashMap<Var, Node>(); + values.put(v, Var.alloc("v2")); + solutionModifier.setVars(values); + s = byLine(query.toString()); + assertContainsRegex(GROUP_BY + var("v2"), s); + } + + @Test + public void testSetVarsHaving() { + Var v = Var.alloc("v"); + solutionModifier.addHaving(v); + + String[] s = byLine(query.toString()); + assertContainsRegex(HAVING + var("v"), s); + + Map<Var, Node> values = new HashMap<Var, Node>(); + values.put(v, Var.alloc("v2")); + solutionModifier.setVars(values); + s = byLine(query.toString()); + assertContainsRegex(HAVING + var("v2"), s); + } + + @Test + public void testSetVarsOrderBy() { + Var v = Var.alloc("v"); + solutionModifier.addOrderBy(v); + + String[] s = byLine(query.toString()); + assertContainsRegex(ORDER_BY + var("v"), s); + + Map<Var, Node> values = new HashMap<Var, Node>(); + values.put(v, Var.alloc("v2")); + solutionModifier.setVars(values); + s = byLine(query.toString()); + assertContainsRegex(ORDER_BY + var("v2"), s); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java ---------------------------------------------------------------------- diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java new file mode 100644 index 0000000..ef6ff94 --- /dev/null +++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java @@ -0,0 +1,296 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.arq.querybuilder.handlers; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.jena.arq.querybuilder.SelectBuilder; +import org.apache.jena.arq.querybuilder.handlers.WhereHandler; +import org.junit.Before; +import org.junit.Test; + +import com.hp.hpl.jena.graph.Node; +import com.hp.hpl.jena.graph.NodeFactory; +import com.hp.hpl.jena.graph.Triple; +import com.hp.hpl.jena.graph.impl.LiteralLabelFactory; +import com.hp.hpl.jena.query.Query; +import com.hp.hpl.jena.rdf.model.ResourceFactory; +import com.hp.hpl.jena.sparql.core.Var; +import com.hp.hpl.jena.sparql.lang.sparql_11.ParseException; +import com.hp.hpl.jena.vocabulary.RDF; + +public class WhereHandlerTest extends AbstractHandlerTest { + + private Query query; + private WhereHandler handler; + + @Before + public void setup() { + query = new Query(); + handler = new WhereHandler(query); + } + + @Test + public void testAddAll() { + Query query2 = new Query(); + WhereHandler handler2 = new WhereHandler(query2); + handler2.addWhere(new Triple(NodeFactory.createURI("one"), NodeFactory + .createURI("two"), NodeFactory.createLiteral("three"))); + handler.addAll(handler2); + + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + quote("three") + OPT_SPACE + DOT + + CLOSE_CURLY, query.toString()); + } + + @Test + public void addWhereTriple() { + handler.addWhere(new Triple(NodeFactory.createURI("one"), NodeFactory + .createURI("two"), NodeFactory.createURI("three"))); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + node("three") + OPT_SPACE + DOT + + CLOSE_CURLY, query.toString()); + } + + @Test + public void testAddWhereObjects() { + handler.addWhere(new Triple(NodeFactory.createURI("one"), + ResourceFactory.createResource("two").asNode(), ResourceFactory + .createLangLiteral("three", "en-US").asNode())); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + quote("three") + "@en-US" + OPT_SPACE + + DOT + CLOSE_CURLY, query.toString()); + } + + @Test + public void testAddWhereAnonymous() { + handler.addWhere(new Triple(Node.ANY, RDF.first.asNode(), Node.ANY)); + assertContainsRegex(WHERE + OPEN_CURLY + "ANY" + SPACE + + node("http://www\\.w3\\.org/1999/02/22-rdf-syntax-ns#first") + + SPACE + "ANY" + OPT_SPACE + DOT + CLOSE_CURLY, + query.toString()); + } + + @Test + public void testAddOptionalStrings() { + handler.addOptional(new Triple(NodeFactory.createURI("one"), + NodeFactory.createURI("two"), NodeFactory.createURI("three"))); + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + node("three") + OPT_SPACE + DOT + CLOSE_CURLY + CLOSE_CURLY, + query.toString()); + } + + @Test + public void testAddOptionalAnonymous() { + handler.addOptional(new Triple(Node.ANY, RDF.first.asNode(), Node.ANY)); + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + "ANY" + SPACE + + node("http://www\\.w3\\.org/1999/02/22-rdf-syntax-ns#first") + + SPACE + "ANY" + OPT_SPACE + DOT + CLOSE_CURLY + CLOSE_CURLY, + query.toString()); + } + + @Test + public void testAddOptionalObjects() { + handler.addOptional(new Triple(NodeFactory.createURI("one"), + ResourceFactory.createResource("two").asNode(), ResourceFactory + .createLangLiteral("three", "en-US").asNode())); + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + quote("three") + "@en-US" + OPT_SPACE + DOT + CLOSE_CURLY + + CLOSE_CURLY, query.toString()); + } + + @Test + public void testAddWhereStrings() { + handler.addWhere(new Triple(NodeFactory.createURI("one"), NodeFactory + .createURI("two"), NodeFactory.createURI("three"))); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + node("three") + OPT_SPACE + DOT + + CLOSE_CURLY, query.toString()); + } + + @Test + public void testAddFilter() throws ParseException { + handler.addFilter("?one < 10"); + + assertContainsRegex(WHERE + OPEN_CURLY + "FILTER" + OPT_SPACE + + OPEN_PAREN + var("one") + OPT_SPACE + LT + OPT_SPACE + "10" + + CLOSE_PAREN + CLOSE_CURLY, query.toString()); + } + + @Test + public void testAddFilterVarOnly() throws ParseException { + handler.addFilter("?one"); + + assertContainsRegex(WHERE + OPEN_CURLY + "FILTER" + OPT_SPACE + + OPEN_PAREN + var("one") + CLOSE_PAREN + CLOSE_CURLY, + query.toString()); + } + + @Test + public void testAddSubQueryWithVars() { + SelectBuilder sb = new SelectBuilder(); + sb.addPrefix("pfx", "uri").addVar("?x") + .addWhere("<one>", "<two>", "three"); + handler.addSubQuery(sb); + assertContainsRegex("SELECT" + SPACE + var("x") + SPACE + WHERE + + OPEN_CURLY + node("one") + ".+" + node("two") + ".+" + + quote("three") + ".+" + CLOSE_CURLY, query.toString()); + } + + @Test + public void testAddSubQueryWithoutVars() { + SelectBuilder sb = new SelectBuilder(); + sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", "three"); + handler.addSubQuery(sb); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + ".+" + + node("two") + ".+" + quote("three") + ".+" + CLOSE_CURLY, + query.toString()); + } + + @Test + public void testAddUnion() { + SelectBuilder sb = new SelectBuilder(); + sb.addWhere(new Triple(NodeFactory.createURI("one"), NodeFactory + .createURI("two"), NodeFactory.createURI("three"))); + + handler.addUnion(sb); + assertContainsRegex(WHERE + OPEN_CURLY + UNION + OPEN_CURLY + + node("one") + SPACE + node("two") + SPACE + node("three") + + OPT_SPACE + DOT + CLOSE_CURLY, query.toString()); + } + + @Test + public void testAddUnionWithVar() { + SelectBuilder sb = new SelectBuilder().addVar("x").addWhere( + new Triple(NodeFactory.createURI("one"), NodeFactory + .createURI("two"), NodeFactory.createURI("three"))); + + handler.addUnion(sb); + assertContainsRegex(WHERE + OPEN_CURLY + UNION + OPEN_CURLY + SELECT + + var("x") + SPACE + WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + node("three") + OPT_SPACE + DOT + + CLOSE_CURLY, query.toString()); + } + + @Test + public void addGraph() { + + WhereHandler handler2 = new WhereHandler(new Query()); + handler2.addWhere(new Triple(NodeFactory.createURI("one"), NodeFactory + .createURI("two"), NodeFactory.createURI("three"))); + + handler.addGraph(NodeFactory.createURI("graph"), handler2); + assertContainsRegex(WHERE + OPEN_CURLY + "GRAPH" + SPACE + + node("graph") + SPACE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + node("three") + OPT_SPACE + DOT + + CLOSE_CURLY + CLOSE_CURLY, query.toString()); + + } + + @Test + public void testSetVarsInTriple() { + Var v = Var.alloc("v"); + handler.addWhere(new Triple(NodeFactory.createURI("one"), NodeFactory + .createURI("two"), v)); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + var("v") + OPT_SPACE + DOT + + CLOSE_CURLY, query.toString()); + Map<Var, Node> values = new HashMap<Var, Node>(); + values.put(v, NodeFactory.createURI("three")); + handler.setVars(values); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + SPACE + + node("two") + SPACE + node("three") + OPT_SPACE + DOT + + CLOSE_CURLY, query.toString()); + } + + @Test + public void testSetVarsInFilter() throws ParseException { + handler.addFilter("?one < ?v"); + assertContainsRegex(WHERE + OPEN_CURLY + "FILTER" + OPT_SPACE + + OPEN_PAREN + var("one") + OPT_SPACE + LT + OPT_SPACE + + var("v") + CLOSE_PAREN + CLOSE_CURLY, query.toString()); + Map<Var, Node> values = new HashMap<Var, Node>(); + + values.put(Var.alloc("v"), + NodeFactory.createLiteral(LiteralLabelFactory.create(10))); + handler.setVars(values); + assertContainsRegex(WHERE + OPEN_CURLY + "FILTER" + OPT_SPACE + + OPEN_PAREN + var("one") + OPT_SPACE + LT + OPT_SPACE + + quote("10") + "\\^\\^" + + node("http://www.w3.org/2001/XMLSchema#int") + CLOSE_PAREN + + CLOSE_CURLY, query.toString()); + + } + + @Test + public void testSetVarsInOptional() { + Var v = Var.alloc("v"); + handler.addOptional(new Triple(NodeFactory.createURI("one"), + NodeFactory.createURI("two"), v)); + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + var("v") + OPT_SPACE + DOT + CLOSE_CURLY + CLOSE_CURLY, + query.toString()); + Map<Var, Node> values = new HashMap<Var, Node>(); + values.put(v, NodeFactory.createURI("three")); + handler.setVars(values); + assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + + OPEN_CURLY + node("one") + SPACE + node("two") + SPACE + + node("three") + OPT_SPACE + DOT + CLOSE_CURLY + CLOSE_CURLY, + query.toString()); + } + + @Test + public void testSetVarsInSubQuery() { + Var v = Var.alloc("v"); + SelectBuilder sb = new SelectBuilder(); + sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", v); + handler.addSubQuery(sb); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + ".+" + + node("two") + ".+" + var("v") + ".+" + CLOSE_CURLY, + query.toString()); + Map<Var, Node> values = new HashMap<Var, Node>(); + values.put(v, NodeFactory.createURI("three")); + handler.setVars(values); + assertContainsRegex(WHERE + OPEN_CURLY + node("one") + ".+" + + node("two") + ".+" + node("three") + ".+" + CLOSE_CURLY, + query.toString()); + } + + @Test + public void testSetVarsInUnion() { + Var v = Var.alloc("v"); + SelectBuilder sb = new SelectBuilder(); + sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", v); + handler.addUnion(sb); + assertContainsRegex(WHERE + OPEN_CURLY + UNION + OPEN_CURLY + + node("one") + ".+" + node("two") + ".+" + var("v") + ".+" + + CLOSE_CURLY, query.toString()); + Map<Var, Node> values = new HashMap<Var, Node>(); + values.put(v, NodeFactory.createURI("three")); + handler.setVars(values); + assertContainsRegex(WHERE + OPEN_CURLY + UNION + OPEN_CURLY + + node("one") + ".+" + node("two") + ".+" + node("three") + + ".+" + CLOSE_CURLY, query.toString()); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-extras/pom.xml ---------------------------------------------------------------------- diff --git a/jena-extras/pom.xml b/jena-extras/pom.xml deleted file mode 100644 index 3ad1997..0000000 --- a/jena-extras/pom.xml +++ /dev/null @@ -1,120 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <artifactId>jena-extras</artifactId> - <version>2.12.2-SNAPSHOT</version> - <packaging>pom</packaging> - <name>Apache Jena Extras - jena-extras</name> - <description>Extra packages for Jena development. -This is the parent module for the Jena Extra modules. - These modules provide utiliities and larger packages that make Apache Jena development or usage - easier but that do not fall within the standard Jena framework.</description> - - <parent> - <groupId>org.apache.jena</groupId> - <artifactId>jena-parent</artifactId> - <version>12-SNAPSHOT</version> - <relativePath>../jena-parent</relativePath> - </parent> - - <!-- Need if the parent is a snapshot --> - <repositories> - <repository> - <id>apache.snapshots</id> - <name>Apache Snapshot Repository</name> - <url>http://repository.apache.org/snapshots</url> - <releases> - <enabled>false</enabled> - </releases> - </repository> - </repositories> - - <modules> - <module>jena-querybuilder</module> - </modules> - - <properties> - <plugin.license.version>1.9.0</plugin.license.version> - <plugin.license.headerPath>${project.basedir}</plugin.license.headerPath> - <jena-version>${project.version}</jena-version> - </properties> - - <build> - <plugins> - <!-- Compiler Plugin --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>${jdk.version}</source> - <target>${jdk.version}</target> - <encoding>${project.build.sourceEncoding}</encoding> - </configuration> - </plugin> - <!-- License Plugin --> - <!-- - <plugin> - <groupId>com.mycila.maven-license-plugin</groupId> - <artifactId>maven-license-plugin</artifactId> - <version>${plugin.license.version}</version> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>check</goal> - </goals> - </execution> - </executions> - <configuration> - <header>${plugin.license.headerPath}/license-header.txt</header> - <failIfMissing>true</failIfMissing> - <aggregate>true</aggregate> - <excludes> - <exclude>**/*.git*</exclude> - <exclude>**/*.md</exclude> - <exclude>**/*.xml</exclude> - <exclude>**/*.properties</exclude> - <exclude>**/LICENSE</exclude> - <exclude>**/NOTICE</exclude> - </excludes> - <useDefaultMapping>true</useDefaultMapping> - <strictCheck>true</strictCheck> - </configuration> - </plugin> - --> - <!-- Sources Plugin --> - <plugin> - <artifactId>maven-source-plugin</artifactId> - <version>2.1.1</version> - <executions> - <execution> - <id>bundle-sources</id> - <phase>package</phase> - <goals> - <!-- produce source artifact for main project sources --> - <goal>jar-no-fork</goal> - </goals> - </execution> - </executions> - </plugin> - - </plugins> - </build> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.apache.jena</groupId> - <artifactId>apache-jena-libs</artifactId> - <version>${jena-version}</version> - <type>pom</type> - </dependency> - <dependency> - <groupId>org.xenei</groupId> - <artifactId>junit-contracts</artifactId> - <version>0.0.5</version> - <scope>test</scope> - </dependency> - </dependencies> - </dependencyManagement> -</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-fuseki/DEPENDENCIES ---------------------------------------------------------------------- diff --git a/jena-fuseki/DEPENDENCIES b/jena-fuseki/DEPENDENCIES deleted file mode 100644 index 7dece40..0000000 --- a/jena-fuseki/DEPENDENCIES +++ /dev/null @@ -1,21 +0,0 @@ -This file lists the dependences for Apache Jena Fuseki. - Version numbers are given in the POM file for a particular distribution. - -Apache Projects: Apache Software License - Apache Jena, including the Jena IRI library - Apache Xerces-J - Apache log4j - Apache HttpComponents (HTTP Client) - Apache Commons Codec - Apache Common FileUpload - -SLF4J : http://www.slf4j.org/ - Copyright (c) 2004-2008 QOS.ch - MIT License - -JUnit : http://junit.org/ - Common Public License - v 1.0 - -Jetty: http://www.eclipse.org/jetty/ - Apache License 2.0 - (also avilable under Eclipse Public License 1.0) http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-fuseki/Data/books.ttl ---------------------------------------------------------------------- diff --git a/jena-fuseki/Data/books.ttl b/jena-fuseki/Data/books.ttl deleted file mode 100644 index 032c805..0000000 --- a/jena-fuseki/Data/books.ttl +++ /dev/null @@ -1,46 +0,0 @@ -@prefix dc: <http://purl.org/dc/elements/1.1/> . -@prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> . -@prefix ns: <http://example.org/ns#> . - -@prefix : <http://example.org/book/> . - -# A small dataset for usage examples of Joseki -# This data is intentionaly irregular (e.g. different ways to -# record the book creator) as if the information is either an -# aggregation or was created at different times. - -:book1 - dc:title "Harry Potter and the Philosopher's Stone" ; - dc:creator "J.K. Rowling" ; - . - -:book2 - dc:title "Harry Potter and the Chamber of Secrets" ; - dc:creator _:a . - -:book3 - dc:title "Harry Potter and the Prisoner Of Azkaban" ; - dc:creator _:a . - -:book4 - dc:title "Harry Potter and the Goblet of Fire" . - -:book5 - dc:title "Harry Potter and the Order of the Phoenix"; - dc:creator "J.K. Rowling" ; - . - -:book6 - dc:title "Harry Potter and the Half-Blood Prince"; - dc:creator "J.K. Rowling" . - -:book7 - dc:title "Harry Potter and the Deathly Hallows" ; - dc:creator "J.K. Rowling" . -_:a - vcard:FN "J.K. Rowling" ; - vcard:N - [ vcard:Family "Rowling" ; - vcard:Given "Joanna" - ] - . http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-fuseki/Data/test_abox.ttl ---------------------------------------------------------------------- diff --git a/jena-fuseki/Data/test_abox.ttl b/jena-fuseki/Data/test_abox.ttl deleted file mode 100644 index 18b907f..0000000 --- a/jena-fuseki/Data/test_abox.ttl +++ /dev/null @@ -1,5 +0,0 @@ -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . -@prefix : <http://example/ns#> . - -:x rdf:type :A . - http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-fuseki/Data/test_data_rdfs.ttl ---------------------------------------------------------------------- diff --git a/jena-fuseki/Data/test_data_rdfs.ttl b/jena-fuseki/Data/test_data_rdfs.ttl deleted file mode 100644 index d1dbe43..0000000 --- a/jena-fuseki/Data/test_data_rdfs.ttl +++ /dev/null @@ -1,12 +0,0 @@ -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -@prefix : <http://example/ns#> . - -:A a rdfs:Class . -:B a rdfs:Class . - -:A rdfs:subClassOf :B . - -:x rdf:type :A . - http://git-wip-us.apache.org/repos/asf/jena/blob/2fb788d3/jena-fuseki/Data/test_tbox.ttl ---------------------------------------------------------------------- diff --git a/jena-fuseki/Data/test_tbox.ttl b/jena-fuseki/Data/test_tbox.ttl deleted file mode 100644 index 7c6e456..0000000 --- a/jena-fuseki/Data/test_tbox.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -@prefix : <http://example/ns#> . - -:A a rdfs:Class . -:B a rdfs:Class . - -:A rdfs:subClassOf :B .
