| Eliza Margaretha | 269e5a6 | 2014-09-30 16:58:23 +0000 | [diff] [blame] | 1 | package de.ids_mannheim.korap.query; |
| 2 | |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 3 | import java.util.*; |
| 4 | import de.ids_mannheim.korap.query.wrap.SpanSegmentQueryWrapper; |
| 5 | import de.ids_mannheim.korap.query.wrap.SpanRegexQueryWrapper; |
| 6 | import de.ids_mannheim.korap.query.wrap.SpanAlterQueryWrapper; |
| 7 | |
| Nils Diewald | be5943e | 2014-10-21 19:35:34 +0000 | [diff] [blame] | 8 | import de.ids_mannheim.korap.util.QueryException; |
| 9 | |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 10 | import static org.junit.Assert.*; |
| 11 | import org.junit.Test; |
| 12 | import org.junit.Ignore; |
| 13 | import org.junit.runner.RunWith; |
| 14 | import org.junit.runners.JUnit4; |
| 15 | |
| 16 | @RunWith(JUnit4.class) |
| 17 | public class TestSpanSegmentQuery { |
| 18 | @Test |
| Nils Diewald | be5943e | 2014-10-21 19:35:34 +0000 | [diff] [blame] | 19 | public void spanSegmentQuery () throws QueryException { |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 20 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 21 | SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field", |
| 22 | "a"); |
| 23 | assertEquals("field:a", ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 24 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 25 | ssquery = new SpanSegmentQueryWrapper("field", "a", "b"); |
| 26 | assertEquals("spanSegment(field:a, field:b)", ssquery.toQuery() |
| 27 | .toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 28 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 29 | ssquery = new SpanSegmentQueryWrapper("field", "a", "b", "c"); |
| 30 | assertEquals("spanSegment(spanSegment(field:a, field:b), field:c)", |
| 31 | ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 32 | }; |
| 33 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 34 | |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 35 | @Test |
| Nils Diewald | be5943e | 2014-10-21 19:35:34 +0000 | [diff] [blame] | 36 | public void spanSegmentQueryExclusive () throws QueryException { |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 37 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 38 | SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field", |
| 39 | "a"); |
| 40 | assertEquals("field:a", ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 41 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 42 | ssquery = new SpanSegmentQueryWrapper("field", "a", "b"); |
| 43 | assertEquals("spanSegment(field:a, field:b)", ssquery.toQuery() |
| 44 | .toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 45 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 46 | ssquery.without("c"); |
| 47 | assertEquals("spanNot(spanSegment(field:a, field:b), field:c, 0, 0)", |
| 48 | ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 49 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 50 | ssquery.without("d"); |
| 51 | assertEquals( |
| 52 | "spanNot(spanSegment(field:a, field:b), spanOr([field:c, field:d]), 0, 0)", |
| 53 | ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 54 | }; |
| 55 | |
| 56 | |
| 57 | @Test |
| Nils Diewald | be5943e | 2014-10-21 19:35:34 +0000 | [diff] [blame] | 58 | public void spanSegmentRegexQuery () throws QueryException { |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 59 | SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field"); |
| 60 | assertNull(ssquery.toQuery()); |
| 61 | ssquery.with("a"); |
| 62 | assertEquals("field:a", ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 63 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 64 | ssquery.with(new SpanRegexQueryWrapper("field", "a.*b")); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 65 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 66 | assertEquals( |
| 67 | "spanSegment(field:a, SpanMultiTermQueryWrapper(field:/a.*b/))", |
| 68 | ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 69 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 70 | ssquery.with("c"); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 71 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 72 | assertEquals( |
| 73 | "spanSegment(spanSegment(field:a, SpanMultiTermQueryWrapper(field:/a.*b/)), field:c)", |
| 74 | ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 75 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 76 | ssquery.with("d").with("e"); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 77 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 78 | assertEquals( |
| 79 | "spanSegment(spanSegment(spanSegment(spanSegment(field:a, SpanMultiTermQueryWrapper(field:/a.*b/)), field:c), field:d), field:e)", |
| 80 | ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 81 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 82 | ssquery.without(new SpanRegexQueryWrapper("field", "x.?y")); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 83 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 84 | 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 Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 87 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 88 | ssquery.without(new SpanRegexQueryWrapper("field", "z{5,9}")); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 89 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 90 | 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 Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 93 | |
| 94 | }; |
| 95 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 96 | |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 97 | @Test |
| Nils Diewald | be5943e | 2014-10-21 19:35:34 +0000 | [diff] [blame] | 98 | public void spanSegmentAlterQuery () throws QueryException { |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 99 | SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field"); |
| 100 | assertNull(ssquery.toQuery()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 101 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 102 | 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 Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 106 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 107 | assertEquals( |
| 108 | "spanSegment(spanSegment(field:a, spanOr([field:c, field:d])), SpanMultiTermQueryWrapper(field:/a.*b/))", |
| 109 | ssquery.toQuery().toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 110 | }; |
| 111 | |
| 112 | |
| 113 | @Test |
| Nils Diewald | be5943e | 2014-10-21 19:35:34 +0000 | [diff] [blame] | 114 | public void spanSegmentCloneQuery () throws QueryException { |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 115 | SpanSegmentQueryWrapper ssquery = new SpanSegmentQueryWrapper("field", |
| 116 | "a", "b"); |
| 117 | assertEquals("spanSegment(field:a, field:b)", ssquery.toQuery() |
| 118 | .toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 119 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 120 | SpanSegmentQueryWrapper ssquery2 = new SpanSegmentQueryWrapper("field", |
| 121 | ssquery); |
| 122 | assertEquals(ssquery.toQuery().toString(), ssquery2.toQuery() |
| 123 | .toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 124 | |
| Nils Diewald | bb33da2 | 2015-03-04 16:24:25 +0000 | [diff] [blame] | 125 | SpanSegmentQueryWrapper ssquery3 = ssquery2.clone(); |
| 126 | assertEquals(ssquery.toQuery().toString(), ssquery3.toQuery() |
| 127 | .toString()); |
| 128 | assertEquals(ssquery2.toQuery().toString(), ssquery3.toQuery() |
| 129 | .toString()); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 130 | }; |
| 131 | }; |