package ch.hsr.ifs.pasta.tree;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
import ch.hsr.ifs.pasta.tree.Node;
public class NodeTest {
private Node<String> root;
private Node<String> leftChild;
private Node<String> middleChild;
private Node<String> rightChild;
@Before
public void beforeEachTest() {
root = new Node<>("root");
leftChild = new Node<String>("leftChild");
middleChild = new Node<String>("centerChild");
rightChild = new Node<String>("rightChild");
root.addChild(leftChild);
root.addChild(middleChild);
root.addChild(rightChild);
}
@Test
public void testHasLeftSibling() {
assertTrue(rightChild.hasLeftSibling());
}
@Test
public void testHasLeftSiblingIfNotExisting() {
assertFalse(leftChild.hasLeftSibling());
}
@Test
public void testGetLeftSibling() {
assertEquals(middleChild, rightChild.leftSibling());
}
@Test
public void testGetLeftSiblingIfNotExisting() {
assertEquals(null, leftChild.leftSibling());
}
@Test
public void testHasRightSibling() {
assertTrue(leftChild.hasRightSibling());
}
@Test
public void testHasRightSiblingIfNotExisting() {
assertFalse(rightChild.hasRightSibling());
}
@Test
public void testGetRightSibling() {
assertEquals(middleChild, leftChild.rightSibling());
}
@Test
public void testGetRightSiblingIfNotExisting() {
assertEquals(null, rightChild.rightSibling());
}
@Test
public void testgetLeftMostSibling() {
assertEquals(leftChild, rightChild.leftMostSibling());
}
@Test
public void testgetLeftMostSiblingIfNotExisting() {
assertEquals(null, leftChild.leftMostSibling());
}
@Test
public void testgetLeftMostChild() {
assertEquals(leftChild, root.leftMostChild());
}
@Test
public void testgetLeftMostChildIfNotExisting() {
assertEquals(null, leftChild.leftMostChild());
}
@Test
public void testgetRightMostChild() {
assertEquals(rightChild, root.rightMostChild());
}
@Test
public void testgetRightMostChildIfNotExisting() {
assertEquals(null, rightChild.rightMostChild());
}
@Test
public void testShouldReturnThread() {
Node<String> thread = new Node<String>("thread");
rightChild.setThread(thread);
assertEquals(thread, rightChild.leftMostChild());
assertEquals(thread, rightChild.rightMostChild());
}
@Test
public void testParent() {
assertEquals(root, rightChild.parent());
}
@Test
public void testDepthParent() {
assertEquals(0d, root.y(), 0.0d);
}
@Test
public void testDepthChildren() {
assertEquals(root.y() + 1, leftChild.y(), 0.0d);
assertEquals(root.y() + 1, middleChild.y(), 0.0d);
assertEquals(root.y() + 1, rightChild.y(), 0.0d);
}
@Test
public void testGetNumber() {
assertEquals(1, leftChild.number());
assertEquals(2, middleChild.number());
assertEquals(3, rightChild.number());
}
}