blob: 8c857a2e31b09ee21ba3a23451ebc1144af3b122 [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.SpanSegmentQueryWrapper;
5import de.ids_mannheim.korap.query.wrap.SpanRegexQueryWrapper;
6import de.ids_mannheim.korap.query.wrap.SpanAlterQueryWrapper;
7
Nils Diewaldbe5943e2014-10-21 19:35:34 +00008import de.ids_mannheim.korap.util.QueryException;
9
Nils Diewaldf399a672013-11-18 17:55:22 +000010import static org.junit.Assert.*;
11import org.junit.Test;
12import org.junit.Ignore;
13import org.junit.runner.RunWith;
14import org.junit.runners.JUnit4;
15
16@RunWith(JUnit4.class)
17public class TestSpanSegmentQuery {
18 @Test
Nils Diewaldbe5943e2014-10-21 19:35:34 +000019 public void spanSegmentQuery () throws QueryException {
Nils Diewaldf399a672013-11-18 17:55:22 +000020
Nils Diewaldbb33da22015-03-04 16:24:25 +000021 SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field",
22 "a");
23 assertEquals("field:a", ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000024
Nils Diewaldbb33da22015-03-04 16:24:25 +000025 ssquery = new SpanSegmentQueryWrapper("field", "a", "b");
26 assertEquals("spanSegment(field:a, field:b)", ssquery.toQuery()
27 .toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000028
Nils Diewaldbb33da22015-03-04 16:24:25 +000029 ssquery = new SpanSegmentQueryWrapper("field", "a", "b", "c");
30 assertEquals("spanSegment(spanSegment(field:a, field:b), field:c)",
31 ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000032 };
33
Nils Diewaldbb33da22015-03-04 16:24:25 +000034
Nils Diewaldf399a672013-11-18 17:55:22 +000035 @Test
Nils Diewaldbe5943e2014-10-21 19:35:34 +000036 public void spanSegmentQueryExclusive () throws QueryException {
Nils Diewaldf399a672013-11-18 17:55:22 +000037
Nils Diewaldbb33da22015-03-04 16:24:25 +000038 SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field",
39 "a");
40 assertEquals("field:a", ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000041
Nils Diewaldbb33da22015-03-04 16:24:25 +000042 ssquery = new SpanSegmentQueryWrapper("field", "a", "b");
43 assertEquals("spanSegment(field:a, field:b)", ssquery.toQuery()
44 .toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000045
Nils Diewaldbb33da22015-03-04 16:24:25 +000046 ssquery.without("c");
47 assertEquals("spanNot(spanSegment(field:a, field:b), field:c, 0, 0)",
48 ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000049
Nils Diewaldbb33da22015-03-04 16:24:25 +000050 ssquery.without("d");
51 assertEquals(
52 "spanNot(spanSegment(field:a, field:b), spanOr([field:c, field:d]), 0, 0)",
53 ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000054 };
55
56
57 @Test
Nils Diewaldbe5943e2014-10-21 19:35:34 +000058 public void spanSegmentRegexQuery () throws QueryException {
Nils Diewaldbb33da22015-03-04 16:24:25 +000059 SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field");
60 assertNull(ssquery.toQuery());
61 ssquery.with("a");
62 assertEquals("field:a", ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000063
Nils Diewaldbb33da22015-03-04 16:24:25 +000064 ssquery.with(new SpanRegexQueryWrapper("field", "a.*b"));
Nils Diewaldf399a672013-11-18 17:55:22 +000065
Nils Diewaldbb33da22015-03-04 16:24:25 +000066 assertEquals(
67 "spanSegment(field:a, SpanMultiTermQueryWrapper(field:/a.*b/))",
68 ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000069
Nils Diewaldbb33da22015-03-04 16:24:25 +000070 ssquery.with("c");
Nils Diewaldf399a672013-11-18 17:55:22 +000071
Nils Diewaldbb33da22015-03-04 16:24:25 +000072 assertEquals(
73 "spanSegment(spanSegment(field:a, SpanMultiTermQueryWrapper(field:/a.*b/)), field:c)",
74 ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000075
Nils Diewaldbb33da22015-03-04 16:24:25 +000076 ssquery.with("d").with("e");
Nils Diewaldf399a672013-11-18 17:55:22 +000077
Nils Diewaldbb33da22015-03-04 16:24:25 +000078 assertEquals(
79 "spanSegment(spanSegment(spanSegment(spanSegment(field:a, SpanMultiTermQueryWrapper(field:/a.*b/)), field:c), field:d), field:e)",
80 ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000081
Nils Diewaldbb33da22015-03-04 16:24:25 +000082 ssquery.without(new SpanRegexQueryWrapper("field", "x.?y"));
Nils Diewaldf399a672013-11-18 17:55:22 +000083
Nils Diewaldbb33da22015-03-04 16:24:25 +000084 assertEquals(
85 "spanNot(spanSegment(spanSegment(spanSegment(spanSegment(field:a, SpanMultiTermQueryWrapper(field:/a.*b/)), field:c), field:d), field:e), SpanMultiTermQueryWrapper(field:/x.?y/), 0, 0)",
86 ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000087
Nils Diewaldbb33da22015-03-04 16:24:25 +000088 ssquery.without(new SpanRegexQueryWrapper("field", "z{5,9}"));
Nils Diewaldf399a672013-11-18 17:55:22 +000089
Nils Diewaldbb33da22015-03-04 16:24:25 +000090 assertEquals(
91 "spanNot(spanSegment(spanSegment(spanSegment(spanSegment(field:a, SpanMultiTermQueryWrapper(field:/a.*b/)), field:c), field:d), field:e), spanOr([SpanMultiTermQueryWrapper(field:/x.?y/), SpanMultiTermQueryWrapper(field:/z{5,9}/)]), 0, 0)",
92 ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +000093
94 };
95
Nils Diewaldbb33da22015-03-04 16:24:25 +000096
Nils Diewaldf399a672013-11-18 17:55:22 +000097 @Test
Nils Diewaldbe5943e2014-10-21 19:35:34 +000098 public void spanSegmentAlterQuery () throws QueryException {
Nils Diewaldbb33da22015-03-04 16:24:25 +000099 SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field");
100 assertNull(ssquery.toQuery());
Nils Diewaldf399a672013-11-18 17:55:22 +0000101
Nils Diewaldbb33da22015-03-04 16:24:25 +0000102 ssquery.with("a");
103 assertEquals("field:a", ssquery.toQuery().toString());
104 ssquery.with(new SpanAlterQueryWrapper("field", "c", "d"));
105 ssquery.with(new SpanRegexQueryWrapper("field", "a.*b"));
Nils Diewaldf399a672013-11-18 17:55:22 +0000106
Nils Diewaldbb33da22015-03-04 16:24:25 +0000107 assertEquals(
108 "spanSegment(spanSegment(field:a, spanOr([field:c, field:d])), SpanMultiTermQueryWrapper(field:/a.*b/))",
109 ssquery.toQuery().toString());
Nils Diewaldf399a672013-11-18 17:55:22 +0000110 };
111
112
113 @Test
Nils Diewaldbe5943e2014-10-21 19:35:34 +0000114 public void spanSegmentCloneQuery () throws QueryException {
Nils Diewaldbb33da22015-03-04 16:24:25 +0000115 SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field",
116 "a", "b");
117 assertEquals("spanSegment(field:a, field:b)", ssquery.toQuery()
118 .toString());
Nils Diewaldf399a672013-11-18 17:55:22 +0000119
Nils Diewaldbb33da22015-03-04 16:24:25 +0000120 SpanSegmentQueryWrapper ssquery2 = new SpanSegmentQueryWrapper("field",
121 ssquery);
122 assertEquals(ssquery.toQuery().toString(), ssquery2.toQuery()
123 .toString());
Nils Diewaldf399a672013-11-18 17:55:22 +0000124
Nils Diewaldbb33da22015-03-04 16:24:25 +0000125 SpanSegmentQueryWrapper ssquery3 = ssquery2.clone();
126 assertEquals(ssquery.toQuery().toString(), ssquery3.toQuery()
127 .toString());
128 assertEquals(ssquery2.toQuery().toString(), ssquery3.toQuery()
129 .toString());
Nils Diewaldf399a672013-11-18 17:55:22 +0000130 };
131};