pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / contrib / queryparser / src / test / org / apache / lucene / queryParser / TestAttributes.java
1 package org.apache.lucene.queryParser;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import java.text.CollationKey;
21 import java.text.Collator;
22 import java.util.HashMap;
23 import java.util.LinkedHashMap;
24 import java.util.Locale;
25
26 import junit.framework.Assert;
27
28 import org.apache.lucene.analysis.Analyzer;
29 import org.apache.lucene.analysis.KeywordAnalyzer;
30 import org.apache.lucene.document.DateTools;
31 import org.apache.lucene.queryParser.standard.config.AllowLeadingWildcardAttribute;
32 import org.apache.lucene.queryParser.standard.config.AnalyzerAttribute;
33 import org.apache.lucene.queryParser.standard.config.BoostAttribute;
34 import org.apache.lucene.queryParser.standard.config.DateResolutionAttribute;
35 import org.apache.lucene.queryParser.standard.config.DefaultOperatorAttribute;
36 import org.apache.lucene.queryParser.standard.config.DefaultPhraseSlopAttribute;
37 import org.apache.lucene.queryParser.standard.config.FieldBoostMapAttribute;
38 import org.apache.lucene.queryParser.standard.config.FieldDateResolutionMapAttribute;
39 import org.apache.lucene.queryParser.standard.config.FuzzyAttribute;
40 import org.apache.lucene.queryParser.standard.config.LocaleAttribute;
41 import org.apache.lucene.queryParser.standard.config.LowercaseExpandedTermsAttribute;
42 import org.apache.lucene.queryParser.standard.config.MultiFieldAttribute;
43 import org.apache.lucene.queryParser.standard.config.MultiTermRewriteMethodAttribute;
44 import org.apache.lucene.queryParser.standard.config.PositionIncrementsAttribute;
45 import org.apache.lucene.queryParser.standard.config.RangeCollatorAttribute;
46 import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler;
47 import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler.ConfigurationKeys;
48 import org.apache.lucene.queryParser.standard.config.StandardQueryConfigHandler.Operator;
49 import org.apache.lucene.search.FuzzyQuery;
50 import org.apache.lucene.search.MultiTermQuery;
51 import org.apache.lucene.util.LuceneTestCase;
52 import org.junit.Test;
53
54 public class TestAttributes extends LuceneTestCase {
55
56   @Test
57   public void testAttributes() {
58     StandardQueryConfigHandler config = new StandardQueryConfigHandler();
59
60     AnalyzerAttribute analyzerAttr = config
61         .addAttribute(AnalyzerAttribute.class);
62
63     Assert.assertTrue(null == analyzerAttr.getAnalyzer());
64     Assert.assertTrue(null == config.get(ConfigurationKeys.ANALYZER));
65     Analyzer analyzer = new KeywordAnalyzer();
66     analyzerAttr.setAnalyzer(analyzer);
67     Assert.assertTrue(analyzer == analyzerAttr.getAnalyzer());
68     Assert.assertTrue(analyzer == config.get(ConfigurationKeys.ANALYZER));
69
70     DateResolutionAttribute dateResAttr = config
71         .addAttribute(DateResolutionAttribute.class);
72
73     Assert.assertTrue(null == dateResAttr.getDateResolution());
74     Assert.assertTrue(null == config.get(ConfigurationKeys.DATE_RESOLUTION));
75     DateTools.Resolution dateRes = DateTools.Resolution.HOUR;
76     dateResAttr.setDateResolution(dateRes);
77     Assert.assertTrue(dateRes == dateResAttr.getDateResolution());
78     Assert.assertTrue(dateRes == config.get(ConfigurationKeys.DATE_RESOLUTION));
79
80     DefaultPhraseSlopAttribute defaultPhraseSlopAttr = config
81         .addAttribute(DefaultPhraseSlopAttribute.class);
82
83     Assert.assertEquals(0, defaultPhraseSlopAttr.getDefaultPhraseSlop());
84     Assert
85         .assertEquals(0, config.get(ConfigurationKeys.PHRASE_SLOP).intValue());
86     int phraseSlop = 1;
87     defaultPhraseSlopAttr.setDefaultPhraseSlop(phraseSlop);
88     Assert.assertEquals(phraseSlop, defaultPhraseSlopAttr
89         .getDefaultPhraseSlop());
90     Assert.assertEquals(phraseSlop, config.get(ConfigurationKeys.PHRASE_SLOP)
91         .intValue());
92
93     FieldBoostMapAttribute fieldBoostMapAttr = config
94         .addAttribute(FieldBoostMapAttribute.class);
95
96     Assert.assertEquals(new LinkedHashMap<String, Float>(), fieldBoostMapAttr
97         .getFieldBoostMap());
98     Assert.assertEquals(new LinkedHashMap<String, Float>(), config
99         .get(ConfigurationKeys.FIELD_BOOST_MAP));
100     LinkedHashMap<String, Float> fieldBoostMap = new LinkedHashMap<String, Float>();
101     fieldBoostMap.put("test", 0.3f);
102     fieldBoostMapAttr.setFieldBoostMap(fieldBoostMap);
103     Assert.assertEquals(fieldBoostMap, fieldBoostMapAttr.getFieldBoostMap());
104     Assert.assertEquals(fieldBoostMap, config
105         .get(ConfigurationKeys.FIELD_BOOST_MAP));
106
107     FieldDateResolutionMapAttribute fieldDateResolutionMapAttr = config
108         .addAttribute(FieldDateResolutionMapAttribute.class);
109
110     Assert.assertEquals(new HashMap<CharSequence, DateTools.Resolution>(),
111         fieldDateResolutionMapAttr.getFieldDateResolutionMap());
112     Assert.assertEquals(new HashMap<CharSequence, DateTools.Resolution>(),
113         config.get(ConfigurationKeys.FIELD_DATE_RESOLUTION_MAP));
114     HashMap<CharSequence, DateTools.Resolution> fieldDateResMap = new HashMap<CharSequence, DateTools.Resolution>();
115     fieldDateResMap.put("test", DateTools.Resolution.HOUR);
116     fieldDateResolutionMapAttr.setFieldDateResolutionMap(fieldDateResMap);
117     Assert.assertEquals(fieldDateResMap, fieldDateResolutionMapAttr.getFieldDateResolutionMap());
118     Assert.assertEquals(fieldDateResMap, config
119         .get(ConfigurationKeys.FIELD_DATE_RESOLUTION_MAP));
120
121     LocaleAttribute localeAttr = config.addAttribute(LocaleAttribute.class);
122
123     Assert.assertEquals(Locale.getDefault(), localeAttr.getLocale());
124     Assert.assertEquals(Locale.getDefault(), config
125         .get(ConfigurationKeys.LOCALE));
126     Locale locale = Locale.CHINA;
127     localeAttr.setLocale(locale);
128     Assert.assertEquals(locale, localeAttr.getLocale());
129     Assert.assertEquals(locale, config.get(ConfigurationKeys.LOCALE));
130
131     LowercaseExpandedTermsAttribute lowercaseExpandedTermsAttr = config
132         .addAttribute(LowercaseExpandedTermsAttribute.class);
133
134     Assert.assertEquals(true, lowercaseExpandedTermsAttr
135         .isLowercaseExpandedTerms());
136     Assert.assertEquals(true, config.get(
137         ConfigurationKeys.LOWERCASE_EXPANDED_TERMS).booleanValue());
138     boolean lowercaseEnabled = false;
139     lowercaseExpandedTermsAttr.setLowercaseExpandedTerms(lowercaseEnabled);
140     Assert.assertEquals(lowercaseEnabled, lowercaseExpandedTermsAttr
141         .isLowercaseExpandedTerms());
142     Assert.assertEquals(lowercaseEnabled, config.get(
143         ConfigurationKeys.LOWERCASE_EXPANDED_TERMS).booleanValue());
144
145     MultiTermRewriteMethodAttribute multiTermRewriteMethodAttr = config
146         .addAttribute(MultiTermRewriteMethodAttribute.class);
147
148     Assert
149         .assertTrue(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT == multiTermRewriteMethodAttr
150             .getMultiTermRewriteMethod());
151     Assert
152         .assertTrue(MultiTermQuery.CONSTANT_SCORE_AUTO_REWRITE_DEFAULT == config
153             .get(ConfigurationKeys.MULTI_TERM_REWRITE_METHOD));
154     MultiTermQuery.RewriteMethod rewriteMethod = MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE;
155     multiTermRewriteMethodAttr.setMultiTermRewriteMethod(rewriteMethod);
156     Assert.assertTrue(rewriteMethod == multiTermRewriteMethodAttr
157         .getMultiTermRewriteMethod());
158     Assert.assertTrue(rewriteMethod == config
159         .get(ConfigurationKeys.MULTI_TERM_REWRITE_METHOD));
160
161     PositionIncrementsAttribute positionIncrementsAttr = config
162         .addAttribute(PositionIncrementsAttribute.class);
163
164     Assert.assertEquals(false, positionIncrementsAttr
165         .isPositionIncrementsEnabled());
166     Assert.assertEquals(false, config.get(
167         ConfigurationKeys.ENABLE_POSITION_INCREMENTS).booleanValue());
168     boolean posIncrEnabled = true;
169     positionIncrementsAttr.setPositionIncrementsEnabled(posIncrEnabled);
170     Assert.assertEquals(posIncrEnabled, positionIncrementsAttr
171         .isPositionIncrementsEnabled());
172     Assert.assertEquals(posIncrEnabled, config.get(
173         ConfigurationKeys.ENABLE_POSITION_INCREMENTS).booleanValue());
174
175     RangeCollatorAttribute rangeCollatorAttr = config
176         .addAttribute(RangeCollatorAttribute.class);
177
178     Assert.assertTrue(null == rangeCollatorAttr.getRangeCollator());
179     Assert.assertTrue(null == config.get(ConfigurationKeys.RANGE_COLLATOR));
180     Collator collator = new Collator() {
181
182       @Override
183       public int compare(String arg0, String arg1) {
184         return 0;
185       }
186
187       @Override
188       public CollationKey getCollationKey(String arg0) {
189         return null;
190       }
191
192       @Override
193       public int hashCode() {
194         return 0;
195       }
196
197     };
198     rangeCollatorAttr.setDateResolution(collator);
199     Assert.assertTrue(collator == rangeCollatorAttr.getRangeCollator());
200     Assert.assertTrue(collator == config.get(ConfigurationKeys.RANGE_COLLATOR));
201
202     BoostAttribute boostAttr = config.addAttribute(BoostAttribute.class);
203
204     Assert.assertEquals(1.0f, boostAttr.getBoost());
205     Assert.assertEquals(1.0f, config.get(ConfigurationKeys.BOOST).floatValue());
206     float boost = 2.0f;
207     boostAttr.setBoost(boost);
208     Assert.assertEquals(boost, boostAttr.getBoost());
209     Assert
210         .assertEquals(boost, config.get(ConfigurationKeys.BOOST).floatValue());
211
212     FuzzyAttribute fuzzyAttributeAttr = config
213         .addAttribute(FuzzyAttribute.class);
214
215     Assert.assertEquals(FuzzyQuery.defaultMinSimilarity, fuzzyAttributeAttr
216         .getFuzzyMinSimilarity());
217     Assert.assertEquals(FuzzyQuery.defaultPrefixLength, fuzzyAttributeAttr
218         .getPrefixLength());
219     Assert.assertEquals(FuzzyQuery.defaultMinSimilarity, config.get(
220         ConfigurationKeys.FUZZY_CONFIG).getMinSimilarity());
221     Assert.assertEquals(FuzzyQuery.defaultPrefixLength, config.get(
222         ConfigurationKeys.FUZZY_CONFIG).getPrefixLength());
223     int prefixLength = 232;
224     float minSim = 23.923f;
225     fuzzyAttributeAttr.setFuzzyMinSimilarity(minSim);
226     fuzzyAttributeAttr.setPrefixLength(prefixLength);
227     Assert.assertEquals(minSim, fuzzyAttributeAttr.getFuzzyMinSimilarity());
228     Assert.assertEquals(prefixLength, fuzzyAttributeAttr.getPrefixLength());
229     Assert.assertEquals(minSim, config.get(ConfigurationKeys.FUZZY_CONFIG)
230         .getMinSimilarity());
231     Assert.assertEquals(prefixLength, config
232         .get(ConfigurationKeys.FUZZY_CONFIG).getPrefixLength());
233
234     DefaultOperatorAttribute defaultOpAttr = config
235         .addAttribute(DefaultOperatorAttribute.class);
236
237     Assert.assertEquals(DefaultOperatorAttribute.Operator.OR, defaultOpAttr
238         .getOperator());
239     Assert.assertEquals(Operator.OR, config
240         .get(ConfigurationKeys.DEFAULT_OPERATOR));
241     DefaultOperatorAttribute.Operator oldOperator = DefaultOperatorAttribute.Operator.AND;
242     Operator newOperator = Operator.AND;
243     defaultOpAttr.setOperator(oldOperator);
244     Assert.assertEquals(oldOperator, defaultOpAttr.getOperator());
245     Assert.assertEquals(newOperator, config
246         .get(ConfigurationKeys.DEFAULT_OPERATOR));
247
248   }
249
250 }