package com.coding2017.week3; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; /** * Created by kaitao.li on 2017/3/11. */ public class LinkedListTest { @Test public void testReverse() { LinkedList list = mockEmptyList(); list.reverse(); assertTrue(list.size() == 0); list = mockOneNodeList(); list.reverse(); assertTrue(list.get(0).equals(1)); assertTrue(list.size() == 1); list = mockThreeNodeList(); list.reverse(); assertTrue(list.size() == 3); assertTrue(list.get(0).equals(3)); assertTrue(list.get(1).equals(2)); assertTrue(list.get(2).equals(1)); } @Test public void testRemoveFirstHalf() { LinkedList list = new LinkedList(); list.add(2); list.add(5); list.add(7); list.add(8); list.removeFirstHalf(); assertTrue(list.size() == 2); assertTrue(list.get(0).equals(7)); assertTrue(list.get(1).equals(8)); list = new LinkedList(); list.add(2); list.add(5); list.add(7); list.removeFirstHalf(); assertTrue(list.size() == 2); assertTrue(list.get(0).equals(5)); assertTrue(list.get(1).equals(7)); } @Test public void testRemove() { LinkedList linkedList = mockThreeNodeList(); linkedList.remove(1, 1); assertTrue(linkedList.size() == 2); assertTrue(linkedList.get(0).equals(1)); assertTrue(linkedList.get(1).equals(3)); } @Test public void testGetElements() { LinkedList linkedList = LinkedList.of(11, 101, 201, 301, 401, 501, 601, 701); LinkedList indexList = LinkedList.of(1, 3, 4, 6); int[] elements = linkedList.getElements(indexList); assertArrayEquals(elements, new int[] { 101, 301, 401, 601 }); } @Test public void testSubtract() { LinkedList linkedList = LinkedList.of(11, 101, 201, 301, 401, 501, 601, 701); LinkedList deleteList = LinkedList.of(11, 201, 301, 601, 701); linkedList.subtract(deleteList); assertTrue(linkedList.size() == 3); assertTrue(linkedList.get(0).equals(101)); assertTrue(linkedList.get(1).equals(401)); assertTrue(linkedList.get(2).equals(501)); } @Test public void testRemoveDuplicateValues() { LinkedList linkedList = LinkedList.of(11, 101, 101, 301, 401, 401, 401, 701); linkedList.removeDuplicateValues(); assertTrue(linkedList.size() == 5); assertTrue(linkedList.get(0).equals(11)); assertTrue(linkedList.get(1).equals(101)); assertTrue(linkedList.get(2).equals(301)); assertTrue(linkedList.get(3).equals(401)); assertTrue(linkedList.get(4).equals(701)); } @Test public void testRemoveRange() { LinkedList linkedList = LinkedList.of(11, 101, 201, 301, 401, 501, 601, 701); linkedList.removeRange(10, 601); assertTrue(linkedList.size() == 2); assertTrue(linkedList.get(0).equals(601)); assertTrue(linkedList.get(1).equals(701)); } @Test public void testIntersection() { LinkedList linkedList = LinkedList.of(1, 2, 3, 4); LinkedList linkedList1 = LinkedList.of(2, 4, 6, 7); LinkedList result = linkedList.intersection(linkedList1); assertTrue(result.size() == 2); assertTrue(result.get(0).equals(2)); assertTrue(result.get(1).equals(4)); } private LinkedList mockEmptyList() { return new LinkedList(); } private LinkedList mockOneNodeList() { LinkedList list = new LinkedList(); list.add(1); return list; } private LinkedList mockThreeNodeList() { LinkedList list = new LinkedList(); list.add(1); list.add(2); list.add(3); return list; } }