/**
 * Simplistic test class BTNodeTest.
 *
 * @author  Dr. Jody Paul
 * @version Fall 2005 - September 7
 */
public class BTNodeTest extends junit.framework.TestCase {
    BTNode bTNode1, bTNode2;

    /**
     * Sets up the test fixture.
     * Called before every test case method.
     */
    protected void setUp() {
        bTNode1 = new BTNode();
		bTNode2 = new BTNode(bTNode1, null, null, new Integer(9));
    }

    public void testConstruction() {
        assertEquals(bTNode1.getLeftChild(), null);
        assertSame(bTNode2.getLeftChild(), bTNode1);
    }

	public void testGettersAndSetters() {
		assertNull(bTNode1.getData());
		assertNull(bTNode2.getData());
		bTNode1.setData("Data A");
		assertSame("Data A", bTNode1.getData());
		assertNull(bTNode1.getLeftChild());
		assertSame(bTNode1, bTNode2.getLeftChild());
		assertNull(bTNode1.getRightChild());
		assertNull(bTNode2.getRightChild());
		bTNode1.setLeftChild(bTNode2);
		assertSame(bTNode2, bTNode1.getLeftChild());
		bTNode1.setRightChild(bTNode2);
		assertSame(bTNode2, bTNode1.getRightChild());
	}

	public void testKeys() {
		assertNull(bTNode1.getKey());
		assertTrue(new Integer(9).equals(bTNode2.getKey()));
		bTNode1.setKey(new Integer(9));
		assertTrue(bTNode2.getKey().equals(bTNode1.getKey()));
		bTNode1.setKey(new Integer(7));
		assertFalse(bTNode2.getKey().equals(bTNode1.getKey()));
		assertTrue(0 < bTNode2.getKey().compareTo(bTNode1.getKey()));
	}

	public void testIsLeaf() {
		assertEquals(true, bTNode1.isLeaf());
		assertEquals(false, bTNode2.isLeaf());
		bTNode1.setRightChild(bTNode2);
		assertEquals(false, bTNode1.isLeaf());
	}

	public void testToString() {
		assertEquals("java.lang.String", bTNode1.toString().getClass().getName());
		assertNotNull(bTNode2.toString());
	}
}
