/** * Copyright (c) 2015 Lemur Consulting Ltd. * <p/> * Licensed 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 * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * 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. */ package uk.co.flax.biosolr; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.SortedSet; import java.util.TreeSet; import org.junit.Test; /** * Unit tests for the Tree Facet Field class. * * @author mlp */ public class TreeFacetFieldTest { @Test public void hasChildren_nullHierarchy() { TreeFacetField test = new TreeFacetField("label", "value", 0, 0, null); assertFalse(test.hasChildren()); } @Test public void hasChildren_emptyHierarchy() { final SortedSet<TreeFacetField> hierarchy = new TreeSet<>(); TreeFacetField test = new TreeFacetField("label", "value", 0, 0, hierarchy); assertFalse(test.hasChildren()); } @Test public void hasChildren_withHierarchy() { final SortedSet<TreeFacetField> hierarchy = new TreeSet<>(); final TreeFacetField child = new TreeFacetField("label", "value", 0, 0, null); hierarchy.add(child); TreeFacetField test = new TreeFacetField("label", "value", 0, 0, hierarchy); assertTrue(test.hasChildren()); } @Test public void recalculateChildCount_nullHierarchy() { TreeFacetField test = new TreeFacetField("label", "value", 0, 0, null); assertEquals(0, test.recalculateChildCount()); } @Test public void recalculateChildCount_withHierarchy() { // Create three-level hierarchy final SortedSet<TreeFacetField> subHierarchy = new TreeSet<>(); final TreeFacetField gChild1 = new TreeFacetField("Grandchild1", "gc1", 2, 0, null); final TreeFacetField gChild2 = new TreeFacetField("Grandchild2", "gc2", 2, 0, null); subHierarchy.add(gChild1); subHierarchy.add(gChild2); final SortedSet<TreeFacetField> hierarchy = new TreeSet<>(); final TreeFacetField child = new TreeFacetField("Child", "c1", 2, 0, subHierarchy); hierarchy.add(child); TreeFacetField test = new TreeFacetField("label", "value", 2, 0, hierarchy); assertEquals(8, test.recalculateChildCount()); assertEquals(8, test.getTotal()); // Check the child node's counts - should also have updated assertEquals(4, child.getChildCount()); assertEquals(6, child.getTotal()); // Check the grandchild nodes' counts - these should not have changed assertEquals(0, gChild1.getChildCount()); assertEquals(2, gChild1.getTotal()); assertEquals(0, gChild2.getChildCount()); assertEquals(2, gChild2.getTotal()); } // // Tests for compareTo() // @Test public void compareTo_null() { final TreeFacetField tff = new TreeFacetField("A", "a", 1, 2, null); assertTrue(tff.compareTo(null) > 0); } @Test public void compareTo_identical() { final TreeFacetField tff = new TreeFacetField("A", "a", 1, 2, null); final TreeFacetField other = new TreeFacetField("A", "a", 1, 2, null); assertTrue(tff.compareTo(other) == 0); assertTrue(other.compareTo(tff) == 0); } @Test public void compareTo_total() { final TreeFacetField tff = new TreeFacetField("A", "a", 1, 2, null); final TreeFacetField other = new TreeFacetField("A", "a", 1, 3, null); assertTrue(tff.compareTo(other) < 0); assertTrue(other.compareTo(tff) > 0); } @Test public void compareTo_nodeCount() { final TreeFacetField tff = new TreeFacetField("A", "a", 1, 2, null); final TreeFacetField other = new TreeFacetField("A", "a", 2, 1, null); assertTrue(tff.compareTo(other) < 0); assertTrue(other.compareTo(tff) > 0); final TreeFacetField other2 = new TreeFacetField("A", "a", 3, 0, null); assertTrue(tff.compareTo(other2) < 0); assertTrue(other2.compareTo(tff) > 0); } @Test public void compareTo_value() { final TreeFacetField tff = new TreeFacetField("A", "a", 1, 2, null); final TreeFacetField other = new TreeFacetField("A", "b", 1, 2, null); assertTrue(tff.compareTo(other) < 0); assertTrue(other.compareTo(tff) > 0); } @Test public void compareTo_blankLabel() { final TreeFacetField tff = new TreeFacetField(null, "a", 1, 2, null); final TreeFacetField other = new TreeFacetField("A", "a", 1, 2, null); assertTrue(tff.compareTo(other) == 0); assertTrue(other.compareTo(tff) == 0); } @Test public void compareTo_byLabel() { final TreeFacetField tff = new TreeFacetField("A", "a", 1, 2, null); final TreeFacetField other = new TreeFacetField("B", "a", 1, 2, null); assertTrue(tff.compareTo(other) < 0); assertTrue(other.compareTo(tff) > 0); } }