/*******************************************************************************
* Copyright (c) 2006 IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse
*******************************************************************************/
package org.eclipse.linuxtools.systemtap.structures.tests;
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 org.eclipse.linuxtools.systemtap.structures.TreeNode;
import org.junit.Before;
import org.junit.Test;
public class TreeNodeTest {
@Before
public void setUp() {
data = new StringBuilder("Object");
data2 = "Data";
s = "String";
t = new TreeNode(data, s, false);
child = new TreeNode(data2, true);
child2 = new TreeNode(data, s, false);
t.add(child);
t.add(child2);
}
@Test
public void testTreeNode() {
String d1 = "One";
String d2 = "two";
String s1 = "one";
TreeNode t1 = new TreeNode(d1, s1, false);
assertEquals("Create child count", 0, t1.getChildCount());
assertEquals("Create child string", s1, t1.toString());
assertEquals("Create child data", d1, t1.getData());
assertFalse("Create child clickable", t1.isClickable());
TreeNode t2 = new TreeNode(d2, true);
assertEquals("Create child count", 0, t2.getChildCount());
assertTrue("Create child string", t2.toString().equals(d2));
assertEquals("Create child data", d2, t2.getData());
assertTrue("Create child clickable", t2.isClickable());
TreeNode t3 = new TreeNode(null, true);
assertEquals("Create child count", 0, t3.getChildCount());
assertEquals("Create child string", null, t3.toString());
assertEquals("Create child data", null, t3.getData());
assertTrue("Create child clickable", t3.isClickable());
TreeNode t4 = new TreeNode(d1, s1, false);
assertEquals("Create child count", 0, t4.getChildCount());
assertEquals("Create child string", s1, t4.toString());
assertEquals("Create child data", d1, t4.getData());
assertFalse("Create child clickable", t4.isClickable());
}
@Test
public void testAdd() {
t.add(new TreeNode("One", "tne", false));
assertEquals("Add child", 3, t.getChildCount());
t.add(new TreeNode("two", false));
assertEquals("Add child2", 4, t.getChildCount());
}
@Test
public void testAddAt() {
TreeNode test1 = new TreeNode("one", false);
t.addAt(test1, 0);
assertEquals("Child added to front", test1, t.getChildAt(0));
assertEquals("Child correctly added", 3, t.getChildCount());
TreeNode test2 = new TreeNode("two", false);
t.addAt(test2, 1);
assertEquals("Child added to middle", test2, t.getChildAt(1));
assertEquals("Child correctly added", 4, t.getChildCount());
TreeNode test3 = new TreeNode("three", false);
t.addAt(test3, 3);
assertEquals("Child added to end", test3, t.getChildAt(3));
assertEquals("Child correctly added", 5, t.getChildCount());
TreeNode test4 = new TreeNode("four", false);
t.addAt(test4, 30);
assertEquals("Child added to end", test4, t.getChildAt(5));
assertEquals("Child correctly added", 6, t.getChildCount());
}
@Test
public void testGetChildAt() {
TreeNode child1 = new TreeNode("1", false);
t.add(child1);
TreeNode child2 = new TreeNode("2", false);
t.add(child2);
TreeNode c = t.getChildAt(0);
assertEquals("Retreive first child from tree", child, c);
c = t.getChildAt(2);
assertEquals("Retreive middle child from tree", child1, c);
c = t.getChildAt(3);
assertEquals("Retreive last child from tree", child2, c);
assertNull("No child here", t.getChildAt(10));
}
@Test
public void testGetChildCount() {
assertEquals("Tree child count", 2, t.getChildCount());
assertEquals("Child child count", 0, t.getChildAt(0).getChildCount());
}
@Test
public void testGetData() {
assertEquals("Correct data", data, t.getData());
assertEquals("Correct data2", data2, t.getChildAt(0).getData());
}
@Test
public void testIsClickable() {
assertFalse("Nonclickable root", t.isClickable());
assertTrue("Clickable child", t.getChildAt(0).isClickable());
}
@Test
public void testRemove() {
TreeNode child1 = new TreeNode("1", false);
t.add(child1);
TreeNode child2 = new TreeNode("2", false);
t.add(child2);
TreeNode child3 = new TreeNode("3", false);
t.add(child3);
assertEquals("Full tree before remove", 5, t.getChildCount());
assertTrue(t.remove(1));
assertEquals("Remove middle child from tree", 4, t.getChildCount());
assertTrue(t.remove(0));
assertEquals("Remove first child from tree", 3, t.getChildCount());
assertTrue(t.remove(1));
assertEquals("Remove last child from tree", 2, t.getChildCount());
assertFalse(t.remove(10));
assertEquals("Remove IndexOutOfBounds", 2, t.getChildCount());
}
@Test
public void testRemoveAll() {
t.add(new TreeNode("Child", false));
assertTrue(t.removeAll());
assertEquals("No children", 0, t.getChildCount());
assertTrue(t.removeAll());
assertEquals("Still no children", 0, t.getChildCount());
}
@Test
public void testSetData() {
Object o = "asdf";
t.setData(o);
assertEquals("Replaced data", o, t.getData());
String o1 = "aaaa";
t.setData(o1);
assertEquals("Replaced data with string", o1, t.getData());
}
@Test
public void testSetDisplay() {
String s1 = "aaaa";
t.setDisplay(s1);
assertEquals("Replaced display", s1, t.toString());
}
@Test
public void testSortTree() {
TreeNode child1 = new TreeNode("2", false);
t.add(child1);
TreeNode child2 = new TreeNode("1", false);
t.add(child2);
TreeNode child3 = new TreeNode("3", false);
t.add(child3);
t.sortTree();
assertEquals("Same number of children", 5, t.getChildCount());
assertEquals("Sorted first node correct", child2, t.getChildAt(0));
assertEquals("Sorted last node correct", child, t.getChildAt(3));
assertEquals("Sorted middle correct", child1, t.getChildAt(1));
}
@Test
public void testSortLevel() {
TreeNode child1 = new TreeNode("2", false);
t.add(child1);
TreeNode child2 = new TreeNode("1", false);
t.add(child2);
TreeNode child3 = new TreeNode("3", false);
t.add(child3);
t.sortLevel();
assertEquals("Same number of children", 5, t.getChildCount());
assertEquals("Sorted first node correct", child2, t.getChildAt(0));
assertEquals("Sorted last node correct", child, t.getChildAt(3));
assertEquals("Sorted middle correct", child1, t.getChildAt(1));
}
@Test
public void testToString() {
assertEquals("Object to string", data2, child.toString());
assertEquals("Dispaly to string", s, t.toString());
}
@Test
public void testDispose() {
t.dispose();
}
private TreeNode t;
private TreeNode child;
private TreeNode child2;
private Object data;
private String data2;
private String s;
}