pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / contrib / queryparser / src / test / org / apache / lucene / queryParser / TestAttributes.java
diff --git a/lucene-java-3.5.0/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/TestAttributes.java b/lucene-java-3.5.0/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/TestAttributes.java
new file mode 100644 (file)
index 0000000..5437cb0
--- /dev/null
@@ -0,0 +1,250 @@
+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));
+
+  }
+
+}