package com.aaront.execrise.basic; import com.aaront.exercise.basic.Iterator; import com.aaront.exercise.basic.LinkedList; import org.junit.Assert; import org.junit.Before; import org.junit.Test; /** * @author tonyhui * @since 17/2/21 */ public class LinkListTest { private LinkedList linkedList = new LinkedList(); @Before public void init() { linkedList.add(1); linkedList.add(2); linkedList.add(3); linkedList.add(4); linkedList.add(5); } @Test public void testAdd() { Assert.assertArrayEquals(new Object[]{1, 2, 3}, linkedList.toArray()); } @Test public void testAddIndex() { linkedList.add(1, 10); linkedList.add(0, 8); Assert.assertArrayEquals(new Object[]{8, 1, 10, 2, 3}, linkedList.toArray()); } @Test public void testAddFirst() { linkedList.addFirst(-1); Assert.assertArrayEquals(new Object[]{-1, 1, 2, 3}, linkedList.toArray()); } @Test public void testAddLast() { linkedList.addLast(99); Assert.assertArrayEquals(new Object[]{1, 2, 3, 99}, linkedList.toArray()); } @Test public void testRemove() { testAddIndex(); linkedList.remove(1); linkedList.remove(2); linkedList.add(3, 3); linkedList.add(1, 2); Assert.assertArrayEquals(new Object[]{8, 2, 10, 3, 3}, linkedList.toArray()); } @Test public void testRemoveFirst() { linkedList.removeFirst(); linkedList.removeFirst(); Assert.assertArrayEquals(new Object[]{3}, linkedList.toArray()); } @Test public void testRemoveLast() { linkedList.removeLast(); linkedList.removeLast(); Assert.assertArrayEquals(new Object[]{1}, linkedList.toArray()); } @Test public void testIterator() { Iterator iterator = linkedList.iterator(); while (iterator.hasNext()) { iterator.next(); iterator.remove(); } Assert.assertArrayEquals(new Object[]{}, linkedList.toArray()); } @Test public void testReverse() { linkedList.reverse(); Assert.assertArrayEquals(new Object[]{3, 2, 1}, linkedList.toArray()); } @Test public void testRemoveFirstHalf() { linkedList.removeFirstHalf(); Assert.assertArrayEquals(new Object[]{2, 3}, linkedList.toArray()); } @Test public void testRangeRemove() { linkedList.remove(1, 4); Assert.assertArrayEquals(new Object[]{1}, linkedList.toArray()); } @Test public void testGetElements() { LinkedList sub = new LinkedList(); sub.add(1); sub.add(3); sub.add(4); int[] result = linkedList.getElements(sub); Assert.assertArrayEquals(new int[]{2, 4, 5}, result); } @Test public void testSubtract() { LinkedList sub = new LinkedList(); sub.add(1); sub.add(2); sub.add(10); linkedList.subtract(sub); Assert.assertArrayEquals(new Object[]{3, 4, 5}, linkedList.toArray()); } @Test public void testRemoveDuplicateValues() { LinkedList list = new LinkedList(); list.add(1); list.add(2); list.add(2); list.add(2); list.add(3); list.add(3); list.add(4); list.add(5); list.add(6); list.add(6); list.add(7); list.add(7); list.add(7); list.add(7); list.add(7); list.removeDuplicateValues(); Assert.assertArrayEquals(new Object[]{1, 2, 3, 4, 5, 6, 7}, list.toArray()); } @Test public void testRemoveRange() { LinkedList list = new LinkedList(); list.add(1); list.add(2); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); list.add(7); list.add(7); list.add(8); list.removeRange(1, 4); Assert.assertArrayEquals(new Object[]{1, 4, 5, 6, 7, 7, 8}, list.toArray()); } @Test public void testIntersection() { LinkedList list1 = new LinkedList(); list1.add(1); list1.add(3); list1.add(5); list1.add(7); list1.add(9); LinkedList list2 = new LinkedList(); list2.add(3); list2.add(4); list2.add(5); list2.add(6); list2.add(7); list2.add(8); list2.add(10); list2.add(11); list2.add(12); LinkedList intersection = list1.intersection(list2); Assert.assertArrayEquals(new Object[]{3, 5, 7}, intersection.toArray()); } }