Skip to content

Package: TypedQueryRunner

TypedQueryRunner

nameinstructionbranchcomplexitylinemethod
TypedQueryRunner(Logger)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
askQueryAgainstTransactionalOntologyContainsUncommittedChangesAsWell()
M: 43 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 13 C: 0
0%
M: 1 C: 0
0%
askQueryReturnsFalse()
M: 0 C: 29
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
askQueryReturnsTrue()
M: 0 C: 26
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
askQueryWithPositionParameter()
M: 0 C: 32
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 9
100%
M: 0 C: 1
100%
lambda$0(OWLClassA, OWLClassD)
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lambda$1(List, OWLClassA)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
testCreateQueryNullClass()
M: 7 C: 6
46%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 2
50%
M: 0 C: 1
100%
testCreateQueryNullQuery()
M: 7 C: 4
36%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 1
33%
M: 0 C: 1
100%
testCreateTypedNamedNativeQuery()
M: 0 C: 30
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 7
100%
M: 0 C: 1
100%
testFindAll()
M: 0 C: 87
100%
M: 1 C: 5
83%
M: 1 C: 3
75%
M: 0 C: 21
100%
M: 0 C: 1
100%
testGetSingleResult()
M: 0 C: 41
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 11
100%
M: 0 C: 1
100%
testGetSingleResultMultiples()
M: 4 C: 16
80%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 5
71%
M: 0 C: 1
100%
testGetSingleResultNoResult()
M: 4 C: 12
75%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 4
67%
M: 0 C: 1
100%
testSelectByObjectProperty()
M: 0 C: 60
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testSelectByTypeAndDataPropertyValue()
M: 0 C: 50
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 13
100%
M: 0 C: 1
100%
testSetMaxResults()
M: 1 C: 54
98%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 15
100%
M: 0 C: 1
100%
testSetMaxResultsNegative()
M: 5 C: 16
76%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 5
71%
M: 0 C: 1
100%
testSetMaxResultsZero()
M: 0 C: 29
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (C) 2016 Czech Technical University in Prague
3: * <p>
4: * This program is free software: you can redistribute it and/or modify it under
5: * the terms of the GNU General Public License as published by the Free Software
6: * Foundation, either version 3 of the License, or (at your option) any
7: * later version.
8: * <p>
9: * This program is distributed in the hope that it will be useful, but WITHOUT
10: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12: * details. You should have received a copy of the GNU General Public License
13: * along with this program. If not, see <http://www.gnu.org/licenses/>.
14: */
15: package cz.cvut.kbss.jopa.test.query.runner;
16:
17: import cz.cvut.kbss.jopa.exceptions.NoResultException;
18: import cz.cvut.kbss.jopa.exceptions.NoUniqueResultException;
19: import cz.cvut.kbss.jopa.model.annotations.OWLClass;
20: import cz.cvut.kbss.jopa.model.query.TypedQuery;
21: import cz.cvut.kbss.jopa.test.*;
22: import cz.cvut.kbss.jopa.test.environment.Generators;
23: import cz.cvut.kbss.jopa.test.query.QueryTestEnvironment;
24: import org.junit.Ignore;
25: import org.junit.Test;
26: import org.slf4j.Logger;
27:
28: import java.net.URI;
29: import java.util.ArrayList;
30: import java.util.List;
31: import java.util.stream.Collectors;
32:
33: import static org.junit.Assert.*;
34:
35: public abstract class TypedQueryRunner extends BaseQueryRunner {
36:
37: protected TypedQueryRunner(Logger logger) {
38: super(logger);
39: }
40:
41: @Test
42: public void testFindAll() {
43: logger.debug("Test: select all entities of a certain type.");
44: final String query = "SELECT ?x WHERE { ?x a ?type .}";
45: final List<OWLClassD> ds = new ArrayList<>();
46: final TypedQuery<OWLClassD> q =
47: getEntityManager().createNativeQuery(query, OWLClassD.class).setParameter("type", URI.create(
48: Vocabulary.C_OWL_CLASS_D));
49: ds.addAll(QueryTestEnvironment.getDataByContext(null, OWLClassD.class));
50: final List<OWLClassD> res = q.getResultList();
51: assertNotNull(res);
52: assertFalse(res.isEmpty());
53: assertEquals(ds.size(), res.size());
54: boolean found;
55:• for (OWLClassD d : ds) {
56: found = false;
57:• for (OWLClassD dd : res) {
58:• if (d.getUri().equals(dd.getUri())) {
59: found = true;
60: assertNotNull(dd.getOwlClassA());
61: assertEquals(d.getOwlClassA().getUri(), dd.getOwlClassA().getUri());
62: break;
63: }
64: }
65: assertTrue(found);
66: }
67: }
68:
69: @Test
70: public void testSelectByTypeAndDataPropertyValue() {
71: logger.debug("Test: select entity by its type and data property value.");
72: final OWLClassB b = QueryTestEnvironment.getData(OWLClassB.class).get(5);
73: final String query =
74: "SELECT ?x WHERE { " +
75: "?x a ?type ; " +
76: "?stringAtt ?bString . }";
77: final TypedQuery<OWLClassB> q = getEntityManager().createNativeQuery(query, OWLClassB.class);
78: q.setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_B))
79: .setParameter("stringAtt", URI.create(Vocabulary.P_B_STRING_ATTRIBUTE))
80: .setParameter("bString", b.getStringAttribute(), "en");
81: final OWLClassB res = q.getSingleResult();
82: assertNotNull(res);
83: assertEquals(b.getUri(), res.getUri());
84: assertEquals(b.getStringAttribute(), res.getStringAttribute());
85: }
86:
87: @Test
88: public void testSelectByObjectProperty() {
89: final String query = "SELECT ?x WHERE { ?x a ?type ; ?hasA ?y . }";
90: final List<OWLClassD> ds = new ArrayList<>();
91: ds.addAll(QueryTestEnvironment.getData(OWLClassD.class));
92: final OWLClassA a = ds.get(Generators.randomPositiveInt(2, ds.size())).getOwlClassA();
93: final TypedQuery<OWLClassD> q = getEntityManager().createNativeQuery(query, OWLClassD.class)
94: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_D))
95: .setParameter("hasA",
96: URI.create(Vocabulary.P_HAS_OWL_CLASS_A))
97: .setParameter("y", a.getUri());
98:
99: final List<OWLClassD> expected = ds.stream().filter(d -> d.getOwlClassA().getUri().equals(a.getUri())).collect(
100: Collectors.toList());
101: final List<OWLClassD> res = q.getResultList();
102: assertEquals(res.toString(), expected.size(), res.size());
103: }
104:
105: @Test
106: public void testSetMaxResults() {
107: logger.debug("Test: set maximum number of results.");
108: final String query =
109: "SELECT ?x WHERE { ?x a ?type . }";
110: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class)
111: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_E));
112: final int max = 5;
113:• assertTrue(max < QueryTestEnvironment.getData(OWLClassE.class).size());
114: assertEquals(Integer.MAX_VALUE, q.getMaxResults());
115: q.setMaxResults(max);
116: assertEquals(max, q.getMaxResults());
117: final List<OWLClassE> res = q.getResultList();
118: assertNotNull(res);
119: assertFalse(res.isEmpty());
120: assertEquals(max, res.size());
121: }
122:
123: @Test(expected = IllegalArgumentException.class)
124: public void testSetMaxResultsNegative() {
125: logger.debug("Test: set maximum number of results. Negative argument.");
126: final String query =
127: "SELECT ?x WHERE { ?x a ?type . }";
128: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class)
129: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_E));
130: q.setMaxResults(-1);
131: }
132:
133: @Test
134: public void testSetMaxResultsZero() {
135: logger.debug("Test: set maximum number of results. Zero argument.");
136: final String query =
137: "SELECT ?x WHERE { ?x a ?type. }";
138: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class)
139: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_E));
140: q.setMaxResults(0);
141: final List<OWLClassE> res = q.getResultList();
142: assertNotNull(res);
143: assertTrue(res.isEmpty());
144: }
145:
146: @Test
147: public void testGetSingleResult() {
148: logger.debug("Test: get single result.");
149: final OWLClassA a = QueryTestEnvironment.getData(OWLClassA.class).get(0);
150: final String query =
151: "SELECT ?x WHERE { ?x ?stringAtt ?aString .}";
152: final TypedQuery<OWLClassA> q = getEntityManager().createNativeQuery(query, OWLClassA.class);
153: q.setParameter("stringAtt", URI.create(Vocabulary.P_A_STRING_ATTRIBUTE))
154: .setParameter("aString", a.getStringAttribute(), "en");
155: final OWLClassA res = q.getSingleResult();
156: assertNotNull(res);
157: assertEquals(a.getUri(), res.getUri());
158: }
159:
160: @Test(expected = NoUniqueResultException.class)
161: public void testGetSingleResultMultiples() {
162: logger.debug("Test: get single result. No unique result.");
163: final String query =
164: "SELECT ?x WHERE { ?x a ?type . }";
165: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class)
166: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_E));
167: q.getSingleResult();
168: }
169:
170: @Test(expected = NoResultException.class)
171: public void testGetSingleResultNoResult() {
172: logger.debug("Test: get single result. No result.");
173: final String query =
174: "SELECT ?x WHERE { ?x a <http://krizik.felk.cvut.cz/ontologies/jopa/entities#OWLClassX> . }";
175: final TypedQuery<OWLClassE> q = getEntityManager().createNativeQuery(query, OWLClassE.class);
176: q.getSingleResult();
177: }
178:
179: @Test(expected = NullPointerException.class)
180: public void testCreateQueryNullQuery() {
181: logger.debug("Test: create query. Null query passed.");
182: getEntityManager().createNativeQuery(null, OWLClassA.class);
183: }
184:
185: @Test(expected = NullPointerException.class)
186: public void testCreateQueryNullClass() {
187: logger.debug("Test: create query. Null result class passed.");
188: final String query = "SELECT ?x WHERE { ?x ?y ?z .}";
189: getEntityManager().createNativeQuery(query, (Class<OWLClassA>) null);
190: }
191:
192: @Test
193: public void askQueryReturnsTrue() {
194: logger.debug("Test: execute a ASK query which returns true.");
195: final String query = "ASK { ?x a ?type . }";
196: final TypedQuery<Boolean> q = getEntityManager().createNativeQuery(query, Boolean.class)
197: .setParameter("type", URI.create(Vocabulary.C_OWL_CLASS_A));
198: final Boolean res = q.getSingleResult();
199: assertNotNull(res);
200: assertTrue(res);
201: }
202:
203: @Test
204: public void askQueryReturnsFalse() {
205: logger.debug("Test: execute a ASK query which returns false.");
206: final String query = "ASK { ?x a <http://krizik.felk.cvut.cz/ontologies/jopa/entities#OWLClassX> . }";
207: final TypedQuery<Boolean> q = getEntityManager().createNativeQuery(query, Boolean.class);
208: final List<Boolean> res = q.getResultList();
209: assertNotNull(res);
210: assertEquals(1, res.size());
211: assertFalse(res.get(0));
212: }
213:
214: @Ignore
215: @Test
216: public void askQueryAgainstTransactionalOntologyContainsUncommittedChangesAsWell() throws Exception {
217: logger.debug("Test: execute an ASK query which returns changes yet to be committed in transaction.");
218: final OWLClassE e = new OWLClassE();
219: getEntityManager().getTransaction().begin();
220: try {
221: getEntityManager().persist(e);
222: final TypedQuery<Boolean> query = getEntityManager().createNativeQuery(
223: "ASK { ?individual a ?type . }",
224: Boolean.class).setParameter("individual", e.getUri()).setParameter("type",
225: URI.create(Vocabulary.C_OWL_CLASS_E));
226: final Boolean res = query.getSingleResult();
227: assertTrue(res);
228: } finally {
229: getEntityManager().getTransaction().rollback();
230: }
231: }
232:
233: @Test
234: public void askQueryWithPositionParameter() {
235: logger.debug("Test: execute an ASK query which returns true, query contains positional parameter.");
236: final String query = "ASK { ?x a $1 . }";
237: final URI paramValue = URI.create(OWLClassA.class.getAnnotation(OWLClass.class).iri());
238: final TypedQuery<Boolean> q = getEntityManager().createNativeQuery(query, Boolean.class)
239: .setParameter(1, paramValue);
240: final Boolean res = q.getSingleResult();
241: assertNotNull(res);
242: assertTrue(res);
243: }
244:
245: @Test
246: public void testCreateTypedNamedNativeQuery() {
247: final List<OWLClassA> expected = QueryTestEnvironment.getData(OWLClassA.class);
248: final List<URI> uris = expected.stream().map(OWLClassA::getUri).collect(Collectors.toList());
249: final List<OWLClassA> res = getEntityManager().createNamedQuery("OWLClassA.findAll", OWLClassA.class)
250: .getResultList();
251: assertEquals(expected.size(), res.size());
252: res.forEach(a -> assertTrue(uris.contains(a.getUri())));
253: }
254: }