diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-08-15 15:11:38 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-08-15 15:11:38 +0200 |
commit | 3ad3382721036e58dab67a0d2cc79dfa93263087 (patch) | |
tree | 317f08cb4cb2b21879ed6380b242c2104daa698c /container-search/src/test/java/com/yahoo/select | |
parent | 506ea9c1367748ddd4ff20203fc13211d635f5a6 (diff) |
Revert "Merge pull request #6582 from vespa-engine/revert-6557-revert-6553-revert-6512-henrhoi/object-structured-grouping"
This reverts commit 506ea9c1367748ddd4ff20203fc13211d635f5a6, reversing
changes made to 4f6b34dcf9ad904f0ddb89eb506f5920360d5344.
Diffstat (limited to 'container-search/src/test/java/com/yahoo/select')
-rw-r--r-- | container-search/src/test/java/com/yahoo/select/SelectTestCase.java (renamed from container-search/src/test/java/com/yahoo/select/SelectParserTestCase.java) | 98 |
1 files changed, 56 insertions, 42 deletions
diff --git a/container-search/src/test/java/com/yahoo/select/SelectParserTestCase.java b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java index 031ba386ad4..6871e26b96a 100644 --- a/container-search/src/test/java/com/yahoo/select/SelectParserTestCase.java +++ b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java @@ -15,14 +15,14 @@ import com.yahoo.prelude.query.WeakAndItem; import com.yahoo.prelude.query.WordAlternativesItem; import com.yahoo.prelude.query.WordItem; import com.yahoo.search.Query; -import com.yahoo.search.federation.ProviderConfig; +import com.yahoo.search.grouping.GroupingRequest; +import com.yahoo.search.grouping.request.AllOperation; import com.yahoo.search.query.QueryTree; import com.yahoo.search.query.Select; import com.yahoo.search.query.SelectParser; import com.yahoo.search.query.parser.Parsable; import com.yahoo.search.query.parser.ParserEnvironment; import com.yahoo.search.yql.VespaGroupingStep; -import org.apache.http.client.utils.URIBuilder; import org.json.JSONException; import org.json.JSONObject; import org.junit.Test; @@ -33,24 +33,23 @@ import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; - /** - * Specification for the conversion of Select expressions to Vespa search queries. + * Tests Query.Select * * @author henrhoi + * @author bratseth */ - -public class SelectParserTestCase { +public class SelectTestCase { private final SelectParser parser = new SelectParser(new ParserEnvironment()); - - /** WHERE TESTS */ + //------------------------------------------------------------------- "where" tests @Test public void test_contains() throws Exception { @@ -136,7 +135,6 @@ public class SelectParserTestCase { "+title:madonna -title:saint"); } - @Test public void testLessThan() throws JSONException { JSONObject range_json = new JSONObject(); @@ -165,7 +163,6 @@ public class SelectParserTestCase { "price:>500"); } - @Test public void testLessThanOrEqual() throws JSONException { JSONObject range_json = new JSONObject(); @@ -326,7 +323,6 @@ public class SelectParserTestCase { assertEquals(3, origin.end); } - @Test public void testSameElement() { assertParse("{ \"contains\": [ \"baz\", {\"sameElement\" : [ { \"contains\" : [\"f1\", \"a\"] }, { \"contains\" : [\"f2\", \"b\"] } ]} ] }", @@ -420,7 +416,7 @@ public class SelectParserTestCase { WordItem first = (WordItem)root.getItem(0); WordItem second = (WordItem)root.getItem(1); WordItem third = (WordItem)root.getItem(2); - assertTrue(first.getConnectedItem() == third); + assertEquals(third, first.getConnectedItem()); assertEquals(first.getConnectivity(), 7.0d, 1E-6); assertNull(second.getConnectedItem()); @@ -557,17 +553,17 @@ public class SelectParserTestCase { @Test public void testAffixItems() { assertRootClass("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"suffix\": true} } }", - SuffixItem.class); + SuffixItem.class); assertRootClass("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"prefix\": true} } }", - PrefixItem.class); + PrefixItem.class); assertRootClass("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"substring\": true} } }", - SubstringItem.class); + SubstringItem.class); assertParseFail("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"suffix\": true, \"prefix\" : true} } }", - new IllegalArgumentException("Only one of prefix, substring and suffix can be set.")); + new IllegalArgumentException("Only one of prefix, substring and suffix can be set.")); assertParseFail("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"suffix\": true, \"substring\" : true} } }", - new IllegalArgumentException("Only one of prefix, substring and suffix can be set.")); + new IllegalArgumentException("Only one of prefix, substring and suffix can be set.")); } @Test @@ -641,7 +637,7 @@ public class SelectParserTestCase { checkWordAlternativesContent(alternatives); } - /** GROUPING TESTS */ + //------------------------------------------------------------------- grouping tests @Test public void testGrouping(){ @@ -659,9 +655,7 @@ public class SelectParserTestCase { assertGrouping(expected, parseGrouping(grouping)); } - - - /** OTHER TESTS */ + //------------------------------------------------------------------- Other tests @Test public void testOverridingOtherQueryTree() { @@ -669,16 +663,15 @@ public class SelectParserTestCase { assertEquals("default:query", query.getModel().getQueryTree().toString()); assertEquals(Query.Type.ALL, query.getModel().getType()); - query.getSelect().setWhere("{\"contains\" : [\"default\", \"select\"] }"); + query.getSelect().setWhereString("{\"contains\" : [\"default\", \"select\"] }"); assertEquals("default:select", query.getModel().getQueryTree().toString()); assertEquals(Query.Type.SELECT, query.getModel().getType()); } - @Test public void testOverridingWhereQueryTree() { - Query query = new Query(); - query.getSelect().setWhere("{\"contains\" : [\"default\", \"select\"] }"); + Query query = new Query("?query=default:query"); + query.getSelect().setWhereString("{\"contains\" : [\"default\", \"select\"] }"); assertEquals("default:select", query.getModel().getQueryTree().toString()); assertEquals(Query.Type.SELECT, query.getModel().getType()); @@ -688,10 +681,44 @@ public class SelectParserTestCase { assertEquals(Query.Type.ALL, query.getModel().getType()); } + @Test + public void testProgrammaticAssignment() { + Query query = new Query(); + query.getSelect().setGroupingString("[ { \"all\" : { \"group\" : \"time.year(a)\", \"each\" : { \"output\" : \"count()\" } } } ]"); + assertEquals(1, query.getSelect().getGrouping().size()); + assertEquals("all(group(time.year(a)) each(output(count())))", query.getSelect().getGrouping().get(0).getRootOperation().toString()); + // Setting from string resets the grouping expression + query.getSelect().setGroupingString("[ { \"all\" : { \"group\" : \"time.dayofmonth(a)\", \"each\" : { \"output\" : \"count()\" } } } ]"); + assertEquals(1, query.getSelect().getGrouping().size()); + assertEquals("all(group(time.dayofmonth(a)) each(output(count())))", query.getSelect().getGrouping().get(0).getRootOperation().toString()); + } + @Test + public void testConstructionAndClone() { + Query query = new Query(); + query.getSelect().setWhereString("{\"contains\" : [\"default\", \"select\"] }"); + query.getSelect().setGroupingString("[ { \"all\" : { \"group\" : \"time.dayofmonth(a)\", \"each\" : { \"output\" : \"count()\" } } } ]"); + GroupingRequest secondRequest = GroupingRequest.newInstance(query); + assertEquals("default:select", query.getModel().getQueryTree().toString()); + assertEquals(2, query.getSelect().getGrouping().size()); + assertEquals("all(group(time.dayofmonth(a)) each(output(count())))", query.getSelect().getGrouping().get(0).toString()); + + Query clone = query.clone(); + assertNotSame(query.getSelect(), clone.getSelect()); + assertNotSame(query.getSelect().getGrouping(), clone.getSelect().getGrouping()); + assertNotSame(query.getSelect().getGrouping().get(0), clone.getSelect().getGrouping().get(0)); + assertNotSame(query.getSelect().getGrouping().get(1), clone.getSelect().getGrouping().get(1)); + assertEquals(query.getSelect().getWhereString(), clone.getSelect().getWhereString()); + assertEquals(query.getSelect().getGroupingString(), clone.getSelect().getGroupingString()); + assertEquals(query.getSelect().getGrouping().get(0).toString(), clone.getSelect().getGrouping().get(0).toString()); + assertEquals(query.getSelect().getGrouping().get(1).toString(), clone.getSelect().getGrouping().get(1).toString()); + + + } + + //------------------------------------------------------------------- Assert methods - /** Assert-methods */ private void assertParse(String where, String expectedQueryTree) { String queryTree = parseWhere(where).toString(); assertEquals(expectedQueryTree, queryTree); @@ -721,13 +748,10 @@ public class SelectParserTestCase { assertEquals(expected, actual.toString()); } - - - - /** Parse-methods*/ + //------------------------------------------------------------------- Parse methods private QueryTree parseWhere(String where) { - Select select = new Select(where, ""); + Select select = new Select(where, "", new Query()); return parser.parse(new Parsable().setSelect(select)); } @@ -737,17 +761,8 @@ public class SelectParserTestCase { return parser.getGroupingSteps(grouping); } - private QueryTree parse(String where, String grouping) { - Select select = new Select(where, grouping); + //------------------------------------------------------------------- Other methods - return parser.parse(new Parsable().setSelect(select)); - } - - - - - - /** Other methods */ private WordItem getRootWord(String yqlQuery) { Item root = parseWhere(yqlQuery).getRoot(); assertTrue(root instanceof WordItem); @@ -775,5 +790,4 @@ public class SelectParserTestCase { } } - } |