+++ /dev/null
-package org.apache.lucene.facet.index;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.Iterator;
-
-import org.junit.Test;
-
-import org.apache.lucene.facet.FacetException;
-import org.apache.lucene.facet.enhancements.association.AssociationIntProperty;
-import org.apache.lucene.facet.enhancements.association.AssociationProperty;
-import org.apache.lucene.facet.index.CategoryContainer;
-import org.apache.lucene.facet.index.attributes.CategoryAttribute;
-import org.apache.lucene.facet.index.attributes.CategoryAttributeImpl;
-import org.apache.lucene.facet.index.streaming.CategoryAttributesStream;
-import org.apache.lucene.facet.taxonomy.CategoryPath;
-
-/**
- * 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 CategoryContainerTest extends CategoryContainerTestBase {
-
- @Test
- public void basicTest() {
- assertEquals("Wrong number of categories in the container", 3,
- categoryContainer.size());
-
- categoryContainer.clear();
- assertEquals("Container should not contain categories after clear", 0,
- categoryContainer.size());
- }
-
- @Test
- public void testIterator() throws FacetException {
- Iterator<CategoryAttribute> iterator = categoryContainer.iterator();
-
- // count the number of tokens
- int nCategories;
- for (nCategories = 0; iterator.hasNext(); nCategories++) {
- iterator.next();
- }
- assertEquals("Wrong number of tokens", 3, nCategories);
- }
-
- @Test
- public void testExistingNewCategoryWithProperty() throws FacetException {
- categoryContainer.addCategory(new CategoryPath("five", "six"),
- new DummyProperty());
- Iterator<CategoryAttribute> iterator = categoryContainer.iterator();
-
- // count the number of tokens, and check there is one DummyAttribute
- int nCategories;
- int nProperties = 0;
- for (nCategories = 0; iterator.hasNext(); nCategories++) {
- CategoryAttribute attribute = iterator.next();
- if (attribute.getProperty(DummyProperty.class) != null) {
- nProperties++;
- }
- }
- assertEquals("Wrong number of tokens", 3, nCategories);
- assertEquals("Wrong number of tokens with properties", 1, nProperties);
- }
-
- @Test
- public void testMultipleCategoriesWithProperties() throws FacetException {
- AssociationProperty associationProperty = new AssociationIntProperty(
- 49);
- categoryContainer.addCategory(new CategoryPath("five", "six"),
- new DummyProperty(), associationProperty);
- categoryContainer.addCategory(new CategoryPath("seven", "eight"),
- new DummyProperty());
- associationProperty = new AssociationIntProperty(123);
- categoryContainer.addCategory(new CategoryPath("nine"),
- associationProperty, new DummyProperty());
- Iterator<CategoryAttribute> iterator = categoryContainer.iterator();
-
- // count the number of tokens, and check there is one DummyAttribute
- int nCategories;
- int nDummyAttributes = 0;
- int nAssocAttributes = 0;
- for (nCategories = 0; iterator.hasNext(); nCategories++) {
- CategoryAttribute attribute = iterator.next();
- if (attribute.getProperty(DummyProperty.class) != null) {
- nDummyAttributes++;
- }
- if (attribute.getProperty(AssociationIntProperty.class) != null) {
- nAssocAttributes++;
- }
- }
- assertEquals("Wrong number of tokens", 5, nCategories);
- assertEquals("Wrong number of tokens with dummy properties", 3,
- nDummyAttributes);
- assertEquals("Wrong number of tokens with association properties", 2,
- nAssocAttributes);
- }
-
- @Test
- public void testAddNewCategoryWithProperty() throws FacetException {
- categoryContainer.addCategory(new CategoryPath("seven", "eight"),
- new DummyProperty());
- Iterator<CategoryAttribute> iterator = categoryContainer.iterator();
-
- // count the number of tokens, and check there is one DummyAttribute
- int nCategories;
- int nProperties = 0;
- for (nCategories = 0; iterator.hasNext(); nCategories++) {
- CategoryAttribute attribute = iterator.next();
- if (attribute.getProperty(DummyProperty.class) != null) {
- nProperties++;
- }
- }
- assertEquals("Wrong number of tokens", 4, nCategories);
- assertEquals("Wrong number of tokens with properties", 1, nProperties);
- }
-
- /**
- * Test addition of {@link CategoryAttribute} object without properties to a
- * {@link CategoryContainer}.
- *
- * @throws FacetException
- */
- @Test
- public void testAddCategoryAttributeWithoutProperties()
- throws FacetException {
- CategoryAttribute newCA = new CategoryAttributeImpl(new CategoryPath(
- "seven", "eight"));
- categoryContainer.addCategory(newCA);
- }
-
- /**
- * Test addition of {@link CategoryAttribute} object with property to a
- * {@link CategoryContainer}.
- *
- * @throws FacetException
- */
- @Test
- public void testAddCategoryAttributeWithProperty() throws FacetException {
- CategoryAttribute newCA = new CategoryAttributeImpl(new CategoryPath(
- "seven", "eight"));
- newCA.addProperty(new DummyProperty());
- categoryContainer.addCategory(newCA);
- Iterator<CategoryAttribute> iterator = categoryContainer.iterator();
-
- // count the number of tokens, and check there is one DummyAttribute
- int nCategories;
- int nProperties = 0;
- for (nCategories = 0; iterator.hasNext(); nCategories++) {
- CategoryAttribute attribute = iterator.next();
- if (attribute.getProperty(DummyProperty.class) != null) {
- nProperties++;
- }
- }
- assertEquals("Wrong number of tokens", 4, nCategories);
- assertEquals("Wrong number of tokens with properties", 1, nProperties);
- }
-
- /**
- * Verifies that a {@link CategoryAttributesStream} can be constructed from
- * {@link CategoryContainer} and produce the correct number of tokens.
- *
- * @throws IOException
- */
- @Test
- public void testCategoryAttributesStream() throws IOException {
- CategoryAttributesStream stream = new CategoryAttributesStream(
- categoryContainer);
- // count the number of tokens
- int nTokens;
- for (nTokens = 0; stream.incrementToken(); nTokens++) {
- }
- assertEquals("Wrong number of tokens", 3, nTokens);
- }
-
- /**
- * Test that {@link CategoryContainer} merges properties.
- *
- * @throws FacetException
- */
- @Test
- public void testCategoryAttributeMerge() throws FacetException {
- categoryContainer.addCategory(initialCatgeories[0],
- new AssociationIntProperty(2));
- categoryContainer.addCategory(initialCatgeories[0],
- new AssociationIntProperty(15));
-
- Iterator<CategoryAttribute> iterator = categoryContainer.iterator();
-
- int nCategories;
- int nAssociations = 0;
- for (nCategories = 0; iterator.hasNext(); nCategories++) {
- CategoryAttribute ca = iterator.next();
- AssociationProperty aa = (AssociationProperty) ca
- .getProperty(AssociationIntProperty.class);
- if (aa != null) {
- assertEquals("Wrong association value", 17, aa.getAssociation());
- nAssociations++;
- }
- }
- assertEquals("Wrong number of tokens", 3, nCategories);
- assertEquals("Wrong number of tokens with associations", 1,
- nAssociations);
- }
-
- @Test
- public void testSerialization() throws Exception {
- AssociationProperty associationProperty = new AssociationIntProperty(
- 49);
- categoryContainer.addCategory(new CategoryPath("five", "six"),
- new DummyProperty(), associationProperty);
- categoryContainer.addCategory(new CategoryPath("seven", "eight"),
- new DummyProperty());
- associationProperty = new AssociationIntProperty(123);
- categoryContainer.addCategory(new CategoryPath("nine"),
- associationProperty, new DummyProperty());
-
- ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
- ObjectOutputStream out = new ObjectOutputStream(baos);
- out.writeObject(categoryContainer);
- out.close();
-
- ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
- ObjectInputStream in = new ObjectInputStream(bais);
- assertEquals(
- "Original and deserialized CategoryContainer are different",
- categoryContainer, in.readObject());
- }
-}
\ No newline at end of file