--- /dev/null
+package org.apache.lucene.facet.index.params;
+
+import org.apache.lucene.index.Term;
+import org.junit.Test;
+
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.facet.index.params.CategoryListParams;
+
+/**
+ * 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.
+ */
+
+public class CategoryListParamsTest extends LuceneTestCase {
+
+ @Test
+ public void testDefaultSettings() {
+ CategoryListParams clp = new CategoryListParams();
+ assertEquals("wrong default term", new Term("$facets", "$fulltree$"), clp.getTerm());
+ assertEquals("unexpected default encoder", "Sorting (Unique (DGap (VInt8)))", clp.createEncoder().toString());
+ assertEquals("unexpected default decoder", "DGap (VInt8)", clp.createEncoder().createMatchingDecoder().toString());
+ }
+
+ /**
+ * Test that the {@link CategoryListParams#hashCode()} and
+ * {@link CategoryListParams#equals(Object)} are consistent.
+ */
+ @Test
+ public void testIdentity() {
+ CategoryListParams clParams1 = new CategoryListParams();
+ // Assert identity is correct - a CategoryListParams equals itself.
+ assertEquals("A CategoryListParams object does not equal itself.",
+ clParams1, clParams1);
+ // For completeness, the object's hashcode equals itself
+ assertEquals("A CategoryListParams object's hashCode does not equal itself.",
+ clParams1.hashCode(), clParams1.hashCode());
+ }
+
+ /**
+ * Test that CategoryListParams behave correctly when compared against each
+ * other.
+ */
+ @Test
+ public void testIdentityConsistency() {
+ // Test 2 CategoryListParams with the default parameter
+ CategoryListParams clParams1 = new CategoryListParams();
+ CategoryListParams clParams2 = new CategoryListParams();
+ assertEquals(
+ "2 CategoryListParams with the same default term should equal each other.",
+ clParams1, clParams2);
+ assertEquals("2 CategoryListParams with the same default term should have the same hashcode",
+ clParams1.hashCode(), clParams2.hashCode());
+
+ // Test 2 CategoryListParams with the same specified Term
+ clParams1 = new CategoryListParams(new Term("test"));
+ clParams2 = new CategoryListParams(new Term("test"));
+ assertEquals(
+ "2 CategoryListParams with the same term should equal each other.",
+ clParams1, clParams2);
+ assertEquals("2 CategoryListParams with the same term should have the same hashcode",
+ clParams1.hashCode(), clParams2.hashCode());
+
+ // Test 2 CategoryListParams with DIFFERENT terms
+ clParams1 = new CategoryListParams(new Term("test1"));
+ clParams2 = new CategoryListParams(new Term("test2"));
+ assertFalse(
+ "2 CategoryListParams with the different terms should NOT equal each other.",
+ clParams1.equals(clParams2));
+ assertFalse(
+ "2 CategoryListParams with the different terms should NOT have the same hashcode.",
+ clParams1.hashCode() == clParams2.hashCode());
+ }
+
+}