/**
*
*/
package org.jdesktop.swingx.treetable;
import java.util.Enumeration;
import javax.swing.tree.DefaultMutableTreeNode;
import junit.framework.TestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/**
*
*/
@RunWith(JUnit4.class)
public class DefaultMutableTreeTableNodeUnitTest extends TestCase {
@Test
public void testAdd() {
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
assertEquals(root.getChildCount(), 0);
root.add(new DefaultMutableTreeTableNode("a"));
assertEquals(root.getChildCount(), 1);
root.add(new DefaultMutableTreeTableNode("a"));
assertEquals(root.getChildCount(), 2);
}
@Test
public void testAddDoesNotDuplicate() {
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
assertEquals(root.getChildCount(), 0);
DefaultMutableTreeTableNode a = new DefaultMutableTreeTableNode("a");
root.add(a);
assertEquals(root.getChildCount(), 1);
root.add(a);
assertEquals(root.getChildCount(), 1);
}
@Test
public void testChildren() {
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
Enumeration<? extends MutableTreeTableNode> children = root.children();
while (children.hasMoreElements()) {
fail("This enumaration should have no elements");
}
DefaultMutableTreeTableNode a = new DefaultMutableTreeTableNode("a");
DefaultMutableTreeTableNode b = new DefaultMutableTreeTableNode("b");
DefaultMutableTreeTableNode c = new DefaultMutableTreeTableNode("c");
DefaultMutableTreeTableNode d = new DefaultMutableTreeTableNode("d");
root.add(a);
root.add(b);
root.add(c);
root.add(d);
children = root.children();
assertEquals(children.nextElement(), a);
assertEquals(children.nextElement(), b);
assertEquals(children.nextElement(), c);
assertEquals(children.nextElement(), d);
assertFalse(children.hasMoreElements());
}
@Test
public void testAllowsChildren() {
DefaultMutableTreeTableNode empty = new DefaultMutableTreeTableNode();
assertTrue(empty.getAllowsChildren());
empty.setAllowsChildren(!empty.getAllowsChildren());
assertFalse(empty.getAllowsChildren());
empty.setAllowsChildren(!empty.getAllowsChildren());
assertTrue(empty.getAllowsChildren());
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
assertTrue(root.getAllowsChildren());
root.setAllowsChildren(!root.getAllowsChildren());
assertFalse(root.getAllowsChildren());
root.setAllowsChildren(!root.getAllowsChildren());
assertTrue(root.getAllowsChildren());
DefaultMutableTreeTableNode a = new DefaultMutableTreeTableNode("a", true);
assertTrue(a.getAllowsChildren());
a.setAllowsChildren(!a.getAllowsChildren());
assertFalse(a.getAllowsChildren());
a.setAllowsChildren(!a.getAllowsChildren());
assertTrue(a.getAllowsChildren());
DefaultMutableTreeTableNode b = new DefaultMutableTreeTableNode("b", false);
assertFalse(b.getAllowsChildren());
b.setAllowsChildren(!b.getAllowsChildren());
assertTrue(b.getAllowsChildren());
b.setAllowsChildren(!b.getAllowsChildren());
assertFalse(b.getAllowsChildren());
}
@Test
public void testGetChildAt() {
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
try {
root.getChildAt(-1);
fail("expected IndexOutOfBoundsException");
} catch (IndexOutOfBoundsException e) {
//do nothing
}
try {
root.getChildAt(root.getChildCount());
fail("expected IndexOutOfBoundsException");
} catch (IndexOutOfBoundsException e) {
//do nothing
}
DefaultMutableTreeTableNode a = new DefaultMutableTreeTableNode("a");
DefaultMutableTreeTableNode b = new DefaultMutableTreeTableNode("b");
DefaultMutableTreeTableNode c = new DefaultMutableTreeTableNode("c");
DefaultMutableTreeTableNode d = new DefaultMutableTreeTableNode("d");
root.add(a);
root.add(b);
root.add(c);
root.add(d);
assertEquals(root.getChildAt(0), a);
assertEquals(root.getChildAt(1), b);
assertEquals(root.getChildAt(2), c);
assertEquals(root.getChildAt(3), d);
try {
root.getChildAt(root.getChildCount());
fail("expected IndexOutOfBoundsException");
} catch (IndexOutOfBoundsException e) {
//do nothing
}
}
@Test
public void testGetChildCount() {
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
assertEquals(root.getChildCount(), 0);
DefaultMutableTreeTableNode a = new DefaultMutableTreeTableNode("a");
root.add(a);
assertEquals(root.getChildCount(), 1);
DefaultMutableTreeTableNode b = new DefaultMutableTreeTableNode("b");
root.add(b);
assertEquals(root.getChildCount(), 2);
DefaultMutableTreeTableNode c = new DefaultMutableTreeTableNode("c");
root.add(c);
assertEquals(root.getChildCount(), 3);
DefaultMutableTreeTableNode d = new DefaultMutableTreeTableNode("d");
root.add(d);
assertEquals(root.getChildCount(), 4);
root.remove(a);
assertEquals(root.getChildCount(), 3);
root.remove(b);
assertEquals(root.getChildCount(), 2);
root.remove(c);
assertEquals(root.getChildCount(), 1);
root.remove(d);
assertEquals(root.getChildCount(), 0);
}
@Test
public void testGetIndex() {
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
assertEquals(root.getIndex(null), -1);
assertEquals(root.getIndex(new DefaultMutableTreeNode()), -1);
assertEquals(root.getIndex(new DefaultMutableTreeTableNode()), -1);
DefaultMutableTreeTableNode a = new DefaultMutableTreeTableNode("a");
root.add(a);
assertEquals(root.getIndex(a), 0);
DefaultMutableTreeTableNode b = new DefaultMutableTreeTableNode("b");
root.add(b);
assertEquals(root.getIndex(b), 1);
DefaultMutableTreeTableNode c = new DefaultMutableTreeTableNode("c");
root.add(c);
assertEquals(root.getIndex(c), 2);
DefaultMutableTreeTableNode d = new DefaultMutableTreeTableNode("d");
root.add(d);
assertEquals(root.getIndex(d), 3);
}
@Test
public void testGetParent() {
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
assertNull(root.getParent());
DefaultMutableTreeTableNode a = new DefaultMutableTreeTableNode("a");
a.setParent(root);
assertEquals(a.getParent(), root);
assertEquals(root.getChildAt(0), a);
DefaultMutableTreeTableNode b = new DefaultMutableTreeTableNode("b");
b.setParent(root);
assertEquals(b.getParent(), root);
assertEquals(root.getChildAt(1), b);
DefaultMutableTreeTableNode c = new DefaultMutableTreeTableNode("c");
c.setParent(root);
assertEquals(c.getParent(), root);
assertEquals(root.getChildAt(2), c);
DefaultMutableTreeTableNode d = new DefaultMutableTreeTableNode("d");
d.setParent(root);
assertEquals(d.getParent(), root);
assertEquals(root.getChildAt(3), d);
a.setParent(d);
assertEquals(root.getChildCount(), 3);
assertEquals(a.getParent(), d);
assertEquals(d.getChildAt(0), a);
b.setAllowsChildren(false);
try {
c.setParent(b);
fail("expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
//do nothing
}
assertEquals(c.getParent(), root);
assertEquals(b.getChildCount(), 0);
}
@Test
public void testSetParent() {
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
DefaultMutableTreeTableNode a = new DefaultMutableTreeTableNode("a");
root.add(a);
assertEquals(root.getChildCount(), 1);
a.setParent(null);
assertEquals(root.getChildCount(), 0);
a.setParent(root);
assertEquals(root.getChildCount(), 1);
a.setParent(null);
assertEquals(root.getChildCount(), 0);
root.setAllowsChildren(false);
try {
a.setParent(root);
fail("should throw IllegalArgumentException");
} catch (IllegalArgumentException e) {
//success
}
}
@Test
public void testUserObject() {
DefaultMutableTreeTableNode empty = new DefaultMutableTreeTableNode();
assertNull(empty.getUserObject());
empty.setUserObject("root");
assertEquals(empty.getUserObject(), "root");
DefaultMutableTreeTableNode root = new DefaultMutableTreeTableNode("root");
assertEquals(root.getUserObject(), "root");
// root.setAllowsChildren(!root.getAllowsChildren());
// assertFalse(root.getAllowsChildren());
// root.setAllowsChildren(!root.getAllowsChildren());
// assertTrue(root.getAllowsChildren());
//
// DefaultMutableTreeTableNode a = new DefaultMutableTreeTableNode("a", true);
// assertTrue(a.getAllowsChildren());
// a.setAllowsChildren(!a.getAllowsChildren());
// assertFalse(a.getAllowsChildren());
// a.setAllowsChildren(!a.getAllowsChildren());
// assertTrue(a.getAllowsChildren());
//
// DefaultMutableTreeTableNode b = new DefaultMutableTreeTableNode("b", false);
// assertFalse(b.getAllowsChildren());
// b.setAllowsChildren(!b.getAllowsChildren());
// assertTrue(b.getAllowsChildren());
// b.setAllowsChildren(!b.getAllowsChildren());
// assertFalse(b.getAllowsChildren());
}
}