import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import hw1.ArrayListImpl;
import hw1.BinaryTreeNode;
import hw1.LinkedList;
import hw1.QueueImpl;
import hw1.StackImpl;
public class DataStructureTest {
@Test
public void ArrayListTest() {
ArrayListImpl al = new ArrayListImpl();
Object o1 = new Object();
Object o2 = new Object();
Object o3 = new Object();
al.add(new Object());
al.add(new Object());
assertTrue(al.size() == 2);
al.add(5);
assertFalse(al.size() == 2);
assertTrue(al.size() == 3);
al.add(2, 3);
//System.out.println((int)al.get(2));
assertTrue((int)al.get(2) == 3);
assertTrue((int)al.get(3) == 5);
}
@Test
public void LinkedListTest() {
LinkedList ll = new LinkedList();
Object o1 = new Object();
Object o2 = new Object();
Object o3 = new Object();
Object o4 = new Object();
Object o5 = new Object();
Object o6 = new Object();
ll.add(o1);
ll.add(o2);
//System.out.println(ll.size());
assertTrue(ll.size() == 2);
ll.add(o3);
ll.add(1,1);
assertTrue((int)ll.get(1) == 1);
assertTrue(ll.size() == 4);
ll.addFirst(2);
ll.addLast(4);
assertTrue((int)ll.get(0) == 2);
assertTrue((int)ll.get(ll.size() - 1) == 4);
assertTrue((int)ll.get(2) == 1);
ll.remove(2);
assertTrue(ll.get(2) == o2);
//System.out.print((int)ll.remove(2));
//System.out.println((int)ll.get(2));
//assertFalse((int)ll.get(2) == 1);
assertTrue(ll.size() == 5);
assertTrue((int)ll.removeFirst() == 2);
assertTrue(ll.size() == 4);
assertTrue((int)ll.removeLast() == 4);
assertTrue(ll.size() == 3);
}
@Test
public void QueueTest(){
QueueImpl qi = new QueueImpl();
assertTrue(qi.isEmpty());
qi.enQueue(1);
qi.enQueue(2);
qi.enQueue(3);
assertTrue(qi.size() == 3);
assertTrue((int)qi.deQueue() == 1);
assertTrue(qi.size() == 2);
assertFalse(qi.isEmpty());
}
@Test
public void StackTest() {
StackImpl stack = new StackImpl();
assertTrue(stack.isEmpty());
stack.push(1);
stack.push(2);
stack.push(3);
assertTrue(stack.size() == 3);
assertTrue((int)stack.pop() == 3);
assertTrue(stack.size() == 2);
assertTrue((int)stack.peek() == 2);
assertFalse(stack.isEmpty());
}
@Test
public void BinaryTreeTest() {
BinaryTreeNode bt = new BinaryTreeNode();
Integer i1 = 1;
Integer i2 = 3;
Integer i3 = 4;
Integer i4 = 6;
Integer i5 = -1;
bt.insert(i3);
bt.insert(i1);
bt.insert(i4);
bt.insert(i2);
bt.insert(i5);
assertTrue((int)bt.getRoot().getData() == 4);
assertTrue((int)bt.getRoot().getLeft().getData() == 1);
assertTrue((int)bt.getRoot().getRight().getData() == 6);
assertTrue((int)bt.getRoot().getLeft().getLeft().getData() == -1);
assertTrue((int)bt.getRoot().getLeft().getRight().getData() == 3);
}
}