package com.coderising.linkedlist; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class LinkedListTest { LinkedList multiValLl = null; LinkedList emptyLl = null; LinkedList oneItemLl = null; LinkedList twoItemsLl = null; LinkedList nullLl = null; @Before public void setUp() throws Exception { multiValLl = new LinkedList(); multiValLl.add(1); multiValLl.add(2); multiValLl.add(3); emptyLl = new LinkedList(); oneItemLl = new LinkedList(); oneItemLl.add(1); twoItemsLl = new LinkedList(); twoItemsLl.add(1); twoItemsLl.add(2); } @Test public void testReverse() { int[] expected = new int[]{3,2,1}; multiValLl.reverse(); for(int i = 0; i< multiValLl.size();i++){ assertEquals(expected[i], multiValLl.get(i)); } expected = new int[]{2,1}; twoItemsLl.reverse(); for(int i = 0; i< twoItemsLl.size();i++){ assertEquals(expected[i], twoItemsLl.get(i)); } emptyLl.reverse(); //no error or exception oneItemLl.reverse(); assertEquals(1,oneItemLl.size()); assertEquals(1, oneItemLl.get(0)); } @Test public void testRemoveFirstHalf() { int[] expected = new int[]{2,3}; multiValLl.removeFirstHalf(); for(int i = 0; i< multiValLl.size();i++){ assertEquals(expected[i], multiValLl.get(i)); } expected = new int[]{2}; twoItemsLl.removeFirstHalf(); for(int i = 0; i< twoItemsLl.size();i++){ assertEquals(expected[i], twoItemsLl.get(i)); } } @Test public void testRemoveIntInt() { int[] expected = new int[]{1,3}; multiValLl.remove(1, 1); for(int i = 0; i< multiValLl.size();i++){ //System.out.println("i: "+ i + " " + multiValLl.get(i)); assertEquals(expected[i], multiValLl.get(i)); } expected = new int[]{2}; twoItemsLl.remove(0,1); for(int i = 0; i< twoItemsLl.size();i++){ assertEquals(expected[i], twoItemsLl.get(i)); } oneItemLl.remove(0,1); assertEquals(0,oneItemLl.size()); } @Test public void testGetElements() { int[] expected = new int[]{2,3}; LinkedList indexList = new LinkedList(); indexList.add(1);indexList.add(2); assertArrayEquals(expected, multiValLl.getElements(indexList)); } @Test public void testSubtract() { LinkedList testLl = new LinkedList(); int[] array = new int[]{2,4,6,6,8,9}; testLl.insert(array); LinkedList toberemoved = new LinkedList(); toberemoved.add(2); toberemoved.add(4);toberemoved.add(6);toberemoved.add(9);toberemoved.add(8); testLl.subtract(toberemoved); //System.out.println("result: " + testLl); int[] expected = new int[]{8,9}; for(int i= 0;i<testLl.size(); i++){ assertEquals(expected[i], testLl.get(i)); } } @Test public void testRemoveDuplicateValues() { LinkedList testLl = new LinkedList(); int[] array = new int[]{2,3,3,5,7,7,9}; testLl.insert(array); testLl.removeDuplicateValues(); int[] expected = new int[]{2,3,5,7,9}; assertArrayEquals(expected, testLl.toIntArray()); } @Test public void testRemoveRange1() { LinkedList testLl = new LinkedList(); int[] array = new int[]{2,4,6,6,8,9}; testLl.insert(array); testLl.removeRange(1, 7); //System.out.println(testLl); assertArrayEquals(new int[]{8,9}, testLl.toIntArray()); } @Test public void testRemoveRange2() { LinkedList testLl = new LinkedList(); int[] array = new int[]{2,4,6,6,8,9}; testLl.insert(array); testLl.removeRange(2, 10); //System.out.println(testLl); assertArrayEquals(new int[]{2}, testLl.toIntArray()); } @Test public void testRemoveRange3() { LinkedList testLl = new LinkedList(); int[] array = new int[]{2,4,6,6,8,9}; testLl.insert(array); testLl.removeRange(2, 8); //System.out.println(testLl); assertArrayEquals(new int[]{2, 8, 9}, testLl.toIntArray()); } @Test public void testIntersection() { LinkedList testLl = new LinkedList(); int[] array = new int[]{2,4,6,8,9}; testLl.insert(array); LinkedList supportLl = new LinkedList(); array = new int[] {3,5,6,8,9}; supportLl.insert(array); LinkedList newll = testLl.intersection(supportLl); assertArrayEquals(new int[]{6,8,9}, newll.toIntArray()); } }