--- /dev/null
+package org.apache.lucene.queryParser;
+
+/**
+ * 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.
+ */
+
+import java.text.CollationKey;
+import java.text.Collator;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Locale;
+
+import junit.framework.Assert;
+
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.KeywordAnalyzer;
+import org.apache.lucene.document.DateTools;
+import org.apache.lucene.queryParser.standard.config.AllowLeadingWildcardAttribute;
+import org.apache.lucene.queryParser.standard.config.AnalyzerAttribute;
+import org.apache.lucene.queryParser.standard.config.BoostAttribute;
+import org.apache.lucene.queryParser.standard.config.DateResolutionAttribute;
+import org.apache.lucene.queryParser.standard.config.DefaultOperatorAttribute;
+import org.apache.lucene.queryParser.standard.config.DefaultPhraseSlopAttribute;
+import org.apache.lucene.queryParser.standard.config.FieldBoostMapAttribute;
+import org.apache.lucene.queryParser.standard.config.FieldDateResolutionMapAttribute;
+import org.apache.lucene.queryParser.standard.config.FuzzyAttribute;
+import org.apache.lucene.queryParser.standard.config.LocaleAttribute;
+import org.apache.lucene.queryParser.standard.config.LowercaseExpandedTermsAttribute;
+import org.apache.lucene.queryParser.standard.config.MultiFieldAttribute;
+import org.apache.lucene.queryParser.standard.config.MultiTermRewriteMethodAttribute;
+import org.apache.lucene.queryParser.standard.config.PositionIncrementsAttribute;
+import org.apache.lucene.queryParser.standard.config.RangeCollatorAttribute;
+import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler;
+import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler.ConfigurationKeys;
+import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler.Operator;
+import org.apache.lucene.search.FuzzyQuery;
+import org.apache.lucene.search.MultiTermQuery;
+import org.apache.lucene.util.LuceneTestCase;
+import org.junit.Test;
+
+public class TestAttributes extends LuceneTestCase {
+
+ @Test
+ public void testAttributes() {
+ StandardQueryConfigHandler config = new StandardQueryConfigHandler();
+
+ AnalyzerAttribute analyzerAttr = config
+ .addAttribute(AnalyzerAttribute.class);
+
+ Assert.assertTrue(null == analyzerAttr.getAnalyzer());
+ Assert.assertTrue(null == config.get(ConfigurationKeys.ANALYZER));
+ Analyzer analyzer = new KeywordAnalyzer();
+ analyzerAttr.setAnalyzer(analyzer);
+ Assert.assertTrue(analyzer == analyzerAttr.getAnalyzer());
+ Assert.assertTrue(analyzer == config.get(ConfigurationKeys.ANALYZER));
+
+ DateResolutionAttribute dateResAttr = config
+ .addAttribute(DateResolutionAttribute.class);
+
+ Assert.assertTrue(null == dateResAttr.getDateResolution());
+ Assert.assertTrue(null == config.get(ConfigurationKeys.DATE_RESOLUTION));
+ DateTools.Resolution dateRes = DateTools.Resolution.HOUR;
+ dateResAttr.setDateResolution(dateRes);
+ Assert.assertTrue(dateRes == dateResAttr.getDateResolution());
+ Assert.assertTrue(dateRes == config.get(ConfigurationKeys.DATE_RESOLUTION));
+
+ DefaultPhraseSlopAttribute defaultPhraseSlopAttr = config
+ .addAttribute(DefaultPhraseSlopAttribute.class);
+
+ Assert.assertEquals(0, defaultPhraseSlopAttr.getDefaultPhraseSlop());
+ Assert
+ .assertEquals(0, config.get(ConfigurationKeys.PHRASE_SLOP).intValue());
+ int phraseSlop = 1;
+ defaultPhraseSlopAttr.setDefaultPhraseSlop(phraseSlop);
+ Assert.assertEquals(phraseSlop, defaultPhraseSlopAttr
+ .getDefaultPhraseSlop());
+ Assert.assertEquals(phraseSlop, config.get(ConfigurationKeys.PHRASE_SLOP)
+ .intValue());
+
+ FieldBoostMapAttribute fieldBoostMapAttr = config
+ .addAttribute(FieldBoostMapAttribute.class);
+
+ Assert.assertEquals(new LinkedHashMap<String, Float>(), fieldBoostMapAttr
+ .getFieldBoostMap());
+ Assert.assertEquals(new LinkedHashMap<String, Float>(), config
+ .get(ConfigurationKeys.FIELD_BOOST_MAP));
+ LinkedHashMap<String, Float> fieldBoostMap = new LinkedHashMap<String, Float>();
+ fieldBoostMap.put("test", 0.3f);
+ fieldBoostMapAttr.setFieldBoostMap(fieldBoostMap);
+ Assert.assertEquals(fieldBoostMap, fieldBoostMapAttr.getFieldBoostMap());
+ Assert.assertEquals(fieldBoostMap, config
+ .get(ConfigurationKeys.FIELD_BOOST_MAP));
+
+ FieldDateResolutionMapAttribute fieldDateResolutionMapAttr = config
+ .addAttribute(FieldDateResolutionMapAttribute.class);
+
+ Assert.assertEquals(new HashMap<CharSequence, DateTools.Resolution>(),
+ fieldDateResolutionMapAttr.getFieldDateResolutionMap());
+ Assert.assertEquals(new HashMap<CharSequence, DateTools.Resolution>(),
+ config.get(ConfigurationKeys.FIELD_DATE_RESOLUTION_MAP));
+ HashMap<CharSequence, DateTools.Resolution> fieldDateResMap = new HashMap<CharSequence, DateTools.Resolution>();
+ fieldDateResMap.put("test", DateTools.Resolution.HOUR);
+ fieldDateResolutionMapAttr.setFieldDateResolutionMap(fieldDateResMap);
+ Assert.assertEquals(fieldDateResMap, fieldDateResolutionMapAttr.getFieldDateResolutionMap());
+ Assert.assertEquals(fieldDateResMap, config
+ .get(ConfigurationKeys.FIELD_DATE_RESOLUTION_MAP));
+
+ LocaleAttribute localeAttr = config.addAttribute(LocaleAttribute.class);
+
+ Assert.assertEquals(Locale.getDefault(), localeAttr.getLocale());
+ Assert.assertEquals(Locale.getDefault(), config
+ .get(ConfigurationKeys.LOCALE));
+ Locale locale = Locale.CHINA;
+ localeAttr.setLocale(locale);
+ Assert.assertEquals(locale, localeAttr.getLocale());
+ Assert.assertEquals(locale, config.get(ConfigurationKeys.LOCALE));
+
+ LowercaseExpandedTermsAttribute lowercaseExpandedTermsAttr = config
+ .addAttribute(LowercaseExpandedTermsAttribute.class);
+
+ Assert.assertEquals(true, lowercaseExpandedTermsAttr
+ .isLowercaseExpandedTerms());
+ Assert.assertEquals(true, config.get(
+ ConfigurationKeys.LOWERCASE_EXPANDED_TERMS).booleanValue());
+ boolean lowercaseEnabled = false;
+ lowercaseExpandedTermsAttr.setLowercaseExpandedTerms(lowercaseEnabled);
+ Assert.assertEquals(lowercaseEnabled, lowercaseExpandedTermsAttr
+ .isLowercaseExpandedTerms());
+ Assert.assertEquals(lowercaseEnabled, config.get(
+ ConfigurationKeys.LOWERCASE_EXPANDED_TERMS).booleanValue());
+
+ MultiTermRewriteMethodAttribute multiTermRewriteMethodAttr = config
+ .addAttribute(MultiTermRewriteMethodAttribute.class);
+
+ Assert
+ .assertTrue(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT == multiTermRewriteMethodAttr
+ .getMultiTermRewriteMethod());
+ Assert
+ .assertTrue(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT == config
+ .get(ConfigurationKeys.MULTI_TERM_REWRITE_METHOD));
+ MultiTermQuery.RewriteMethod rewriteMethod = MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE;
+ multiTermRewriteMethodAttr.setMultiTermRewriteMethod(rewriteMethod);
+ Assert.assertTrue(rewriteMethod == multiTermRewriteMethodAttr
+ .getMultiTermRewriteMethod());
+ Assert.assertTrue(rewriteMethod == config
+ .get(ConfigurationKeys.MULTI_TERM_REWRITE_METHOD));
+
+ PositionIncrementsAttribute positionIncrementsAttr = config
+ .addAttribute(PositionIncrementsAttribute.class);
+
+ Assert.assertEquals(false, positionIncrementsAttr
+ .isPositionIncrementsEnabled());
+ Assert.assertEquals(false, config.get(
+ ConfigurationKeys.ENABLE_POSITION_INCREMENTS).booleanValue());
+ boolean posIncrEnabled = true;
+ positionIncrementsAttr.setPositionIncrementsEnabled(posIncrEnabled);
+ Assert.assertEquals(posIncrEnabled, positionIncrementsAttr
+ .isPositionIncrementsEnabled());
+ Assert.assertEquals(posIncrEnabled, config.get(
+ ConfigurationKeys.ENABLE_POSITION_INCREMENTS).booleanValue());
+
+ RangeCollatorAttribute rangeCollatorAttr = config
+ .addAttribute(RangeCollatorAttribute.class);
+
+ Assert.assertTrue(null == rangeCollatorAttr.getRangeCollator());
+ Assert.assertTrue(null == config.get(ConfigurationKeys.RANGE_COLLATOR));
+ Collator collator = new Collator() {
+
+ @Override
+ public int compare(String arg0, String arg1) {
+ return 0;
+ }
+
+ @Override
+ public CollationKey getCollationKey(String arg0) {
+ return null;
+ }
+
+ @Override
+ public int hashCode() {
+ return 0;
+ }
+
+ };
+ rangeCollatorAttr.setDateResolution(collator);
+ Assert.assertTrue(collator == rangeCollatorAttr.getRangeCollator());
+ Assert.assertTrue(collator == config.get(ConfigurationKeys.RANGE_COLLATOR));
+
+ BoostAttribute boostAttr = config.addAttribute(BoostAttribute.class);
+
+ Assert.assertEquals(1.0f, boostAttr.getBoost());
+ Assert.assertEquals(1.0f, config.get(ConfigurationKeys.BOOST).floatValue());
+ float boost = 2.0f;
+ boostAttr.setBoost(boost);
+ Assert.assertEquals(boost, boostAttr.getBoost());
+ Assert
+ .assertEquals(boost, config.get(ConfigurationKeys.BOOST).floatValue());
+
+ FuzzyAttribute fuzzyAttributeAttr = config
+ .addAttribute(FuzzyAttribute.class);
+
+ Assert.assertEquals(FuzzyQuery.defaultMinSimilarity, fuzzyAttributeAttr
+ .getFuzzyMinSimilarity());
+ Assert.assertEquals(FuzzyQuery.defaultPrefixLength, fuzzyAttributeAttr
+ .getPrefixLength());
+ Assert.assertEquals(FuzzyQuery.defaultMinSimilarity, config.get(
+ ConfigurationKeys.FUZZY_CONFIG).getMinSimilarity());
+ Assert.assertEquals(FuzzyQuery.defaultPrefixLength, config.get(
+ ConfigurationKeys.FUZZY_CONFIG).getPrefixLength());
+ int prefixLength = 232;
+ float minSim = 23.923f;
+ fuzzyAttributeAttr.setFuzzyMinSimilarity(minSim);
+ fuzzyAttributeAttr.setPrefixLength(prefixLength);
+ Assert.assertEquals(minSim, fuzzyAttributeAttr.getFuzzyMinSimilarity());
+ Assert.assertEquals(prefixLength, fuzzyAttributeAttr.getPrefixLength());
+ Assert.assertEquals(minSim, config.get(ConfigurationKeys.FUZZY_CONFIG)
+ .getMinSimilarity());
+ Assert.assertEquals(prefixLength, config
+ .get(ConfigurationKeys.FUZZY_CONFIG).getPrefixLength());
+
+ DefaultOperatorAttribute defaultOpAttr = config
+ .addAttribute(DefaultOperatorAttribute.class);
+
+ Assert.assertEquals(DefaultOperatorAttribute.Operator.OR, defaultOpAttr
+ .getOperator());
+ Assert.assertEquals(Operator.OR, config
+ .get(ConfigurationKeys.DEFAULT_OPERATOR));
+ DefaultOperatorAttribute.Operator oldOperator = DefaultOperatorAttribute.Operator.AND;
+ Operator newOperator = Operator.AND;
+ defaultOpAttr.setOperator(oldOperator);
+ Assert.assertEquals(oldOperator, defaultOpAttr.getOperator());
+ Assert.assertEquals(newOperator, config
+ .get(ConfigurationKeys.DEFAULT_OPERATOR));
+
+ }
+
+}