package com.michaelthomas.list.linkedlist; /** * @author Michael Thomas (www.michael-thomas.com) michael@michael-thomas.com * */ import static org.junit.Assert.*; import java.util.LinkedList; import org.junit.Before; import org.junit.Test; import com.michaelthomas.collection.MyCollectionTraverse; public class MyLinkedListTest { private MyCollectionTraverse myCollectionTraverse = new MyCollectionTraverse(); private MyLinkedList myListObj = new MyLinkedList(); private LinkedList myLinkedList; @Before public void setUp() throws Exception { myLinkedList = myListObj.buildMyLinkedList(); } @Test public void testLinkedListAdds() { assertEquals("[0, 1, 2, 3, 4]", myLinkedList.toString()); } @Test public void testIterateForLoopExample() { String string = myCollectionTraverse.iterateForLoopExample(myLinkedList); assertEquals("0, 1, 2, 3, 4", string ); } @Test public void iterateForLoopReverseExample() { String string = myCollectionTraverse.iterateForLoopReverseExample(myLinkedList); assertEquals("4, 3, 2, 1, 0", string ); } @Test public void testLinkedListDescendingIterator() { String string = myCollectionTraverse.iterateForLoopExample(myLinkedList.descendingIterator()); assertEquals("4, 3, 2, 1, 0", string ); } @Test public void testLinkedListPushPop() { LinkedList myPlayList = new LinkedList(myLinkedList); assertEquals("[0, 1, 2, 3, 4]", myPlayList.toString()); myPlayList.push("X"); //Push one to the top. assertEquals("[X, 0, 1, 2, 3, 4]", myPlayList.toString()); assertEquals("X", myPlayList.pop()); //Take one from the top. assertEquals("[0, 1, 2, 3, 4]", myPlayList.toString()); } @Test public void testLinkedListGets() { assertEquals("[0, 1, 2, 3, 4]", myLinkedList.toString()); assertEquals("0", myLinkedList.get(0)); assertEquals("0", myLinkedList.getFirst()); assertEquals("4", myLinkedList.getLast()); } @Test public void testLinkedListOffer() { LinkedList myPlayList = new LinkedList(myLinkedList); assertEquals("[0, 1, 2, 3, 4]", myPlayList.toString()); myPlayList.offer("x1"); assertEquals("[0, 1, 2, 3, 4, x1]", myPlayList.toString()); myPlayList.offerFirst("xFirst"); assertEquals("[xFirst, 0, 1, 2, 3, 4, x1]", myPlayList.toString()); myPlayList.offerLast("xLast"); assertEquals("[xFirst, 0, 1, 2, 3, 4, x1, xLast]", myPlayList.toString()); } @Test public void testLinkedListPeek() { assertEquals("[0, 1, 2, 3, 4]", myLinkedList.toString()); assertEquals("0", myLinkedList.peek()); assertEquals("0", myLinkedList.peek()); //Purposely repeated this one! assertEquals("0", myLinkedList.peekFirst()); assertEquals("4", myLinkedList.peekLast()); } @Test public void testLinkedListPoll() { LinkedList myPlayList = new LinkedList(myLinkedList); assertEquals("[0, 1, 2, 3, 4]", myPlayList.toString()); assertEquals("0", myPlayList.poll()); assertEquals("[1, 2, 3, 4]", myPlayList.toString()); assertEquals("1", myPlayList.pollFirst()); assertEquals("[2, 3, 4]", myPlayList.toString()); assertEquals("4", myPlayList.pollLast()); assertEquals("[2, 3]", myPlayList.toString()); } @Test public void testLinkedListRemove() { LinkedList myPlayList = new LinkedList(myLinkedList); assertEquals("[0, 1, 2, 3, 4]", myPlayList.toString()); assertEquals("0", myPlayList.removeFirst()); assertEquals("[1, 2, 3, 4]", myPlayList.toString()); assertEquals("4", myPlayList.removeLast()); assertEquals("[1, 2, 3]", myPlayList.toString()); myPlayList.add("1"); myPlayList.add("2"); assertEquals("[1, 2, 3, 1, 2]", myPlayList.toString()); assertEquals(true, myPlayList.removeFirstOccurrence("1")); assertEquals("[2, 3, 1, 2]", myPlayList.toString()); assertEquals(true, myPlayList.removeLastOccurrence("2")); assertEquals("[2, 3, 1]", myPlayList.toString()); } }