package com.michaelthomas.list; /** * @author Michael Thomas (www.michael-thomas.com) michael@michael-thomas.com * */ import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.List; import com.michaelthomas.collection.MyCollectionSort; import com.michaelthomas.collection.MyCollectionTraverse; public class MyListTest { private MyCollectionTraverse myCollectionTraverse = new MyCollectionTraverse(); private MyCollectionSort myCollSort = new MyCollectionSort(); private MyList myListObj = new MyList(); private List listDaysOfWeek; private List listHouseAnimals; private String expectedDayList = "Sun, Mon, Tue, Wed, Thu, Fri, Sat"; private String expectedDayListReverse = "Sat, Fri, Thu, Wed, Tue, Mon, Sun"; @Before public void setUp() throws Exception { listDaysOfWeek = myListObj.buildDaysOfWeek(); listHouseAnimals = myListObj.buildHouseAnimals(); } @Test public void testReadMe() { /* WARNING: Please read this! * Make sure you also review the following JUnit files: * MyCollectionTest.java - has examples that may not be covered here! * * This is because the List interface extends the Collection interface. * */ } @Test public void testListBasics() { List listPlay = new ArrayList(); listPlay.add("Hello"); listPlay.add("World"); listPlay.add("It's me again."); assertEquals(3, listPlay.size()); assertEquals("[Hello, World, It's me again.]", listPlay.toString()); } @Test public void testListBasicsDaysOfWeek() { assertEquals(7, listDaysOfWeek.size()); assertEquals("[Sun, Mon, Tue, Wed, Thu, Fri, Sat]",listDaysOfWeek.toString()); } @Test public void testListAddIndex() { listDaysOfWeek.add(0,"Before-Sun"); assertEquals("[Before-Sun, Sun, Mon, Tue, Wed, Thu, Fri, Sat]", listDaysOfWeek.toString()); listDaysOfWeek.add(2,"Before-Mon"); assertEquals("[Before-Sun, Sun, Before-Mon, Mon, Tue, Wed, Thu, Fri, Sat]", listDaysOfWeek.toString()); } @Test public void testListAddAllIndex() { List listPlay = new ArrayList(listDaysOfWeek); assertEquals("[Sun, Mon, Tue, Wed, Thu, Fri, Sat]", listPlay.toString()); listPlay.addAll(1, listHouseAnimals); assertEquals("[Sun, dog, cat, Mon, Tue, Wed, Thu, Fri, Sat]", listPlay.toString()); } @Test public void testListGetIndex() { assertEquals("Sun", listDaysOfWeek.get(0)); assertEquals("Mon", listDaysOfWeek.get(1)); assertEquals("Sat", listDaysOfWeek.get(6)); } @Test public void testListIndexOf() { assertEquals(0, listDaysOfWeek.indexOf("Sun")); assertEquals(1, listDaysOfWeek.indexOf("Mon")); assertEquals(6, listDaysOfWeek.indexOf("Sat")); } @Test public void testListLastIndexOf() { List listPlay = new ArrayList(listDaysOfWeek); listPlay.add("Sun"); assertEquals("[Sun, Mon, Tue, Wed, Thu, Fri, Sat, Sun]",listPlay.toString()); assertEquals(7, listPlay.lastIndexOf("Sun")); assertEquals(0, listPlay.indexOf("Sun")); } @Test public void testListIterateExampleListIterator() { //Uses: list.listIterator() String daysOfWeekStr = myCollectionTraverse.listIteratorExample(listDaysOfWeek); assertEquals(expectedDayList, daysOfWeekStr ); } @Test public void testListIterateReverseExampleListIterator_index() { //Uses: list.listIterator(list.size()) String daysOfWeekStr = myCollectionTraverse.listIteratorReverseExample(listDaysOfWeek); assertEquals(expectedDayListReverse, daysOfWeekStr ); } @Test public void testListRemoveIndex() { // E remove(int index) - this one returns the Element and removes! List listPlay = new ArrayList(listDaysOfWeek); assertEquals("[Sun, Mon, Tue, Wed, Thu, Fri, Sat]", listPlay.toString()); String string = listPlay.remove(1); assertEquals("Mon", string); assertEquals("[Sun, Tue, Wed, Thu, Fri, Sat]", listPlay.toString()); } @Test public void testListSetIndex() { // E set(int index, E element) List listPlay = new ArrayList(listDaysOfWeek); assertEquals("[Sun, Mon, Tue, Wed, Thu, Fri, Sat]", listPlay.toString()); String string = listPlay.set(1, "Hello"); assertEquals("Mon", string); assertEquals("[Sun, Hello, Tue, Wed, Thu, Fri, Sat]", listPlay.toString()); } @Test public void testListSubList() { // List subList(int fromIndex, int toIndex) assertEquals("[Sun, Mon, Tue, Wed, Thu, Fri, Sat]", listDaysOfWeek.toString()); List listPlay = listDaysOfWeek.subList(2, 4); assertEquals("[Tue, Wed]", listPlay.toString()); } }