package com.vaadin.tests.components;
import org.junit.Assert;
import org.junit.Test;
import com.vaadin.data.HierarchyData;
import com.vaadin.data.provider.InMemoryHierarchicalDataProvider;
import com.vaadin.event.CollapseEvent;
import com.vaadin.event.CollapseEvent.CollapseListener;
import com.vaadin.event.ExpandEvent;
import com.vaadin.event.ExpandEvent.ExpandListener;
import com.vaadin.ui.Tree;
public class TreeTest {
private static class TreeCollapseExpandListener
implements ExpandListener<String>, CollapseListener<String> {
private boolean collapsed = false;
private boolean expanded = false;
private final Tree<String> tree;
public TreeCollapseExpandListener(Tree<String> tree) {
this.tree = tree;
}
@Override
public void itemCollapse(CollapseEvent<String> event) {
Assert.assertEquals("Source component was incorrect", tree,
event.getComponent());
Assert.assertFalse("Multiple collapse events", collapsed);
collapsed = true;
}
@Override
public void itemExpand(ExpandEvent<String> event) {
Assert.assertEquals("Source component was incorrect", tree,
event.getComponent());
Assert.assertFalse("Multiple expand events", expanded);
expanded = true;
}
public boolean isExpanded() {
return expanded;
}
public boolean isCollapsed() {
return collapsed;
}
}
@Test
public void event_source_is_tree() {
Tree<String> tree = new Tree<>();
HierarchyData<String> hierarchyData = new HierarchyData<>();
hierarchyData.addItem(null, "Foo");
hierarchyData.addItem("Foo", "Bar");
hierarchyData.addItem("Foo", "Baz");
tree.setDataProvider(
new InMemoryHierarchicalDataProvider<>(hierarchyData));
TreeCollapseExpandListener listener = new TreeCollapseExpandListener(
tree);
tree.addExpandListener(listener);
tree.addCollapseListener(listener);
Assert.assertFalse(listener.isExpanded());
tree.expand("Foo");
Assert.assertTrue("Expand event not fired", listener.isExpanded());
Assert.assertFalse(listener.isCollapsed());
tree.collapse("Foo");
Assert.assertTrue("Collapse event not fired", listener.isCollapsed());
}
}