Package com.vaadin.tests.server.component.tree

Source Code of com.vaadin.tests.server.component.tree.TreeTest

package com.vaadin.tests.server.component.tree;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import java.lang.reflect.Field;
import java.util.HashSet;

import org.junit.Before;
import org.junit.Test;

import com.vaadin.data.Container;
import com.vaadin.data.util.HierarchicalContainer;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.ui.Tree;

public class TreeTest {

    private Tree tree;
    private Tree tree2;
    private Tree tree3;
    private Tree tree4;

    @Before
    public void setUp() {
        tree = new Tree();
        tree.addItem("parent");
        tree.addItem("child");
        tree.setChildrenAllowed("parent", true);
        tree.setParent("child", "parent");

        tree2 = new Tree("Caption");
        tree2.addItem("parent");
        tree2.addItem("child");
        tree2.setChildrenAllowed("parent", true);
        tree2.setParent("child", "parent");

        tree3 = new Tree("Caption", null);
        tree3.addItem("parent");
        tree3.addItem("child");
        tree3.setChildrenAllowed("parent", true);
        tree3.setParent("child", "parent");

        tree4 = new Tree("Caption", new IndexedContainer());
        tree4.addItem("parent");
        tree4.addItem("child");
        tree4.setChildrenAllowed("parent", true);
        tree4.setParent("child", "parent");
    }

    @Test
    public void testRemoveChildren() {
        assertTrue(tree.hasChildren("parent"));
        tree.removeItem("child");
        assertFalse(tree.hasChildren("parent"));

        assertTrue(tree2.hasChildren("parent"));
        tree2.removeItem("child");
        assertFalse(tree2.hasChildren("parent"));

        assertTrue(tree3.hasChildren("parent"));
        tree3.removeItem("child");
        assertFalse(tree3.hasChildren("parent"));

        assertTrue(tree4.hasChildren("parent"));
        tree4.removeItem("child");
        assertFalse(tree4.hasChildren("parent"));
    }

    @Test
    public void testContainerTypeIsHierarchical() {
        assertTrue(HierarchicalContainer.class.isAssignableFrom(tree
                .getContainerDataSource().getClass()));
        assertTrue(HierarchicalContainer.class.isAssignableFrom(tree2
                .getContainerDataSource().getClass()));
        assertTrue(HierarchicalContainer.class.isAssignableFrom(tree3
                .getContainerDataSource().getClass()));
        assertFalse(HierarchicalContainer.class.isAssignableFrom(tree4
                .getContainerDataSource().getClass()));
        assertTrue(Container.Hierarchical.class.isAssignableFrom(tree4
                .getContainerDataSource().getClass()));
    }

    @Test
    public void testRemoveExpandedItems() throws Exception {
        tree.expandItem("parent");
        tree.expandItem("child");

        Field expandedField = tree.getClass().getDeclaredField("expanded");
        Field expandedItemIdField = tree.getClass().getDeclaredField(
                "expandedItemId");

        expandedField.setAccessible(true);
        expandedItemIdField.setAccessible(true);

        HashSet<Object> expanded = (HashSet<Object>) expandedField.get(tree);
        Object expandedItemId = expandedItemIdField.get(tree);

        assertEquals(2, expanded.size());
        assertTrue("Contains parent", expanded.contains("parent"));
        assertTrue("Contains child", expanded.contains("child"));
        assertEquals("child", expandedItemId);

        tree.removeItem("parent");

        expanded = (HashSet<Object>) expandedField.get(tree);
        expandedItemId = expandedItemIdField.get(tree);

        assertEquals(1, expanded.size());
        assertTrue("Contains child", expanded.contains("child"));
        assertEquals("child", expandedItemId);

        tree.removeItem("child");

        expanded = (HashSet<Object>) expandedField.get(tree);
        expandedItemId = expandedItemIdField.get(tree);

        assertEquals(0, expanded.size());
        assertNull(expandedItemId);
    }

    @Test
    public void testRemoveExpandedItemsOnContainerChange() throws Exception {
        tree.expandItem("parent");
        tree.expandItem("child");

        tree.setContainerDataSource(new HierarchicalContainer());

        Field expandedField = tree.getClass().getDeclaredField("expanded");
        Field expandedItemIdField = tree.getClass().getDeclaredField(
                "expandedItemId");

        expandedField.setAccessible(true);
        expandedItemIdField.setAccessible(true);

        HashSet<Object> expanded = (HashSet<Object>) expandedField.get(tree);
        assertEquals(0, expanded.size());

        Object expandedItemId = expandedItemIdField.get(tree);
        assertNull(expandedItemId);
    }

}
TOP

Related Classes of com.vaadin.tests.server.component.tree.TreeTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.