blob: 829167f970e8647b0ab94fb4aca48d5fbc2d9a38 [file] [log] [blame]
Eliza Margaretha269e5a62014-09-30 16:58:23 +00001package de.ids_mannheim.korap.query;
2
Nils Diewaldf399a672013-11-18 17:55:22 +00003import java.util.*;
4import de.ids_mannheim.korap.query.wrap.SpanSequenceQueryWrapper;
5import de.ids_mannheim.korap.query.SpanWithinQuery;
Akronf19b3182016-04-10 03:44:07 +02006import de.ids_mannheim.korap.query.SpanElementQuery;
Akronff5e1ff2016-11-05 23:52:15 +01007import de.ids_mannheim.korap.query.QueryBuilder;
Nils Diewaldf399a672013-11-18 17:55:22 +00008
Akronff5e1ff2016-11-05 23:52:15 +01009import org.apache.lucene.search.spans.SpanQuery;
Nils Diewaldbe5943e2014-10-21 19:35:34 +000010import de.ids_mannheim.korap.util.QueryException;
11
Nils Diewaldf399a672013-11-18 17:55:22 +000012import static org.junit.Assert.*;
13import org.junit.Test;
14import org.junit.Ignore;
15import org.junit.runner.RunWith;
16import org.junit.runners.JUnit4;
17
18@RunWith(JUnit4.class)
19public class TestSpanWithinQuery {
20 @Test
Nils Diewaldbe5943e2014-10-21 19:35:34 +000021 public void spanSegmentWithinQuery () throws QueryException {
Nils Diewaldf399a672013-11-18 17:55:22 +000022
Eliza Margaretha6f989202016-10-14 21:48:29 +020023 SpanSequenceQueryWrapper ssquery = new SpanSequenceQueryWrapper("field",
24 "a", "b", "c");
Nils Diewaldbb33da22015-03-04 16:24:25 +000025 SpanWithinQuery ssequery = new SpanWithinQuery("s", ssquery.toQuery());
Nils Diewaldf399a672013-11-18 17:55:22 +000026
Nils Diewaldbb33da22015-03-04 16:24:25 +000027 assertEquals(
28 "spanContain(<field:s />, spanNext(spanNext(field:a, field:b), field:c))",
29 ssequery.toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000030
Nils Diewaldbb33da22015-03-04 16:24:25 +000031 ssquery = new SpanSequenceQueryWrapper("field", "a", "b");
32 ssequery = new SpanWithinQuery("p", ssquery.toQuery());
33 assertEquals("spanContain(<field:p />, spanNext(field:a, field:b))",
34 ssequery.toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000035
36 };
Nils Diewaldbb33da22015-03-04 16:24:25 +000037
Akron6759b042016-04-28 01:25:00 +020038
Akronf19b3182016-04-10 03:44:07 +020039 @Test
40 public void spanSegmentStartsWithQuery () throws QueryException {
41
Eliza Margaretha6f989202016-10-14 21:48:29 +020042 SpanSequenceQueryWrapper ssquery = new SpanSequenceQueryWrapper("field",
43 "a", "b", "c");
44 SpanWithinQuery ssequery = new SpanWithinQuery(
45 new SpanElementQuery("field", "s"), ssquery.toQuery(),
46 SpanWithinQuery.STARTSWITH, true);
Akronf19b3182016-04-10 03:44:07 +020047
48 assertEquals(
49 "spanStartsWith(<field:s />, spanNext(spanNext(field:a, field:b), field:c))",
50 ssequery.toString());
51 };
Akronff5e1ff2016-11-05 23:52:15 +010052
53 @Test
54 public void spanSegmentStartsWithEmptyQuery () {
55
56 QueryBuilder qb = new QueryBuilder("field1");
57
58 try {
59 SpanQuery sq = qb.startswith(qb.tag("base/s"), qb.empty()).toQuery();
60 }
61 catch (QueryException qe) {
62 assertEquals(qe.getErrorCode(), 772);
63 };
64 };
Nils Diewaldf399a672013-11-18 17:55:22 +000065};