/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.solr.client.solrj; import org.apache.lucene.util.LuceneTestCase; import org.apache.solr.common.params.FacetParams; import junit.framework.Assert; /** * * @version $Id: SolrQueryTest.java 983530 2010-08-09 06:11:16Z rmuir $ * @since solr 1.3 */ public class SolrQueryTest extends LuceneTestCase { public void testSolrQueryMethods() { SolrQuery q = new SolrQuery("dog"); boolean b = false; q.setFacetLimit(10); q.addFacetField("price"); q.addFacetField("state"); Assert.assertEquals(q.getFacetFields().length, 2); q.addFacetQuery("instock:true"); q.addFacetQuery("instock:false"); q.addFacetQuery("a:b"); Assert.assertEquals(q.getFacetQuery().length, 3); b = q.removeFacetField("price"); Assert.assertEquals(b, true); b = q.removeFacetField("price2"); Assert.assertEquals(b, false); b = q.removeFacetField("state"); Assert.assertEquals(b, true); Assert.assertEquals(null, q.getFacetFields()); b = q.removeFacetQuery("instock:true"); Assert.assertEquals(b, true); b = q.removeFacetQuery("instock:false"); b = q.removeFacetQuery("a:c"); Assert.assertEquals(b, false); b = q.removeFacetQuery("a:b"); Assert.assertEquals(null, q.getFacetQuery()); q.addSortField("price", SolrQuery.ORDER.asc); q.addSortField("date", SolrQuery.ORDER.desc); q.addSortField("qty", SolrQuery.ORDER.desc); q.removeSortField("date", SolrQuery.ORDER.desc); Assert.assertEquals(2, q.getSortFields().length); q.removeSortField("price", SolrQuery.ORDER.asc); q.removeSortField("qty", SolrQuery.ORDER.desc); Assert.assertEquals(null, q.getSortFields()); q.addHighlightField("hl1"); q.addHighlightField("hl2"); q.setHighlightSnippets(2); Assert.assertEquals(2, q.getHighlightFields().length); Assert.assertEquals(100, q.getHighlightFragsize()); Assert.assertEquals(q.getHighlightSnippets(), 2); q.removeHighlightField("hl1"); q.removeHighlightField("hl3"); Assert.assertEquals(1, q.getHighlightFields().length); q.removeHighlightField("hl2"); Assert.assertEquals(null, q.getHighlightFields()); // check to see that the removes are properly clearing the cgi params Assert.assertEquals(q.toString(), "q=dog"); //Add time allowed param q.setTimeAllowed(1000); Assert.assertEquals((Integer)1000, q.getTimeAllowed() ); //Adding a null should remove it q.setTimeAllowed(null); Assert.assertEquals(null, q.getTimeAllowed() ); // System.out.println(q); } public void testFacetSort() { SolrQuery q = new SolrQuery("dog"); assertEquals("count", q.getFacetSortString()); q.setFacetSort("index"); assertEquals("index", q.getFacetSortString()); } public void testFacetSortLegacy() { SolrQuery q = new SolrQuery("dog"); assertTrue("expected default value to be true", q.getFacetSort()); q.setFacetSort(false); assertFalse("expected set value to be false", q.getFacetSort()); } public void testSettersGetters() { SolrQuery q = new SolrQuery("foo"); assertEquals(10, q.setFacetLimit(10).getFacetLimit()); assertEquals(10, q.setFacetMinCount(10).getFacetMinCount()); assertEquals("index", q.setFacetSort("index").getFacetSortString()); assertEquals(10, q.setHighlightSnippets(10).getHighlightSnippets()); assertEquals(10, q.setHighlightFragsize(10).getHighlightFragsize()); assertEquals(true, q.setHighlightRequireFieldMatch(true).getHighlightRequireFieldMatch()); assertEquals("foo", q.setHighlightSimplePre("foo").getHighlightSimplePre()); assertEquals("foo", q.setHighlightSimplePost("foo").getHighlightSimplePost()); assertEquals(true, q.setHighlight(true).getHighlight()); assertEquals("foo", q.setQuery("foo").getQuery()); assertEquals(10, q.setRows(10).getRows().intValue()); assertEquals(10, q.setStart(10).getStart().intValue()); assertEquals("foo", q.setQueryType("foo").getQueryType()); assertEquals(10, q.setTimeAllowed(10).getTimeAllowed().intValue()); // non-standard assertEquals("foo", q.setFacetPrefix("foo").get( FacetParams.FACET_PREFIX, null ) ); assertEquals("foo", q.setFacetPrefix("a", "foo").getFieldParam( "a", FacetParams.FACET_PREFIX, null ) ); assertEquals( Boolean.TRUE, q.setMissing(Boolean.TRUE.toString()).getBool( FacetParams.FACET_MISSING ) ); assertEquals( Boolean.FALSE, q.setFacetMissing( Boolean.FALSE ).getBool( FacetParams.FACET_MISSING ) ); assertEquals( "true", q.setParam( "xxx", true ).getParams( "xxx" )[0] ); assertEquals( "x,y", q.setFields("x","y").getFields() ); assertEquals( "x,y,score", q.setIncludeScore(true).getFields() ); assertEquals( "x,y,score", q.setIncludeScore(true).getFields() ); // set twice on purpose assertEquals( "x,y", q.setIncludeScore(false).getFields() ); assertEquals( "x,y", q.setIncludeScore(false).getFields() ); // remove twice on purpose } public void testOrder() { assertEquals( SolrQuery.ORDER.asc, SolrQuery.ORDER.desc.reverse() ); assertEquals( SolrQuery.ORDER.desc, SolrQuery.ORDER.asc.reverse() ); } public void testTerms() { SolrQuery q = new SolrQuery(); // check getters assertEquals(false, q.getTerms()); assertEquals(null, q.getTermsFields()); assertEquals("", q.getTermsLower()); assertEquals("", q.getTermsUpper()); assertEquals(false, q.getTermsUpperInclusive()); assertEquals(true, q.getTermsLowerInclusive()); assertEquals(10, q.getTermsLimit()); assertEquals(1, q.getTermsMinCount()); assertEquals(-1, q.getTermsMaxCount()); assertEquals("", q.getTermsPrefix()); assertEquals(false, q.getTermsRaw()); assertEquals("count", q.getTermsSortString()); assertEquals(null, q.getTermsRegex()); assertEquals(null, q.getTermsRegexFlags()); // check setters q.setTerms(true); assertEquals(true, q.getTerms()); q.addTermsField("testfield"); assertEquals(1, q.getTermsFields().length); assertEquals("testfield", q.getTermsFields()[0]); q.setTermsLower("lower"); assertEquals("lower", q.getTermsLower()); q.setTermsUpper("upper"); assertEquals("upper", q.getTermsUpper()); q.setTermsUpperInclusive(true); assertEquals(true, q.getTermsUpperInclusive()); q.setTermsLowerInclusive(false); assertEquals(false, q.getTermsLowerInclusive()); q.setTermsLimit(5); assertEquals(5, q.getTermsLimit()); q.setTermsMinCount(2); assertEquals(2, q.getTermsMinCount()); q.setTermsMaxCount(5); assertEquals(5, q.getTermsMaxCount()); q.setTermsPrefix("prefix"); assertEquals("prefix", q.getTermsPrefix()); q.setTermsRaw(true); assertEquals(true, q.getTermsRaw()); q.setTermsSortString("index"); assertEquals("index", q.getTermsSortString()); q.setTermsRegex("a.*"); assertEquals("a.*", q.getTermsRegex()); q.setTermsRegexFlag("case_insensitive"); q.setTermsRegexFlag("multiline"); assertEquals(2, q.getTermsRegexFlags().length); } }