This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit 34b102af36a0a965c3af90eba28cbb6963d40ff7 Author: Andy Seaborne <[email protected]> AuthorDate: Thu May 15 18:25:55 2025 +0100 GH-3197: Remove contract tests in jena-querybuidler --- jena-extras/jena-querybuilder/pom.xml | 6 - .../arq/querybuilder/AskBuilderContractTest.java | 53 - .../querybuilder/ConstructBuilderContractTest.java | 53 - .../querybuilder/DescribeBuilderContractTest.java | 53 - .../querybuilder/SelectBuilderContractTest.java | 53 - .../arq/querybuilder/WhereBuilderContractTest.java | 53 - .../querybuilder/clauses/AbstractClauseTest.java | 53 - .../querybuilder/clauses/DatasetClauseTest.java | 143 -- .../arq/querybuilder/clauses/PrologClauseTest.java | 163 --- .../arq/querybuilder/clauses/SelectClauseTest.java | 148 --- .../querybuilder/clauses/SolutionModifierTest.java | 533 -------- .../arq/querybuilder/clauses/ValuesClauseTest.java | 430 ------ .../arq/querybuilder/clauses/WhereClauseTest.java | 1381 -------------------- 13 files changed, 3122 deletions(-) diff --git a/jena-extras/jena-querybuilder/pom.xml b/jena-extras/jena-querybuilder/pom.xml index 349dcc9899..bbf9366ea7 100644 --- a/jena-extras/jena-querybuilder/pom.xml +++ b/jena-extras/jena-querybuilder/pom.xml @@ -40,12 +40,6 @@ <version>5.5.0-SNAPSHOT</version> </dependency> - <dependency> - <groupId>org.xenei</groupId> - <artifactId>junit-contracts</artifactId> - <scope>test</scope> - </dependency> - <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/AskBuilderContractTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/AskBuilderContractTest.java deleted file mode 100644 index ad44971fe2..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/AskBuilderContractTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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; - -import org.junit.runner.RunWith; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractImpl; -import org.xenei.junit.contract.ContractSuite; -import org.xenei.junit.contract.IProducer; - -@RunWith(ContractSuite.class) -@ContractImpl(AskBuilder.class) -public class AskBuilderContractTest { - - // create the producer to inject - private IProducer<AskBuilder> producer = new IProducer<AskBuilder>() { - - @Override - public AskBuilder newInstance() { - return new AskBuilder(); - } - - @Override - public void cleanUp() { - // no cleanup required - } - - }; - - public AskBuilderContractTest() { - } - - @Contract.Inject - public IProducer<AskBuilder> getProducer() { - return producer; - } - -} diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConstructBuilderContractTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConstructBuilderContractTest.java deleted file mode 100644 index b3508ae055..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConstructBuilderContractTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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; - -import org.junit.runner.RunWith; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractImpl; -import org.xenei.junit.contract.ContractSuite; -import org.xenei.junit.contract.IProducer; - -@RunWith(ContractSuite.class) -@ContractImpl(ConstructBuilder.class) -public class ConstructBuilderContractTest { - - // create the producer to inject - private IProducer<ConstructBuilder> producer = new IProducer<ConstructBuilder>() { - - @Override - public ConstructBuilder newInstance() { - return new ConstructBuilder(); - } - - @Override - public void cleanUp() { - // no cleanup required - } - - }; - - public ConstructBuilderContractTest() { - } - - @Contract.Inject - public IProducer<ConstructBuilder> getProducer() { - return producer; - } - -} diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/DescribeBuilderContractTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/DescribeBuilderContractTest.java deleted file mode 100644 index 82d1b1fb98..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/DescribeBuilderContractTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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; - -import org.junit.runner.RunWith; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractImpl; -import org.xenei.junit.contract.ContractSuite; -import org.xenei.junit.contract.IProducer; - -@RunWith(ContractSuite.class) -@ContractImpl(DescribeBuilder.class) -public class DescribeBuilderContractTest { - - // create the producer to inject - private IProducer<DescribeBuilder> producer = new IProducer<DescribeBuilder>() { - - @Override - public DescribeBuilder newInstance() { - return new DescribeBuilder(); - } - - @Override - public void cleanUp() { - // no cleanup required - } - - }; - - public DescribeBuilderContractTest() { - } - - @Contract.Inject - public IProducer<DescribeBuilder> getProducer() { - return producer; - } - -} diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/SelectBuilderContractTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/SelectBuilderContractTest.java deleted file mode 100644 index 547ce85579..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/SelectBuilderContractTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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; - -import org.junit.runner.RunWith; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractImpl; -import org.xenei.junit.contract.ContractSuite; -import org.xenei.junit.contract.IProducer; - -@RunWith(ContractSuite.class) -@ContractImpl(SelectBuilder.class) -public class SelectBuilderContractTest { - - // create the producer to inject - private IProducer<SelectBuilder> producer = new IProducer<SelectBuilder>() { - - @Override - public SelectBuilder newInstance() { - return new SelectBuilder(); - } - - @Override - public void cleanUp() { - // no cleanup required - } - - }; - - public SelectBuilderContractTest() { - } - - @Contract.Inject - public IProducer<SelectBuilder> getProducer() { - return producer; - } - -} diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/WhereBuilderContractTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/WhereBuilderContractTest.java deleted file mode 100644 index 7611145e18..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/WhereBuilderContractTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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; - -import org.junit.runner.RunWith; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractImpl; -import org.xenei.junit.contract.ContractSuite; -import org.xenei.junit.contract.IProducer; - -@RunWith(ContractSuite.class) -@ContractImpl(WhereBuilder.class) -public class WhereBuilderContractTest { - - // create the producer to inject - private IProducer<WhereBuilder> producer = new IProducer<WhereBuilder>() { - - @Override - public WhereBuilder newInstance() { - return new WhereBuilder(); - } - - @Override - public void cleanUp() { - // no cleanup required - } - - }; - - public WhereBuilderContractTest() { - } - - @Contract.Inject - public IProducer<WhereBuilder> getProducer() { - return producer; - } - -} diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/AbstractClauseTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/AbstractClauseTest.java deleted file mode 100644 index 14604442bf..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/AbstractClauseTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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 static org.junit.Assert.assertTrue; - -import java.lang.reflect.Field; -import java.util.Arrays; -import java.util.List; - -import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; -import org.apache.jena.query.Query; - -public abstract class AbstractClauseTest { - - protected final static String[] byLine(AbstractQueryBuilder<?> builder) { - return builder.buildString().split("\n"); - } - - protected final static Query getQuery(AbstractQueryBuilder<?> builder) - throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { - Field f = AbstractQueryBuilder.class.getDeclaredField("query"); - f.setAccessible(true); - return (Query) f.get(builder); - } - - protected final static 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 static void assertNotContains(String expected, String[] lst) { - List<String> s = Arrays.asList(lst); - assertFalse(String.format("%s found in %s", expected, s), s.contains(expected)); - } - -} 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 deleted file mode 100644 index 6d2c8124a6..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/DatasetClauseTest.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * 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.handlers.DatasetHandler; -import org.apache.jena.graph.NodeFactory; -import org.apache.jena.sparql.core.Var; -import org.junit.After; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractTest; -import org.xenei.junit.contract.IProducer; - -@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>")); - } - -} 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 deleted file mode 100644 index 714b3c1a63..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/PrologClauseTest.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * 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.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; -import org.apache.jena.arq.querybuilder.handlers.PrologHandler; -import org.apache.jena.graph.NodeFactory; -import org.apache.jena.query.Query; -import org.apache.jena.rdf.model.ResourceFactory; -import org.apache.jena.shared.PrefixMapping; -import org.apache.jena.shared.impl.PrefixMappingImpl; -import org.junit.After; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractTest; -import org.xenei.junit.contract.IProducer; - -@Contract(PrologClause.class) -public class PrologClauseTest<T extends PrologClause<?>> { - - // 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")); - Query q = builder.build(); - PrefixMapping map = q.getPrefixMapping(); - assertEquals("uri", map.getNsPrefixURI("pfx")); - assertEquals(1, map.getNsPrefixMap().size()); - } - - @ContractTest - public void testAddPrefixNode() { - PrologClause<?> prologClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = prologClause.addPrefix("pfx", NodeFactory.createURI("uri")); - - Query q = builder.build(); - PrefixMapping map = q.getPrefixMapping(); - assertEquals("uri", map.getNsPrefixURI("pfx")); - assertEquals(1, map.getNsPrefixMap().size()); - } - - @ContractTest - public void testAddPrefixString() { - PrologClause<?> prologClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = prologClause.addPrefix("pfx", "uri"); - Query q = builder.build(); - PrefixMapping map = q.getPrefixMapping(); - assertEquals("uri", map.getNsPrefixURI("pfx")); - assertEquals(1, map.getNsPrefixMap().size()); - } - - @ContractTest - public void testAddPrefixes_Map() { - Map<String, String> map = new HashMap<>(); - map.put("pfx", "uri"); - map.put("pfx2", "uri2"); - PrologClause<?> prologClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = prologClause.addPrefixes(map); - Query q = builder.build(); - PrefixMapping map2 = q.getPrefixMapping(); - assertEquals("uri", map2.getNsPrefixURI("pfx")); - assertEquals("uri2", map2.getNsPrefixURI("pfx2")); - assertEquals(2, map2.getNsPrefixMap().size()); - } - - @ContractTest - public void testAddPrefixes_PrefixMapping() { - PrefixMapping map = new PrefixMappingImpl(); - map.setNsPrefix("pfx", "uri"); - map.setNsPrefix("pfx2", "uri2"); - PrologClause<?> prologClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = prologClause.addPrefixes(map); - Query q = builder.build(); - PrefixMapping map2 = q.getPrefixMapping(); - assertEquals(map.getNsPrefixURI("pfx"), map2.getNsPrefixURI("pfx")); - assertEquals(map.getNsPrefixURI("pfx2"), map2.getNsPrefixURI("pfx2")); - assertEquals(2, map2.getNsPrefixMap().size()); - } - - @ContractTest - public void testSetBaseResource() { - PrologClause<?> prologClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = prologClause - .setBase(ResourceFactory.createResource("http://example.com/uri")); - - Query q = builder.build(); - assertEquals("http://example.com/uri", q.getBaseURI()); - } - - @ContractTest - public void testSetBaseNode() { - PrologClause<?> prologClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = prologClause.setBase(NodeFactory.createURI("http://example.com/uri")); - - Query q = builder.build(); - assertEquals("http://example.com/uri", q.getBaseURI()); - } - - @ContractTest - public void testSetBaseString() { - PrologClause<?> prologClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = prologClause.setBase("http://example.com/uri"); - - Query q = builder.build(); - assertEquals("http://example.com/uri", q.getBaseURI()); - } - - @ContractTest - public void testSetBaseTwice() { - PrologClause<?> prologClause = getProducer().newInstance(); - prologClause.setBase("http://example.com/uri"); - AbstractQueryBuilder<?> builder = prologClause.setBase("http://example.com/uri2"); - - Query q = builder.build(); - assertEquals("http://example.com/uri2", q.getBaseURI()); - } - -} 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 deleted file mode 100644 index 2704afd27e..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SelectClauseTest.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * 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.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.util.List; - -import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; -import org.apache.jena.arq.querybuilder.handlers.SelectHandler; -import org.apache.jena.graph.NodeFactory; -import org.apache.jena.query.Query; -import org.apache.jena.sparql.core.Var; -import org.apache.jena.sparql.core.VarExprList; -import org.apache.jena.sparql.expr.E_Random; -import org.apache.jena.sparql.expr.Expr; -import org.junit.After; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractTest; -import org.xenei.junit.contract.IProducer; - -@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 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")); - try { - List<Var> vars = getQuery(builder).getProjectVars(); - assertEquals(1, vars.size()); - assertEquals("?foo", vars.get(0).toString()); - } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) { - fail("Unable to access query from queryBuilder: " + e.getMessage()); - } - } - - @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()); - } - - @ContractTest - public void testAddExprVar() throws Exception { - SelectClause<?> selectClause = getProducer().newInstance(); - AbstractQueryBuilder<?> aqb = selectClause.addVar(new E_Random(), Var.alloc("foo")); - - Query query = getQuery(aqb); - VarExprList expr = query.getProject(); - assertEquals(1, expr.size()); - Expr e = expr.getExpr(Var.alloc("foo")); - assertNotNull("expression should not be null", e); - assertTrue("Should be an E_Random", e instanceof E_Random); - } - - @ContractTest - public void testAddStringVar() throws Exception { - SelectClause<?> selectClause = getProducer().newInstance(); - AbstractQueryBuilder<?> aqb = selectClause.addVar("rand()", Var.alloc("foo")); - - Query query = getQuery(aqb); - VarExprList expr = query.getProject(); - assertEquals(1, expr.size()); - Expr e = expr.getExpr(Var.alloc("foo")); - assertNotNull("expression should not be null", e); - assertTrue("Should be an E_Random", e instanceof E_Random); - } -} 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 deleted file mode 100644 index e3011486eb..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/SolutionModifierTest.java +++ /dev/null @@ -1,533 +0,0 @@ -/* - * 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.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -import java.util.List; - -import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; -import org.apache.jena.arq.querybuilder.Order; -import org.apache.jena.graph.Node; -import org.apache.jena.graph.NodeFactory; -import org.apache.jena.query.Query; -import org.apache.jena.query.SortCondition; -import org.apache.jena.sparql.core.Var; -import org.apache.jena.sparql.core.VarExprList; -import org.apache.jena.sparql.expr.E_LessThan; -import org.apache.jena.sparql.expr.E_Random; -import org.apache.jena.sparql.expr.Expr; -import org.apache.jena.sparql.expr.ExprVar; -import org.apache.jena.sparql.expr.nodevalue.NodeValueInteger; -import org.junit.After; -import org.junit.Assert; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractTest; -import org.xenei.junit.contract.IProducer; - -@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 testAddOrderByString() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo"); - - List<SortCondition> lst = builder.build().getOrderBy(); - Assert.assertEquals(1, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), Query.ORDER_DEFAULT), lst.get(0)); - - builder = solutionModifier.addOrderBy("bar"); - lst = builder.build().getOrderBy(); - Assert.assertEquals(2, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), Query.ORDER_DEFAULT), lst.get(0)); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("bar")), Query.ORDER_DEFAULT), lst.get(1)); - - } - - @ContractTest - public void testAddOrderByStringAscending() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo", Order.ASCENDING); - - List<SortCondition> lst = builder.build().getOrderBy(); - Assert.assertEquals(1, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), Query.ORDER_ASCENDING), lst.get(0)); - - builder = solutionModifier.addOrderBy("bar"); - lst = builder.build().getOrderBy(); - Assert.assertEquals(2, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), Query.ORDER_ASCENDING), lst.get(0)); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("bar")), Query.ORDER_DEFAULT), lst.get(1)); - - } - - @ContractTest - public void testAddOrderByStringDescending() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("foo", Order.DESCENDING); - - List<SortCondition> lst = builder.build().getOrderBy(); - Assert.assertEquals(1, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), Query.ORDER_DESCENDING), lst.get(0)); - - builder = solutionModifier.addOrderBy("bar"); - lst = builder.build().getOrderBy(); - Assert.assertEquals(2, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("foo")), Query.ORDER_DESCENDING), lst.get(0)); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("bar")), Query.ORDER_DEFAULT), lst.get(1)); - } - - @ContractTest - public void testAddOrderByExpr() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - Expr e = new E_Random(); - AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(e); - - Query query = builder.build(); - assertTrue( query.hasOrderBy() ); - List<SortCondition> orderBy = query.getOrderBy(); - assertEquals( 1, orderBy.size() ); - assertEquals( Query.ORDER_DEFAULT, orderBy.get(0).getDirection() ); - assertEquals( e, orderBy.get(0).getExpression()); - - builder = solutionModifier.addOrderBy("bar"); - - query = builder.build(); - assertTrue( query.hasOrderBy() ); - orderBy = query.getOrderBy(); - assertEquals( 2, orderBy.size() ); - assertEquals( Query.ORDER_DEFAULT, orderBy.get(0).getDirection() ); - assertEquals( e, orderBy.get(0).getExpression()); - assertEquals( Query.ORDER_DEFAULT, orderBy.get(1).getDirection() ); - assertEquals( new ExprVar("bar"), orderBy.get(1).getExpression()); - } - - @ContractTest - public void testAddOrderByExprAscending() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - Expr e = new E_Random(); - AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(e, Order.ASCENDING); - - Query query = builder.build(); - assertTrue( query.hasOrderBy() ); - List<SortCondition> orderBy = query.getOrderBy(); - assertEquals( 1, orderBy.size() ); - assertEquals( Query.ORDER_ASCENDING, orderBy.get(0).getDirection() ); - assertEquals( e, orderBy.get(0).getExpression()); - - builder = solutionModifier.addOrderBy("bar"); - - query = builder.build(); - assertTrue( query.hasOrderBy() ); - orderBy = query.getOrderBy(); - assertEquals( 2, orderBy.size() ); - assertEquals( Query.ORDER_ASCENDING, orderBy.get(0).getDirection() ); - assertEquals( e, orderBy.get(0).getExpression()); - assertEquals( Query.ORDER_DEFAULT, orderBy.get(1).getDirection() ); - assertEquals( new ExprVar("bar"), orderBy.get(1).getExpression()); - } - - @ContractTest - public void testAddOrderByExprDescending() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - Expr e = new E_Random(); - AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(e, Order.DESCENDING); - - - Query query = builder.build(); - assertTrue( query.hasOrderBy() ); - List<SortCondition> orderBy = query.getOrderBy(); - assertEquals( 1, orderBy.size() ); - assertEquals( Query.ORDER_DESCENDING, orderBy.get(0).getDirection() ); - assertEquals( e, orderBy.get(0).getExpression()); - - builder = solutionModifier.addOrderBy("bar"); - - query = builder.build(); - assertTrue( query.hasOrderBy() ); - orderBy = query.getOrderBy(); - assertEquals( 2, orderBy.size() ); - assertEquals( Query.ORDER_DESCENDING, orderBy.get(0).getDirection() ); - assertEquals( e, orderBy.get(0).getExpression()); - assertEquals( Query.ORDER_DEFAULT, orderBy.get(1).getDirection() ); - assertEquals( new ExprVar("bar"), orderBy.get(1).getExpression()); - } - - @ContractTest - public void testAddGroupByString() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy("foo"); - - Query query = builder.build(); - assertTrue( query.hasGroupBy() ); - VarExprList groupBy = query.getGroupBy(); - assertEquals( 1, groupBy.size() ); - List<Var> vars = groupBy.getVars(); - assertEquals( 1, vars.size() ); - assertEquals( Var.alloc("foo" ), vars.get(0)); - assertNull( groupBy.getExpr( vars.get(0) )); - - builder = solutionModifier.addGroupBy("bar"); - - query = builder.build(); - assertTrue( query.hasGroupBy() ); - groupBy = query.getGroupBy(); - assertEquals( 2, groupBy.size() ); - vars = groupBy.getVars(); - assertEquals( 2, vars.size() ); - assertEquals( Var.alloc("foo" ), vars.get(0)); - assertNull( groupBy.getExpr( vars.get(0) )); - assertEquals( Var.alloc("bar" ), vars.get(1)); - assertNull( groupBy.getExpr( vars.get(1) )); - } - - @ContractTest - public void testAddGroupByExpr() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy(new E_Random()); - - Query query = builder.build(); - assertTrue( query.hasGroupBy() ); - VarExprList groupBy = query.getGroupBy(); - assertEquals( 1, groupBy.size() ); - List<Var> vars = groupBy.getVars(); - assertEquals( 1, vars.size() ); - assertEquals( new E_Random(), groupBy.getExpr( vars.get(0) )); - - builder = solutionModifier.addGroupBy("bar"); - - query = builder.build(); - assertTrue( query.hasGroupBy() ); - groupBy = query.getGroupBy(); - assertEquals( 2, groupBy.size() ); - vars = groupBy.getVars(); - assertEquals( 2, vars.size() ); - assertEquals( new E_Random(), groupBy.getExpr( vars.get(0) )); - assertEquals( Var.alloc("bar" ), vars.get(1)); - assertNull( groupBy.getExpr( vars.get(1) )); - } - - @ContractTest - public void testAddGroupByVar() { - Var foo = Var.alloc("foo"); - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy(foo); - - VarExprList groupBy = builder.build().getGroupBy(); - Assert.assertEquals(1, groupBy.size()); - Assert.assertEquals(foo, groupBy.getVars().get(0)); - Assert.assertNull(groupBy.getExpr(foo)); - - builder = solutionModifier.addGroupBy("bar"); - groupBy = builder.build().getGroupBy(); - Assert.assertEquals(2, groupBy.size()); - Assert.assertEquals(foo, groupBy.getVars().get(0)); - Assert.assertNull(groupBy.getExpr(foo)); - - Assert.assertEquals(Var.alloc("bar"), groupBy.getVars().get(1)); - Assert.assertNull(groupBy.getExpr(Var.alloc("bar"))); - - } - - @ContractTest - public void testAddGroupByVarAndExpr() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy(Var.alloc("foo"), new E_Random()); - - Query query = builder.build(); - assertTrue( query.hasGroupBy() ); - VarExprList groupBy = query.getGroupBy(); - assertEquals( 1, groupBy.size() ); - List<Var> vars = groupBy.getVars(); - assertEquals( 1, vars.size() ); - assertEquals( Var.alloc("foo" ), vars.get(0)); - assertEquals( new E_Random(), groupBy.getExpr( vars.get(0) )); - - builder = solutionModifier.addGroupBy("bar"); - - query = builder.build(); - assertTrue( query.hasGroupBy() ); - groupBy = query.getGroupBy(); - assertEquals( 2, groupBy.size() ); - vars = groupBy.getVars(); - assertEquals( 2, vars.size() ); - assertEquals( Var.alloc("foo" ), vars.get(0)); - assertEquals( new E_Random(), groupBy.getExpr( vars.get(0) )); - assertEquals( Var.alloc("bar" ), vars.get(1)); - assertNull( groupBy.getExpr( vars.get(1) )); - - } - - @ContractTest - public void testAddHavingString() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addHaving("?foo<10"); - - Query query = builder.build(); - assertTrue( query.hasHaving() ); - List<Expr> having = query.getHavingExprs(); - assertEquals( 1, having.size() ); - Expr exp = having.get(0); - assertTrue( exp.isFunction() ); - assertTrue( exp.getFunction() instanceof E_LessThan ); - List<Expr> args = exp.getFunction().getArgs(); - assertEquals( new ExprVar( "foo"), args.get(0)); - assertEquals( new NodeValueInteger(10), args.get(1)); - - builder = solutionModifier.addHaving("?bar < 10"); - - query = builder.build(); - assertTrue( query.hasHaving() ); - having = query.getHavingExprs(); - assertEquals( 2, having.size() ); - exp = having.get(0); - assertTrue( exp.isFunction() ); - assertTrue( exp.getFunction() instanceof E_LessThan ); - args = exp.getFunction().getArgs(); - assertEquals( new ExprVar( "foo"), args.get(0)); - assertEquals( new NodeValueInteger(10), args.get(1)); - - exp = having.get(1); - assertTrue( exp.isFunction() ); - assertTrue( exp.getFunction() instanceof E_LessThan ); - args = exp.getFunction().getArgs(); - assertEquals( new ExprVar( "bar"), args.get(0)); - assertEquals( new NodeValueInteger(10), args.get(1)); - } - - @ContractTest - public void testAddHavingObject() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addHaving(Var.alloc("foo")); - - Query query = builder.build(); - assertTrue( query.hasHaving() ); - List<Expr> having = query.getHavingExprs(); - assertEquals( 1, having.size() ); - Expr exp = having.get(0); - assertTrue( exp.isVariable() ); - assertEquals( new ExprVar( "foo"), exp.getExprVar()); - - builder = solutionModifier.addHaving("?having2"); - - query = builder.build(); - assertTrue( query.hasHaving() ); - having = query.getHavingExprs(); - assertEquals( 2, having.size() ); - exp = having.get(0); - assertTrue( exp.isVariable() ); - assertEquals( new ExprVar( "foo"), exp.getExprVar()); - exp = having.get(1); - assertTrue( exp.isVariable() ); - assertEquals( new ExprVar( "having2"), exp.getExprVar()); - } - - @ContractTest - public void testAddHavingExpr() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addHaving(new E_Random()); - - Query query = builder.build(); - assertTrue( query.hasHaving() ); - List<Expr> having = query.getHavingExprs(); - assertEquals( 1, having.size() ); - Expr exp = having.get(0); - assertTrue( exp.isFunction() ); - assertTrue( exp.getFunction() instanceof E_Random ); - - solutionModifier.addHaving("?having2"); - - query = builder.build(); - assertTrue( query.hasHaving() ); - having = query.getHavingExprs(); - assertEquals( 2, having.size() ); - exp = having.get(0); - assertTrue( exp.isFunction() ); - assertTrue( exp.getFunction() instanceof E_Random ); - exp = having.get(1); - assertTrue( exp.isVariable() ); - assertEquals( new ExprVar( "having2"), exp.getExprVar()); - } - - @ContractTest - public void testSetLimit() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.setLimit(500); - - Query query = builder.build(); - assertTrue( query.hasLimit()); - assertEquals( 500L, query.getLimit() ); - - builder = solutionModifier.setLimit(200); - - query = builder.build(); - assertTrue( query.hasLimit()); - assertEquals( 200L, query.getLimit() ); - - builder = solutionModifier.setLimit(0); - query = builder.build(); - assertFalse( "Should not contain LIMIT", query.hasLimit()); - } - - @ContractTest - public void testSetOffset() { - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.setOffset(500); - - Query query = builder.build(); - assertTrue( query.hasOffset()); - assertEquals( 500, query.getOffset()); - - builder = solutionModifier.setOffset(200); - - query = builder.build(); - assertTrue( query.hasOffset()); - assertEquals( 200, query.getOffset()); - - - builder = solutionModifier.setOffset(0); - query = builder.build(); - assertFalse( "Should not contain OFFSET", query.hasOffset()); - } - - @ContractTest - public void testSetVarsGroupBy() { - Var v = Var.alloc("v"); - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy("?v"); - - VarExprList groupBy = builder.build().getGroupBy(); - Assert.assertEquals(1, groupBy.size()); - Assert.assertEquals(Var.alloc("v"), groupBy.getVars().get(0)); - Assert.assertNull(groupBy.getExpr(Var.alloc("v"))); - - builder.setVar(v, Var.alloc("v2")); - groupBy = builder.build().getGroupBy(); - Assert.assertEquals(1, groupBy.size()); - Assert.assertEquals(Var.alloc("v2"), groupBy.getVars().get(0)); - Assert.assertNull(groupBy.getExpr(Var.alloc("v2"))); - builder.setVar(v, Var.alloc("v2")); - - } - - @ContractTest - public void testSetVarsGroupBy_Node_Variable() { - Node v = NodeFactory.createVariable("v"); - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addGroupBy(v); - - VarExprList groupBy = builder.build().getGroupBy(); - Assert.assertEquals(1, groupBy.size()); - Assert.assertEquals(Var.alloc("v"), groupBy.getVars().get(0)); - Assert.assertNull(groupBy.getExpr(Var.alloc("v"))); - - builder.setVar(v, NodeFactory.createVariable("v2")); - groupBy = builder.build().getGroupBy(); - Assert.assertEquals(1, groupBy.size()); - Assert.assertEquals(Var.alloc("v2"), groupBy.getVars().get(0)); - Assert.assertNull(groupBy.getExpr(Var.alloc("v2"))); - - } - - @ContractTest - public void testSetVarsHaving() { - Var v = Var.alloc("v"); - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addHaving("?v"); - - List<Expr> exprs = builder.build().getHavingExprs(); - Assert.assertEquals(1, exprs.size()); - Assert.assertEquals(new ExprVar(Var.alloc(v)), exprs.get(0)); - - builder.setVar(v, Var.alloc("v2")); - exprs = builder.build().getHavingExprs(); - Assert.assertEquals(1, exprs.size()); - Assert.assertEquals(new ExprVar(Var.alloc("v2")), exprs.get(0)); - } - - @ContractTest - public void testSetVarsHaving_Node_Variable() { - Node v = NodeFactory.createVariable("v"); - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addHaving(v); - - List<Expr> exprs = builder.build().getHavingExprs(); - Assert.assertEquals(1, exprs.size()); - Assert.assertEquals(new ExprVar(Var.alloc(v)), exprs.get(0)); - - builder.setVar(v, Var.alloc("v2")); - exprs = builder.build().getHavingExprs(); - Assert.assertEquals(1, exprs.size()); - Assert.assertEquals(new ExprVar(Var.alloc("v2")), exprs.get(0)); - } - - @ContractTest - public void testSetVarsOrderBy() { - Var v = Var.alloc("v"); - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy("?v"); - - List<SortCondition> lst = builder.build().getOrderBy(); - Assert.assertEquals(1, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc(v)), Query.ORDER_DEFAULT), lst.get(0)); - - builder.setVar(v, Var.alloc("v2")); - lst = builder.build().getOrderBy(); - Assert.assertEquals(1, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("v2")), Query.ORDER_DEFAULT), lst.get(0)); - - } - - @ContractTest - public void testSetVarsOrderBy_NodeVariable() { - Node v = NodeFactory.createVariable("v"); - SolutionModifierClause<?> solutionModifier = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = solutionModifier.addOrderBy(v); - - List<SortCondition> lst = builder.build().getOrderBy(); - Assert.assertEquals(1, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc(v)), Query.ORDER_DEFAULT), lst.get(0)); - - builder.setVar(v, Var.alloc("v2")); - lst = builder.build().getOrderBy(); - Assert.assertEquals(1, lst.size()); - Assert.assertEquals(new SortCondition(new ExprVar(Var.alloc("v2")), Query.ORDER_DEFAULT), lst.get(0)); - } -} diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/ValuesClauseTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/ValuesClauseTest.java deleted file mode 100644 index 1b52c20bbc..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/ValuesClauseTest.java +++ /dev/null @@ -1,430 +0,0 @@ -/* - * 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.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.util.Arrays; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; -import org.apache.jena.graph.Node; -import org.apache.jena.graph.NodeFactory; -import org.apache.jena.graph.Triple; -import org.apache.jena.query.Query; -import org.apache.jena.query.QueryBuildException; -import org.apache.jena.sparql.core.Var; -import org.apache.jena.sparql.engine.binding.Binding; -import org.junit.After; -import org.junit.Before; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractTest; -import org.xenei.junit.contract.IProducer; - -@Contract(ValuesClause.class) -public class ValuesClauseTest<T extends ValuesClause<?>> extends AbstractClauseTest { - - // the producer we will user - private IProducer<T> producer; - - private T valuesClause; - - @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; - } - - @Before - public final void setupValuesClauseTest() { - valuesClause = producer.newInstance(); - } - - @After - public final void cleanupValuesClauseTest() { - getProducer().cleanUp(); // clean up the producer for the next run - } - - @ContractTest - public void testSetOneVar() { - - AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", "foo"); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 1, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 1, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - } - - @ContractTest - public void testSetOneVarTwoValues() { - - AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", "foo", "bar"); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 1, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 2, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("x")); - } - - @ContractTest - public void testSetTwoVarTwoValues() { - - AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", "foo", "fu"); - builder.addValueVar("?y", "bar", "bear"); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 2, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bear"), binding.get("y")); - } - - @ContractTest - public void testSetTwoVarTwoValuesWithNull() { - - AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", "foo", "fu"); - builder.addValueVar("?y", "bar", null); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 2, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar" ), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu" ), binding.get("x")); - assertNull( binding.get("y")); - } - - @ContractTest - public void testSetTwoVarTwoValuesAddRowWithNull() { - - AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", "foo", "fu"); - builder.addValueVar("?y", "bar", null); - builder.addValueRow(null, "pub"); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 3, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertNull( binding.get("y")); - binding = bindings.get(2); - assertNull( binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "pub"), binding.get("y")); - } - - @ContractTest - public void testSetTwoVarMismatchedValues() { - - AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", "foo", "fu"); - builder.addValueVar("?y", "bar"); - - try { - builder.buildString(); - fail("Should have thrown QueryBuildException"); - } catch (QueryBuildException expected) { - // do nothing - } - - builder.addValueVar("?y", "bear"); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 2, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bear"), binding.get("y")); - } - - @ContractTest - public void testAddingCollection() { - Collection<?> xCol = Arrays.asList("?x", "foo", "fu"); - Collection<?> yCol = Arrays.asList("?y", "bar", null); - AbstractQueryBuilder<?> builder = valuesClause.addValueVar(xCol).addValueVar(yCol); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 2, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertNull( binding.get("y")); - } - - @ContractTest - public void testAddingLists() { - AbstractQueryBuilder<?> builder = valuesClause.addValueVar("?x", "foo", "fu").addValueVar(Var.alloc("y"), "bar", - null); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 2, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertNull( binding.get("y")); - } - - @ContractTest - public void testAddingObject() { - Object o = "?x"; - AbstractQueryBuilder<?> builder = valuesClause.addValueVar(o); - builder.addValueVar("?y"); - builder.addValueRow("foo", "bar"); - builder.addValueRow("fu", null); - Triple expected = Triple.create(NodeFactory.createURI("a"), - NodeFactory.createURI("b"), NodeFactory.createURI("c")); - Node tripleNode = NodeFactory.createTripleTerm(expected); - builder.addValueRow(tripleNode, null); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 3, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertNull( binding.get("y")); - binding = bindings.get(2); - assertEquals( tripleNode, binding.get("x")); - assertNull( binding.get("y")); - } - - @ContractTest - public void testAddingMatrix() { - Map<Object, Collection<Object>> map = new LinkedHashMap<Object, Collection<Object>>(); - - map.put("?x", Arrays.asList("foo", NodeFactory.createLiteralString("fu"))); - map.put(Var.alloc("y"), Arrays.asList("bar", null)); - AbstractQueryBuilder<?> builder = valuesClause.addValueVars(map); - - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 2, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertNull( binding.get("y")); - } - - @ContractTest - public void testAppendingMatrix() { - Map<Object, Collection<Object>> map = new LinkedHashMap<Object, Collection<Object>>(); - - map.put("?x", Arrays.asList("foo", NodeFactory.createLiteralString("fu"))); - map.put(Var.alloc("y"), Arrays.asList("bar", null)); - AbstractQueryBuilder<?> builder = valuesClause.addValueVars(map); - - Map<Var, Collection<Node>> map2 = new LinkedHashMap<Var, Collection<Node>>(); - map2.put(Var.alloc("y"), Arrays.asList(NodeFactory.createLiteralString("baz"), Var.alloc("z"))); - map2.put(Var.alloc("z"), Arrays.asList(NodeFactory.createLiteralString("dog"), NodeFactory.createLiteralString("cat"))); - - builder.addValueVars(map2); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 3, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - assertEquals( "z", vars.get(2).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 4, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - assertNull( binding.get("z")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertNull( binding.get("y")); - assertNull( binding.get("z")); - - binding = bindings.get(2); - assertNull( binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "baz"), binding.get("y")); - assertEquals( NodeFactory.createLiteralString( "dog"), binding.get("z")); - - binding = bindings.get(3); - assertNull( binding.get("x")); - assertEquals( Var.alloc( "z"), binding.get("y")); - assertEquals( NodeFactory.createLiteralString( "cat"), binding.get("z")); - } - - @ContractTest - public void testAddValeuRowObjects() { - Object o = "?x"; - AbstractQueryBuilder<?> builder = valuesClause.addValueVar(o); - builder.addValueVar("?y"); - builder.addValueRow("foo", "bar"); - builder.addValueRow("fu", null); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 2, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertNull( binding.get("y")); - } - - @ContractTest - public void testAddValeuRowCollections() { - Object o = "?x"; - AbstractQueryBuilder<?> builder = valuesClause.addValueVar(o); - builder.addValueVar("?y"); - builder.addValueRow(Arrays.asList("foo", "bar")); - builder.addValueRow(Arrays.asList("fu", null)); - - Query query = builder.build(); - assertTrue( query.hasValues() ); - List<Var> vars = query.getValuesVariables(); - assertEquals( 2, vars.size() ); - assertEquals( "x", vars.get(0).getVarName()); - assertEquals( "y", vars.get(1).getVarName()); - List<Binding> bindings = query.getValuesData(); - assertEquals( 2, bindings.size() ); - Binding binding = bindings.get(0); - assertEquals( NodeFactory.createLiteralString( "foo"), binding.get("x")); - assertEquals( NodeFactory.createLiteralString( "bar"), binding.get("y")); - binding = bindings.get(1); - assertEquals( NodeFactory.createLiteralString( "fu"), binding.get("x")); - assertNull( binding.get("y")); - } - - @ContractTest - public void testDataQuery() { - // test that the getVars getMap and clear methods work. - Object o = "?x"; - AbstractQueryBuilder<?> builder = valuesClause.addValueVar(o).addValueVar("?y").addValueRow("foo", "bar") - .addValueRow("fu", null); - - assertFalse(builder.getValuesVars().isEmpty()); - List<Var> lst = builder.getValuesVars(); - assertEquals(2, lst.size()); - assertEquals(Var.alloc("x"), lst.get(0)); - assertEquals(Var.alloc("y"), lst.get(1)); - - Map<Var, List<Node>> map = builder.getValuesMap(); - assertEquals(2, map.keySet().size()); - List<Node> nodes = map.get(Var.alloc("x")); - assertEquals(2, nodes.size()); - assertEquals(NodeFactory.createLiteralString("foo"), nodes.get(0)); - assertEquals(NodeFactory.createLiteralString("fu"), nodes.get(1)); - - nodes = map.get(Var.alloc("y")); - assertEquals(2, nodes.size()); - assertEquals(NodeFactory.createLiteralString("bar"), nodes.get(0)); - assertNull(nodes.get(1)); - - builder.clearValues(); - - assertTrue(builder.getValuesVars().isEmpty()); - assertTrue(builder.getValuesMap().isEmpty()); - } - -} 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 deleted file mode 100644 index 3aaa5e25aa..0000000000 --- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java +++ /dev/null @@ -1,1381 +0,0 @@ -/* - * 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.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -import java.util.*; - -import org.apache.jena.arq.TestAbstractQueryBuilder; -import org.apache.jena.arq.querybuilder.AbstractQueryBuilder; -import org.apache.jena.arq.querybuilder.SelectBuilder; -import org.apache.jena.arq.querybuilder.WhereBuilder; -import org.apache.jena.arq.querybuilder.WhereValidator; -import org.apache.jena.graph.FrontsTriple; -import org.apache.jena.graph.Node; -import org.apache.jena.graph.NodeFactory; -import org.apache.jena.graph.Triple; -import org.apache.jena.query.Query; -import org.apache.jena.shared.PrefixMapping; -import org.apache.jena.shared.impl.PrefixMappingImpl; -import org.apache.jena.sparql.core.TriplePath; -import org.apache.jena.sparql.core.Var; -import org.apache.jena.sparql.engine.binding.Binding; -import org.apache.jena.sparql.engine.binding.BindingFactory; -import org.apache.jena.sparql.expr.E_LessThan; -import org.apache.jena.sparql.expr.E_Random; -import org.apache.jena.sparql.expr.Expr; -import org.apache.jena.sparql.expr.ExprVar; -import org.apache.jena.sparql.expr.nodevalue.NodeValueInteger; -import org.apache.jena.sparql.path.P_Link; -import org.apache.jena.sparql.path.P_Seq; -import org.apache.jena.sparql.path.Path; -import org.apache.jena.sparql.path.PathParser; -import org.apache.jena.sparql.syntax.*; -import org.apache.jena.vocabulary.RDF; -import org.junit.After; -import org.xenei.junit.contract.Contract; -import org.xenei.junit.contract.ContractTest; -import org.xenei.junit.contract.IProducer; - -@Contract(WhereClause.class) -public class WhereClauseTest<T extends WhereClause<?>> extends AbstractClauseTest { - - // the producer we will use - 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 cleanupWhereClauseTest() { - getProducer().cleanUp(); // clean up the producer for the next run - } - - @ContractTest - public void testAddWhere3Objects() { - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhere("<one>", "<two>", "three"); - - ElementPathBlock epb = new ElementPathBlock(); - Triple t = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), - NodeFactory.createLiteralString("three")); - epb.addTriple(t); - - WhereValidator visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - - @ContractTest - public void testAddWhereAbstractQueryBuilder() { - WhereClause<?> whereClause = getProducer().newInstance(); - TriplePath tp = new TriplePath(Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three"))); - - TestAbstractQueryBuilder abstractQueryBuilder = new TestAbstractQueryBuilder(); - abstractQueryBuilder.getHandlerBlock().getWhereHandler().addWhere(tp); - AbstractQueryBuilder<?> builder = whereClause.addWhere(abstractQueryBuilder); - - ElementPathBlock epb = new ElementPathBlock(); - epb.addTriplePath(tp); - WhereValidator visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereTriplePath() { - WhereClause<?> whereClause = getProducer().newInstance(); - PrefixMapping pmap = new PrefixMappingImpl(); - pmap.setNsPrefix("ts", "urn:test:"); - Path path = PathParser.parse("ts:two/ts:dos", pmap); - TriplePath first = new TriplePath(NodeFactory.createURI("one"), path, NodeFactory.createURI("three")); - - AbstractQueryBuilder<?> builder = whereClause - .addWhere(first); - - ElementPathBlock epb = new ElementPathBlock(); - epb.addTriplePath(first); - - WhereValidator visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - - @ContractTest - public void testAddWhereTriple() { - WhereClause<?> whereClause = getProducer().newInstance(); - Triple triple = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three")); - - AbstractQueryBuilder<?> builder = whereClause - .addWhere(triple); - - ElementPathBlock epb = new ElementPathBlock(); - epb.addTriple(triple); - - WhereValidator visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereFrontsTriple() { - WhereClause<?> whereClause = getProducer().newInstance(); - Triple triple = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three")); - FrontsTriple front = new FrontsTriple() { - - @Override - public Triple asTriple() { - return triple; - }}; - - AbstractQueryBuilder<?> builder = whereClause - .addWhere(front); - - ElementPathBlock epb = new ElementPathBlock(); - epb.addTriple(triple); - - WhereValidator visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereTriplePathCollection() { - WhereClause<?> whereClause = getProducer().newInstance(); - PrefixMapping pmap = new PrefixMappingImpl(); - pmap.setNsPrefix("ts", "urn:test:"); - Path path = PathParser.parse("ts:two/ts:dos", pmap); - TriplePath first = new TriplePath(NodeFactory.createURI("one"), path, NodeFactory.createURI("three")); - TriplePath second = new TriplePath(NodeFactory.createURI("for"), path, NodeFactory.createURI("six")); - - AbstractQueryBuilder<?> builder = whereClause - .addWhere(List.of(first, second)); - - ElementPathBlock epb = new ElementPathBlock(); - epb.addTriplePath(first); - epb.addTriplePath(second); - - WhereValidator visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereWhereClause() { - WhereBuilder whereBuilder = new WhereBuilder().addWhere(new TriplePath(Triple.create(NodeFactory.createURI("one"), - NodeFactory.createURI("two"), NodeFactory.createURI("three")))); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhere(whereBuilder); - - ElementPathBlock epb = new ElementPathBlock(); - Triple t = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), - NodeFactory.createURI("three")); - epb.addTriple(t); - - WhereValidator visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddOptionalString() { - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addOptional("<one>", "<two>", "three"); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - Triple t = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), - NodeFactory.createLiteralString("three")); - epb.addTriple(t); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testAddOptionalStringWithPath() { - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addOptional("<one>", "<two>/<dos>", "three"); - - Path path = new P_Seq(new P_Link(NodeFactory.createURI("two")), new P_Link(NodeFactory.createURI("dos"))); - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - TriplePath tp = new TriplePath(NodeFactory.createURI("one"), path, NodeFactory.createLiteralString("three")); - epb.addTriplePath(tp); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddOptionalObjects() { - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addOptional(NodeFactory.createURI("one"), - NodeFactory.createURI("two"), NodeFactory.createURI("three")); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - Triple t = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), - NodeFactory.createURI("three")); - epb.addTriple(t); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddOptionalTriple() { - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addOptional(NodeFactory.createURI("one"), - NodeFactory.createURI("two"), NodeFactory.createURI("three")); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - Triple t = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), - NodeFactory.createURI("three")); - epb.addTriple(t); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddOptionalTriplePath() { - WhereClause<?> whereClause = getProducer().newInstance(); - PrefixMapping pmap = new PrefixMappingImpl(); - pmap.setNsPrefix("ts", "urn:test:"); - Path path = PathParser.parse("ts:two/ts:dos", pmap); - AbstractQueryBuilder<?> builder = whereClause - .addOptional(new TriplePath(NodeFactory.createURI("one"), path, NodeFactory.createURI("three"))); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - TriplePath tp = new TriplePath(NodeFactory.createURI("one"), path, NodeFactory.createURI("three")); - epb.addTriplePath(tp); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddOptionalTriplePathCollection() { - WhereClause<?> whereClause = getProducer().newInstance(); - PrefixMapping pmap = new PrefixMappingImpl(); - pmap.setNsPrefix("ts", "urn:test:"); - Path path = PathParser.parse("ts:two/ts:dos", pmap); - TriplePath first = new TriplePath(NodeFactory.createURI("one"), path, NodeFactory.createURI("three")); - TriplePath second = new TriplePath(NodeFactory.createURI("for"), path, NodeFactory.createURI("six")); - - AbstractQueryBuilder<?> builder = whereClause - .addOptional(List.of(first, second)); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - epb.addTriplePath(first); - epb.addTriplePath(second); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddOptionalObjectsWithPath() { - WhereClause<?> whereClause = getProducer().newInstance(); - PrefixMapping pmap = new PrefixMappingImpl(); - pmap.setNsPrefix("ts", "urn:test:"); - Path path = PathParser.parse("ts:two/ts:dos", pmap); - AbstractQueryBuilder<?> builder = whereClause.addOptional(NodeFactory.createURI("one"), path, - NodeFactory.createURI("three")); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - TriplePath tp = new TriplePath(NodeFactory.createURI("one"), path, NodeFactory.createURI("three")); - epb.addTriplePath(tp); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testAddOptionalGroupPattern() { - - Var s = Var.alloc("s"); - Node q = NodeFactory.createURI("urn:q"); - Node v = NodeFactory.createURI("urn:v"); - Var x = Var.alloc("x"); - Node n123 = NodeFactory.createLiteralByValue(123); - - SelectBuilder pattern = new SelectBuilder(); - pattern.addWhere(Triple.create(s, q, n123)); - pattern.addWhere(Triple.create(s, v, x)); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addOptional(pattern); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - TriplePath tp = new TriplePath(Triple.create(s, q, n123)); - epb.addTriplePath(tp); - tp = new TriplePath(Triple.create(s, v, x)); - epb.addTriplePath(tp); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testAddOptionalGroupPattern_VariableNode() { - - Node s = NodeFactory.createVariable("s"); - Node q = NodeFactory.createURI("urn:q"); - Node v = NodeFactory.createURI("urn:v"); - Var x = Var.alloc("x"); - Node n123 = NodeFactory.createLiteralByValue(123); - - SelectBuilder pattern = new SelectBuilder(); - pattern.addWhere(Triple.create(s, q, n123)); - pattern.addWhere(Triple.create(s, v, x)); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addOptional(pattern); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - TriplePath tp = new TriplePath(Triple.create(Var.alloc(s), q, n123)); - epb.addTriplePath(tp); - tp = new TriplePath(Triple.create(Var.alloc(s), v, x)); - epb.addTriplePath(tp); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testAddFilter() { - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addFilter("?one<10"); - - E_LessThan lt = new E_LessThan(new ExprVar(Var.alloc("one")), new NodeValueInteger(10)); - ElementFilter ef = new ElementFilter(lt); - - WhereValidator visitor = new WhereValidator(ef); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testAddSubQuery() { - 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); - Query query = builder.build(); - - Query q2 = new Query(); - q2.setQuerySelectType(); - q2.addProjectVars(Arrays.asList(Var.alloc("x"))); - ElementPathBlock epb = new ElementPathBlock(); - q2.setQueryPattern(epb); - epb.addTriplePath(new TriplePath(Triple.create(NodeFactory.createURI("urn:uri:one"), - NodeFactory.createURI("urn:uri:two"), NodeFactory.createURI("urn:uri:three")))); - ElementSubQuery esq = new ElementSubQuery(q2); - - WhereValidator visitor = new WhereValidator(esq); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @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(new TriplePath(Triple.ANY)); - AbstractQueryBuilder<?> builder = whereClause.addUnion(sb); - - ElementUnion union = new ElementUnion(); - ElementPathBlock epb = new ElementPathBlock(); - union.addElement(epb); - epb.addTriple(Triple.ANY); - - Query subQuery = new Query(); - ElementSubQuery esq = new ElementSubQuery(subQuery); - union.addElement(esq); - epb = new ElementPathBlock(); - subQuery.setQuerySelectType(); - subQuery.addProjectVars(Arrays.asList("x")); - subQuery.setQueryPattern(epb); - Triple t = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), - NodeFactory.createLiteralString("three")); - epb.addTriple(t); - - WhereValidator visitor = new WhereValidator(union); - Query result = builder.build(); - result.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - assertEquals("uri", result.getPrefixMapping().getNsPrefixURI("pfx")); - } - - @ContractTest - public void testSetVarsInTriple() { - Var v = Var.alloc("v"); - Node one = NodeFactory.createURI("one"); - Node two = NodeFactory.createURI("two"); - Node three = NodeFactory.createURI("three"); - Node four = NodeFactory.createURI("four"); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhere(Triple.create(one, two, v)); - - TriplePath tp = new TriplePath(Triple.create(one, two, v)); - ElementPathBlock epb = new ElementPathBlock(); - epb.addTriple(tp); - WhereValidator visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, three); - - tp = new TriplePath(Triple.create(one, two, three)); - epb = new ElementPathBlock(); - epb.addTriple(tp); - visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, four); - - tp = new TriplePath(Triple.create(one, two, four)); - epb = new ElementPathBlock(); - epb.addTriple(tp); - visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, null); - - tp = new TriplePath(Triple.create(one, two, v)); - epb = new ElementPathBlock(); - epb.addTriple(tp); - visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testSetVarsInTriple_Node_Variable() { - Node v = NodeFactory.createVariable("v"); - Node one = NodeFactory.createURI("one"); - Node two = NodeFactory.createURI("two"); - Node three = NodeFactory.createURI("three"); - Node four = NodeFactory.createURI("four"); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhere(Triple.create(one, two, v)); - - TriplePath tp = new TriplePath(Triple.create(one, two, Var.alloc(v))); - ElementPathBlock epb = new ElementPathBlock(); - epb.addTriple(tp); - WhereValidator visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, three); - - tp = new TriplePath(Triple.create(one, two, three)); - epb = new ElementPathBlock(); - epb.addTriple(tp); - visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, four); - - tp = new TriplePath(Triple.create(one, two, four)); - epb = new ElementPathBlock(); - epb.addTriple(tp); - visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, null); - - tp = new TriplePath(Triple.create(one, two, Var.alloc("v"))); - epb = new ElementPathBlock(); - epb.addTriple(tp); - visitor = new WhereValidator(epb); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testSetVarsInFilter() { - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addFilter("?one < ?v"); - - ExprVar one = new ExprVar(NodeFactory.createVariable("one")); - ExprVar v = new ExprVar(NodeFactory.createVariable("v")); - Expr expr = new E_LessThan(one, v); - ElementFilter filter = new ElementFilter(expr); - - WhereValidator visitor = new WhereValidator(filter); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - Node literal = NodeFactory.createLiteralByValue(10); - builder.setVar(Var.alloc("v"), literal); - - NodeValueInteger lit = new NodeValueInteger(10); - expr = new E_LessThan(one, lit); - filter = new ElementFilter(expr); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testSetVarsInOptional() { - Var v = Var.alloc("v"); - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause - .addOptional(Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), v)); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - TriplePath tp = new TriplePath(NodeFactory.createURI("one"), new P_Link(NodeFactory.createURI("two")), v); - epb.addTriple(tp); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, NodeFactory.createURI("three")); - - epb = new ElementPathBlock(); - optional = new ElementOptional(epb); - Triple t = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), - NodeFactory.createURI("three")); - epb.addTriple(t); - - visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testSetVarsInOptional_Node_Variable() { - Node v = NodeFactory.createVariable("v"); - Node one = NodeFactory.createURI("one"); - Node two = NodeFactory.createURI("two"); - Node three = NodeFactory.createURI("three"); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addOptional(Triple.create(one, two, v)); - - ElementPathBlock epb = new ElementPathBlock(); - ElementOptional optional = new ElementOptional(epb); - TriplePath tp = new TriplePath(Triple.create(one, two, Var.alloc(v))); - epb.addTriplePath(tp); - - WhereValidator visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, three); - epb = new ElementPathBlock(); - optional = new ElementOptional(epb); - tp = new TriplePath(Triple.create(one, two, three)); - epb.addTriplePath(tp); - - visitor = new WhereValidator(optional); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @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); - - Query subQuery = new Query(); - subQuery.setQuerySelectType(); - subQuery.setQueryResultStar(true); - ElementSubQuery esq = new ElementSubQuery(subQuery); - ElementPathBlock epb = new ElementPathBlock(); - subQuery.setQueryPattern(epb); - Triple t = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), - NodeFactory.createVariable("v")); - epb.addTriple(t); - - WhereValidator visitor = new WhereValidator(esq); - Query result = builder.build(); - result.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, NodeFactory.createURI("three")); - - subQuery = new Query(); - subQuery.setQuerySelectType(); - subQuery.setQueryResultStar(true); - esq = new ElementSubQuery(subQuery); - epb = new ElementPathBlock(); - subQuery.setQueryPattern(epb); - t = Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three")); - epb.addTriple(t); - - visitor = new WhereValidator(esq); - result = builder.build(); - result.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testSetVarsInSubQuery_Node_Variable() { - Node v = NodeFactory.createVariable("v"); - SelectBuilder sb = new SelectBuilder(); - sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", v); - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addSubQuery(sb); - - Query subQuery = new Query(); - subQuery.setQuerySelectType(); - subQuery.setQueryResultStar(true); - ElementSubQuery esq = new ElementSubQuery(subQuery); - ElementPathBlock epb = new ElementPathBlock(); - subQuery.setQueryPattern(epb); - TriplePath tp = new TriplePath(NodeFactory.createURI("one"), new P_Link(NodeFactory.createURI("two")), - NodeFactory.createVariable("v")); - epb.addTriple(tp); - - WhereValidator visitor = new WhereValidator(esq); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, NodeFactory.createURI("three")); - - subQuery = new Query(); - subQuery.setQuerySelectType(); - subQuery.setQueryResultStar(true); - esq = new ElementSubQuery(subQuery); - epb = new ElementPathBlock(); - subQuery.setQueryPattern(epb); - tp = new TriplePath(NodeFactory.createURI("one"), new P_Link(NodeFactory.createURI("two")), - NodeFactory.createURI("three")); - epb.addTriple(tp); - - visitor = new WhereValidator(esq); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testSetVarsInUnion() { - Var v = Var.alloc("v"); - SelectBuilder sb1 = new SelectBuilder().addPrefix("pfx", "uri").addWhere("<one>", "<two>", v); - WhereClause<?> whereClause = getProducer().newInstance(); - whereClause.addUnion(sb1); - SelectBuilder sb2 = new SelectBuilder().addWhere("<uno>", "<dos>", "<tres>"); - AbstractQueryBuilder<?> builder = whereClause.addUnion(sb2); - Query query = builder.build(); - - Node one = NodeFactory.createURI("one"); - Node two = NodeFactory.createURI("two"); - Node three = NodeFactory.createURI("three"); - Node uno = NodeFactory.createURI("uno"); - Node dos = NodeFactory.createURI("dos"); - Node tres = NodeFactory.createURI("tres"); - - ElementUnion union = new ElementUnion(); - ElementPathBlock epb = new ElementPathBlock(); - Triple t = Triple.create(one, two, v); - epb.addTriple(t); - union.addElement(epb); - ElementPathBlock epb2 = new ElementPathBlock(); - t = Triple.create(uno, dos, tres); - epb2.addTriple(t); - union.addElement(epb2); - WhereValidator visitor = new WhereValidator(union); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, NodeFactory.createURI("three")); - query = builder.build(); - - union = new ElementUnion(); - epb = new ElementPathBlock(); - t = Triple.create(one, two, three); - epb.addTriple(t); - union.addElement(epb); - epb2 = new ElementPathBlock(); - t = Triple.create(uno, dos, tres); - epb2.addTriple(t); - union.addElement(epb2); - visitor = new WhereValidator(union); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testSetVarsInUnion_Node_Variable() { - Node v = NodeFactory.createVariable("v"); - SelectBuilder sb1 = new SelectBuilder().addPrefix("pfx", "uri").addWhere("<one>", "<two>", v); - WhereClause<?> whereClause = getProducer().newInstance(); - whereClause.addUnion(sb1); - SelectBuilder sb2 = new SelectBuilder().addWhere("<uno>", "<dos>", "<tres>"); - AbstractQueryBuilder<?> builder = whereClause.addUnion(sb2); - Query query = builder.build(); - - Node one = NodeFactory.createURI("one"); - Node two = NodeFactory.createURI("two"); - Node three = NodeFactory.createURI("three"); - Node uno = NodeFactory.createURI("uno"); - Node dos = NodeFactory.createURI("dos"); - Node tres = NodeFactory.createURI("tres"); - - ElementUnion union = new ElementUnion(); - ElementPathBlock epb = new ElementPathBlock(); - Triple t = Triple.create(one, two, Var.alloc(v)); - epb.addTriple(t); - union.addElement(epb); - ElementPathBlock epb2 = new ElementPathBlock(); - t = Triple.create(uno, dos, tres); - epb2.addTriple(t); - union.addElement(epb2); - WhereValidator visitor = new WhereValidator(union); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, NodeFactory.createURI("three")); - query = builder.build(); - - union = new ElementUnion(); - epb = new ElementPathBlock(); - t = Triple.create(one, two, three); - epb.addTriple(t); - union.addElement(epb); - epb2 = new ElementPathBlock(); - t = Triple.create(uno, dos, tres); - epb2.addTriple(t); - union.addElement(epb2); - visitor = new WhereValidator(union); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testBindStringVar() { - Var v = Var.alloc("foo"); - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addBind("rand()", v); - Query query = builder.build(); - - ElementBind bind = new ElementBind(v, new E_Random()); - WhereValidator visitor = new WhereValidator(bind); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - Node three = NodeFactory.createURI("three"); - builder.setVar(v, three); - query = builder.build(); - - visitor = new WhereValidator(new ElementTriplesBlock()); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testBindStringVar_Node_Variable() { - Node v = NodeFactory.createVariable("foo"); - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addBind("rand()", v); - Query query = builder.build(); - - ElementBind bind = new ElementBind(Var.alloc(v), new E_Random()); - WhereValidator visitor = new WhereValidator(bind); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - Node three = NodeFactory.createURI("three"); - builder.setVar(v, three); - query = builder.build(); - - visitor = new WhereValidator(new ElementTriplesBlock()); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testBindExprVar() { - Var v = Var.alloc("foo"); - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addBind(new E_Random(), v); - Query query = builder.build(); - - WhereValidator visitor = new WhereValidator(new ElementBind(Var.alloc("foo"), new E_Random())); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, NodeFactory.createURI("three")); - query = builder.build(); - - visitor = new WhereValidator(new ElementTriplesBlock()); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testBindExprVar_Node_Variable() { - Node v = NodeFactory.createVariable("foo"); - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addBind(new E_Random(), v); - Query query = builder.build(); - - WhereValidator visitor = new WhereValidator(new ElementBind(Var.alloc("foo"), new E_Random())); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - builder.setVar(v, NodeFactory.createURI("three")); - query = builder.build(); - - visitor = new WhereValidator(new ElementTriplesBlock()); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @SuppressWarnings("deprecation") - @ContractTest - public void testList() { - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhere(whereClause.list("<one>", "?two", "'three'"), "<foo>", - "<bar>"); - - Query query = builder.build(); - - Node one = NodeFactory.createURI("one"); - Var two = Var.alloc("two"); - Node three = NodeFactory.createLiteralString("three"); - Node foo = NodeFactory.createURI("foo"); - Node bar = NodeFactory.createURI("bar"); - - ElementPathBlock epb = new ElementPathBlock(); - Node firstObject = NodeFactory.createBlankNode(); - Node secondObject = NodeFactory.createBlankNode(); - Node thirdObject = NodeFactory.createBlankNode(); - - epb.addTriplePath(new TriplePath(Triple.create(firstObject, RDF.first.asNode(), one))); - epb.addTriplePath(new TriplePath(Triple.create(firstObject, RDF.rest.asNode(), secondObject))); - epb.addTriplePath(new TriplePath(Triple.create(secondObject, RDF.first.asNode(), two))); - epb.addTriplePath(new TriplePath(Triple.create(secondObject, RDF.rest.asNode(), thirdObject))); - epb.addTriplePath(new TriplePath(Triple.create(thirdObject, RDF.first.asNode(), three))); - epb.addTriplePath(new TriplePath(Triple.create(thirdObject, RDF.rest.asNode(), RDF.nil.asNode()))); - epb.addTriplePath(new TriplePath(Triple.create(firstObject, foo, bar))); - - WhereValidator visitor = new WhereValidator(epb); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - - } - - @ContractTest - public void testAddMinus() { - SelectBuilder sb = new SelectBuilder(); - sb.addPrefix("pfx", "uri").addVar("?x").addWhere("<one>", "<two>", "three"); - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addMinus(sb); - - Query query = builder.build(); - - ElementPathBlock epb = new ElementPathBlock(); - ElementMinus minus = new ElementMinus(epb); - epb.addTriplePath(new TriplePath(Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), - NodeFactory.createLiteralString("three")))); - WhereValidator visitor = new WhereValidator(minus); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddGraphAbstractQueryBuilder() { - WhereClause<?> whereClause = getProducer().newInstance(); - TriplePath tp = new TriplePath(Triple.create(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three"))); - - TestAbstractQueryBuilder abstractQueryBuilder = new TestAbstractQueryBuilder(); - abstractQueryBuilder.getHandlerBlock().getWhereHandler().addWhere(tp); - AbstractQueryBuilder<?> builder = whereClause.addGraph( "<g>", abstractQueryBuilder); - - ElementPathBlock epb = new ElementPathBlock(); - ElementNamedGraph eng = new ElementNamedGraph(NodeFactory.createURI("g"), epb); - - epb.addTriplePath(tp); - WhereValidator visitor = new WhereValidator(eng); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddGraphFrontsTriple() { - final Node s = NodeFactory.createURI("s"); - final Node p = NodeFactory.createURI("p"); - final Node o = NodeFactory.createURI("o"); - - FrontsTriple ft = new FrontsTriple() { - - @Override - public Triple asTriple() { - return Triple.create(s, p, o); - } - }; - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addGraph("<g>", ft); - Query query = builder.build(); - - ElementPathBlock epb = new ElementPathBlock(); - ElementNamedGraph eng = new ElementNamedGraph(NodeFactory.createURI("g"), epb); - epb.addTriplePath(new TriplePath(Triple.create(s, p, o))); - - WhereValidator visitor = new WhereValidator(eng); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - public void addGraph_GSPO() { - final Node s = NodeFactory.createURI("s"); - final Node p = NodeFactory.createURI("p"); - final Node o = NodeFactory.createURI("o"); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addGraph("<g>", s, p, o); - Query query = builder.build(); - - ElementPathBlock epb = new ElementPathBlock(); - ElementNamedGraph eng = new ElementNamedGraph(NodeFactory.createURI("g"), epb); - epb.addTriplePath(new TriplePath(Triple.create(s, p, o))); - - WhereValidator visitor = new WhereValidator(eng); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddGraphTriple() { - final Node s = NodeFactory.createURI("s"); - final Node p = NodeFactory.createURI("p"); - final Node o = NodeFactory.createURI("o"); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addGraph("<g>", Triple.create(s, p, o)); - Query query = builder.build(); - - ElementPathBlock epb = new ElementPathBlock(); - ElementNamedGraph eng = new ElementNamedGraph(NodeFactory.createURI("g"), epb); - epb.addTriplePath(new TriplePath(Triple.create(s, p, o))); - - WhereValidator visitor = new WhereValidator(eng); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddGraphTriplePath() { - final Node s = NodeFactory.createURI("s"); - final Node p = NodeFactory.createURI("p"); - final Node o = NodeFactory.createURI("o"); - TriplePath tp = new TriplePath(Triple.create(s, p, o)); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addGraph("<g>", tp); - Query query = builder.build(); - - ElementPathBlock epb = new ElementPathBlock(); - ElementNamedGraph eng = new ElementNamedGraph(NodeFactory.createURI("g"), epb); - epb.addTriplePath(new TriplePath(Triple.create(s, p, o))); - - WhereValidator visitor = new WhereValidator(eng); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddGraphTriplePathCollection() { - WhereClause<?> whereClause = getProducer().newInstance(); - PrefixMapping pmap = new PrefixMappingImpl(); - pmap.setNsPrefix("ts", "urn:test:"); - Path path = PathParser.parse("ts:two/ts:dos", pmap); - TriplePath first = new TriplePath(NodeFactory.createURI("one"), path, NodeFactory.createURI("three")); - TriplePath second = new TriplePath(NodeFactory.createURI("for"), path, NodeFactory.createURI("six")); - - AbstractQueryBuilder<?> builder = whereClause - .addGraph("<g>", List.of(first, second)); - - ElementPathBlock epb = new ElementPathBlock(); - ElementNamedGraph eng = new ElementNamedGraph(NodeFactory.createURI("g"), epb); - epb.addTriplePath(first); - epb.addTriplePath(second); - - WhereValidator visitor = new WhereValidator(eng); - builder.build().getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereValueVar_var() { - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueVar("?v"); - - Query query = builder.build(); - - ElementData edat = new ElementData(); - edat.add(Var.alloc("v")); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereValueVar_var_values() { - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueVar("?v", "<one>"); - - Query query = builder.build(); - - final Var v = Var.alloc("v"); - Binding binding = BindingFactory.binding(v, NodeFactory.createURI("one")); - ElementData edat = new ElementData(); - edat.add(v); - edat.add(binding); - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereValueVars() { - final Var v = Var.alloc("v"); - Map<Object, List<?>> map = new LinkedHashMap<Object, List<?>>(); - - // Order matters for the test - map.put(Var.alloc("x"), Arrays.asList("three", "four")); - map.put(Var.alloc("v"), Arrays.asList("<one>", "<two>")); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueVars(map); - - Query query = builder.build(); - - Var x = Var.alloc("x"); - ElementData edat = new ElementData(); - edat.add(x); - edat.add(v); - setupBindings(edat, x, v); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - private static void setupBindings(ElementData edat, Var x, Var v) { - Binding binding1 = BindingFactory.binding(v, NodeFactory.createURI("one"), x, - NodeFactory.createLiteralString("three")); - edat.add(binding1); - Binding binding2 = BindingFactory.binding(v, NodeFactory.createURI("two"), x, - NodeFactory.createLiteralString("four")); - edat.add(binding2); - } - - @ContractTest - public void testAddWhereValueVars_InSubQuery() { - final Var v = Var.alloc("v"); - Map<Object, List<?>> map = new LinkedHashMap<Object, List<?>>(); - - // Order matters for the test - map.put("?x", Arrays.asList("three", "four")); - map.put(Var.alloc("v"), Arrays.asList("<one>", "<two>")); - - WhereClause<?> whereClause = getProducer().newInstance(); - WhereClause<?> whereClause2 = getProducer().newInstance(); - - AbstractQueryBuilder<?> builder = whereClause.addWhereValueVars(map); - builder = whereClause2.addSubQuery(builder); - - Query query = builder.build(); - - Var x = Var.alloc("x"); - ElementData edat = new ElementData(); - edat.add(x); - edat.add(v); - setupBindings(edat, x, v); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereValueVars_Node_Variable() { - - Map<Object, List<?>> map = new LinkedHashMap<Object, List<?>>(); - - // Order matters for the test - map.put("?x", Arrays.asList("three", "four")); - map.put(NodeFactory.createVariable("v"), Arrays.asList("<one>", "<two>")); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueVars(map); - - Query query = builder.build(); - - Var x = Var.alloc("x"); - Var v = Var.alloc("v"); - ElementData edat = new ElementData(); - edat.add(x); - edat.add(v); - setupBindings(edat, x, v); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereValueRow_array() { - final Var v = Var.alloc("v"); - final Var x = Var.alloc("x"); - - WhereClause<?> whereClause = getProducer().newInstance(); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar(v); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar(x); - whereClause = (WhereClause<?>) whereClause.addWhereValueRow("<one>", "three"); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueRow("<two>", "four"); - - Query query = builder.build(); - - ElementData edat = new ElementData(); - edat.add(v); - edat.add(x); - setupBindings(edat, x, v); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereValueRow_array_Node_Variable() { - - WhereClause<?> whereClause = getProducer().newInstance(); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar(NodeFactory.createVariable("v")); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar(NodeFactory.createVariable("x")); - whereClause = (WhereClause<?>) whereClause.addWhereValueRow("<one>", "three"); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueRow("<two>", "four"); - - Query query = builder.build(); - - ElementData edat = new ElementData(); - final Var v = Var.alloc("v"); - final Var x = Var.alloc("x"); - edat.add(v); - edat.add(x); - setupBindings(edat, x, v); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereValueRow_collection() { - final Var v = Var.alloc("v"); - final Var x = Var.alloc("x"); - - WhereClause<?> whereClause = getProducer().newInstance(); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar(v); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar(x); - whereClause = (WhereClause<?>) whereClause.addWhereValueRow(Arrays.asList("<one>", "three")); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueRow(Arrays.asList("<two>", "four")); - - Query query = builder.build(); - - ElementData edat = new ElementData(); - edat.add(v); - edat.add(x); - setupBindings(edat, x, v); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testAddWhereValueRow_collection_Node_Variable() { - WhereClause<?> whereClause = getProducer().newInstance(); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar(NodeFactory.createVariable("v")); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar(NodeFactory.createVariable("x")); - whereClause = (WhereClause<?>) whereClause.addWhereValueRow(Arrays.asList("<one>", "three")); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueRow(Arrays.asList("<two>", "four")); - - Query query = builder.build(); - - ElementData edat = new ElementData(); - final Var v = Var.alloc("v"); - final Var x = Var.alloc("x"); - - edat.add(v); - edat.add(x); - setupBindings(edat, x, v); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testSetVarsInWhereValues() { - Var v = Var.alloc("v"); - Node value = NodeFactory.createLiteralByValue(10); - Map<Var, Node> values = new HashMap<>(); - values.put(v, value); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueVar("?x", "<one>", "?v"); - - builder.setVar(v, value); - - Query query = builder.build(); - - ElementData edat = new ElementData(); - Var x = Var.alloc("x"); - edat.add(x); - - Binding binding1 = BindingFactory.binding(x, NodeFactory.createURI("one")); - edat.add(binding1); - Binding binding2 = BindingFactory.binding(x, value); - edat.add(binding2); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testSetVarsInWhereValues_NodeVariable() { - Node v = NodeFactory.createVariable("v"); - Node value = NodeFactory.createLiteralByValue(10); - - WhereClause<?> whereClause = getProducer().newInstance(); - AbstractQueryBuilder<?> builder = whereClause.addWhereValueVar("?x", "<one>", "?v"); - - builder.setVar(v, value); - - Query query = builder.build(); - - ElementData edat = new ElementData(); - Var x = Var.alloc("x"); - edat.add(x); - - Binding binding1 = BindingFactory.binding(x, NodeFactory.createURI("one")); - edat.add(binding1); - Binding binding2 = BindingFactory.binding(x, value); - edat.add(binding2); - - WhereValidator visitor = new WhereValidator(edat); - query.getQueryPattern().visit(visitor); - assertTrue(visitor.matching); - } - - @ContractTest - public void testDataQuery() { - // test that the getVars getMap and clear methods work. - Object o = "?x"; - - WhereClause<?> whereClause = getProducer().newInstance(); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar(o); - whereClause = (WhereClause<?>) whereClause.addWhereValueVar("?y"); - whereClause = (WhereClause<?>) whereClause.addWhereValueRow("foo", "bar"); - whereClause = (WhereClause<?>) whereClause.addWhereValueRow("fu", null); - - assertFalse(whereClause.getWhereValuesVars().isEmpty()); - List<Var> lst = whereClause.getWhereValuesVars(); - assertEquals(2, lst.size()); - assertEquals(Var.alloc("x"), lst.get(0)); - assertEquals(Var.alloc("y"), lst.get(1)); - - Map<Var, List<Node>> map = whereClause.getWhereValuesMap(); - assertEquals(2, map.keySet().size()); - List<Node> nodes = map.get(Var.alloc("x")); - assertEquals(2, nodes.size()); - assertEquals(NodeFactory.createLiteralString("foo"), nodes.get(0)); - assertEquals(NodeFactory.createLiteralString("fu"), nodes.get(1)); - - nodes = map.get(Var.alloc("y")); - assertEquals(2, nodes.size()); - assertEquals(NodeFactory.createLiteralString("bar"), nodes.get(0)); - assertNull(nodes.get(1)); - - whereClause.clearWhereValues(); - - assertTrue(whereClause.getWhereValuesVars().isEmpty()); - assertTrue(whereClause.getWhereValuesMap().isEmpty()); - - } - -}
