diff options
Diffstat (limited to 'container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java')
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java | 94 |
1 files changed, 35 insertions, 59 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java index e2325e52f63..127820bb7ae 100644 --- a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java @@ -11,6 +11,7 @@ import com.yahoo.prelude.query.IndexedItem; import com.yahoo.prelude.query.ExactStringItem; import com.yahoo.prelude.query.Item; import com.yahoo.prelude.query.PhraseItem; +import com.yahoo.prelude.query.PhraseSegmentItem; import com.yahoo.prelude.query.PrefixItem; import com.yahoo.prelude.query.QueryCanonicalizer; import com.yahoo.prelude.query.RegExpItem; @@ -55,15 +56,15 @@ import static org.junit.Assert.fail; /** * Specification for the conversion of YQL+ expressions to Vespa search queries. * - * @author steinar - * @author stiankri + * @author Steinar Knutsen + * @author Stian Kristoffersen */ public class YqlParserTestCase { private final YqlParser parser = new YqlParser(new ParserEnvironment()); @Test - public void requireThatDefaultsAreSane() { + public void testParserDefaults() { assertTrue(parser.isQueryParser()); assertNull(parser.getDocTypes()); } @@ -76,7 +77,7 @@ public class YqlParserTestCase { } @Test - public void requireThatGroupingStepCanBeParsed() { + public void testGroupingStep() { assertParse("select foo from bar where baz contains 'cox';", "baz:cox"); assertEquals("[]", @@ -98,7 +99,7 @@ public class YqlParserTestCase { } @Test - public void requireThatGroupingContinuationCanBeParsed() { + public void testGroupingContinuation() { assertParse("select foo from bar where baz contains 'cox' " + "| [{ 'continuations': ['BCBCBCBEBG', 'BCBKCBACBKCCK'] }]all(group(a) each(output(count())));", "baz:cox"); @@ -320,12 +321,14 @@ public class YqlParserTestCase { @Test public void testRaw() { + // Default: Not raw, for comparison Item root = parse("select foo from bar where baz contains (\"yoni jo dima\");").getRoot(); - assertTrue(root instanceof WordItem); - assertFalse(root instanceof ExactStringItem); - assertEquals("yoni jo dima", ((WordItem)root).getWord()); + assertEquals("baz:'yoni jo dima'", root.toString()); + assertFalse(root instanceof WordItem); + assertTrue(root instanceof PhraseSegmentItem); root = parse("select foo from bar where baz contains ([{\"grammar\":\"raw\"}]\"yoni jo dima\");").getRoot(); + assertEquals("baz:yoni jo dima", root.toString()); assertTrue(root instanceof WordItem); assertFalse(root instanceof ExactStringItem); assertEquals("yoni jo dima", ((WordItem)root).getWord()); @@ -735,44 +738,17 @@ public class YqlParserTestCase { @Test public void testSegmenting() { - assertParse("select * from bar where ([{\"segmenter\": {\"version\": \"58.67.49\", \"backend\": " + - "\"yell\"}}] title contains \"madonna\");", - "title:madonna"); - assertEquals("yell", parser.getSegmenterBackend()); - assertEquals(new Version("58.67.49"), parser.getSegmenterVersion()); - - assertParse("select * from bar where ([{\"segmenter\": {\"version\": \"8.7.3\", \"backend\": " + - "\"yell\"}}]([{\"targetNumHits\": 9999438}] weakAnd(format contains \"online\", title contains " + - "\"madonna\")));", - "WAND(9999438) format:online title:madonna"); - assertEquals("yell", parser.getSegmenterBackend()); - assertEquals(new Version("8.7.3"), parser.getSegmenterVersion()); - - assertParse("select * from bar where [{\"segmenter\": {\"version\": \"18.47.39\", \"backend\": " + - "\"yell\"}}] ([{\"targetNumHits\": 99909438}] weakAnd(format contains \"online\", title contains " + - "\"madonna\"));", - "WAND(99909438) format:online title:madonna"); - assertEquals("yell", parser.getSegmenterBackend()); - assertEquals(new Version("18.47.39"), parser.getSegmenterVersion()); - - assertParse("select * from bar where [{\"targetNumHits\": 99909438}] weakAnd(format contains " + - "\"online\", title contains \"madonna\");", - "WAND(99909438) format:online title:madonna"); - assertNull(parser.getSegmenterBackend()); - assertNull(parser.getSegmenterVersion()); - - assertParse("select * from bar where [{\"segmenter\": {\"version\": \"58.67.49\", \"backend\": " + - "\"yell\"}}](title contains \"madonna\") order by shoesize;", - "title:madonna"); - assertEquals("yell", parser.getSegmenterBackend()); - assertEquals(new Version("58.67.49"), parser.getSegmenterVersion()); + assertParse("select * from bar where title contains 'foo.bar';", + "title:'foo bar'"); + + assertParse("select * from bar where title contains 'foo&123';", + "title:'foo 123'"); } @Test public void testNegativeHitLimit() { - assertParse( - "select * from sources * where [{\"hitLimit\": -38}]range(foo, 0, 1);", - "foo:[0;1;-38]"); + assertParse("select * from sources * where [{\"hitLimit\": -38}]range(foo, 0, 1);", + "foo:[0;1;-38]"); } @Test @@ -830,26 +806,26 @@ public class YqlParserTestCase { @Test public void testMoreInheritedAnnotations() { - final String yqlQuery = "select * from sources * where " - + "([{\"ranked\": false}](foo contains \"a\" " - + "and ([{\"ranked\": true}](bar contains \"b\" " - + "or ([{\"ranked\": false}](foo contains \"c\" " - + "and foo contains ([{\"ranked\": true}]\"d\")))))));"; + String yqlQuery = "select * from sources * where " + + "([{\"ranked\": false}](foo contains \"a\" " + + "and ([{\"ranked\": true}](bar contains \"b\" " + + "or ([{\"ranked\": false}](foo contains \"c\" " + + "and foo contains ([{\"ranked\": true}]\"d\")))))));"; QueryTree x = parse(yqlQuery); List<IndexedItem> terms = QueryTree.getPositiveTerms(x); assertEquals(4, terms.size()); for (IndexedItem term : terms) { switch (term.getIndexedString()) { - case "a": - case "c": - assertFalse(((Item) term).isRanked()); - break; - case "b": - case "d": - assertTrue(((Item) term).isRanked()); - break; - default: - fail(); + case "a": + case "c": + assertFalse(((Item) term).isRanked()); + break; + case "b": + case "d": + assertTrue(((Item) term).isRanked()); + break; + default: + fail(); } } } @@ -921,8 +897,8 @@ public class YqlParserTestCase { private void checkWordAlternativesContent(WordAlternativesItem alternatives) { boolean seenTree = false; boolean seenForest = false; - final String forest = "trees"; - final String tree = "tree"; + String forest = "trees"; + String tree = "tree"; assertEquals(2, alternatives.getAlternatives().size()); for (WordAlternativesItem.Alternative alternative : alternatives.getAlternatives()) { if (tree.equals(alternative.word)) { |