package datastructure.linkedlist; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class LinkedListTest { private LinkedList linkedList = new LinkedList(); @Before public void setUp() { for (int i = 0; i < 500; i++) { linkedList.add(i); } } @Test public void testAddObject() { for (int i = 0; i < 100; i++) { linkedList.add(i); } Assert.assertEquals(600, linkedList.size()); } @Test public void testAddIntObject() { linkedList.add(100, -100); Assert.assertEquals(-100, linkedList.get(100)); Assert.assertEquals(100, linkedList.get(101)); } @Test(expected = IndexOutOfBoundsException.class) public void testAddIllegalIntObject() { linkedList.add(1000, 10); } @Test(expected = IndexOutOfBoundsException.class) public void testAddNegativeIntObject() { linkedList.add(-10, 10); } @Test public void testGet() { for (int i = 0; i < 500; i++) { Assert.assertEquals(i, ((Integer) linkedList.get(i)).intValue()); } } @Test(expected = IndexOutOfBoundsException.class) public void testIllegalGet() { linkedList.get(500); } @Test(expected = IndexOutOfBoundsException.class) public void testNegativeGet() { linkedList.get(-10); } @Test public void testRemove() { Assert.assertEquals(100, linkedList.remove(100)); Assert.assertEquals(101, linkedList.get(100)); Assert.assertEquals(499, linkedList.size()); } @Test public void testSize() { Assert.assertEquals(500, linkedList.size()); linkedList.add(10); Assert.assertEquals(501, linkedList.size()); } @Test public void testAddFirst() { linkedList.addFirst(-10); Assert.assertEquals(-10, linkedList.get(0)); linkedList.addFirst(-100); Assert.assertEquals(-100, linkedList.get(0)); Assert.assertEquals(-10, linkedList.get(1)); } @Test public void testAddLast() { linkedList.addLast(-9); Assert.assertEquals(-9, linkedList.get(linkedList.size() - 1)); linkedList.addLast(-8); Assert.assertEquals(-8, linkedList.get(linkedList.size() - 1)); Assert.assertEquals(-9, linkedList.get(linkedList.size() - 2)); } @Test public void testRemoveFirst() { Assert.assertEquals(0, linkedList.removeFirst()); Assert.assertEquals(1, linkedList.removeFirst()); Assert.assertEquals(498, linkedList.size()); } @Test public void testRemoveLast() { Assert.assertEquals(499, linkedList.removeLast()); Assert.assertEquals(498, linkedList.removeLast()); Assert.assertEquals(498, linkedList.size()); } // =========================第三周作业========================= @Test public void testReverse() { linkedList.reverse(); for (int i = 0; i < linkedList.size(); i++) { Assert.assertEquals(499 - i, linkedList.get(i)); } Assert.assertEquals(500, linkedList.size()); } @Test public void testRemoveFirstHalfOfEven() { linkedList.removeFirstHalf(); for (int i = 250; i < 500; i++) { Assert.assertEquals(i, linkedList.get(i - 250)); } Assert.assertEquals(250, linkedList.size()); } @Test public void testRemoveFirstHalfOfOdd() { linkedList.add(500); linkedList.removeFirstHalf(); for (int i = 250; i < 501; i++) { Assert.assertEquals(i, linkedList.get(i - 250)); } Assert.assertEquals(251, linkedList.size()); } @Test public void testRemoveIntInt() { linkedList.remove(10, 10); Assert.assertEquals(0, linkedList.get(0)); Assert.assertEquals(20, linkedList.get(10)); Assert.assertEquals(490, linkedList.size()); } @Test(expected = IllegalArgumentException.class) public void testIllegalIRemoveIntInt() { linkedList.remove(-10, 10); } @Test public void testIllegalLengthRemoveIntInt() { linkedList.remove(0, 10); Assert.assertEquals(490, linkedList.size()); Assert.assertEquals(10, linkedList.get(0)); linkedList.remove(300, 500); Assert.assertEquals(300, linkedList.size()); for (int i = 0; i < 300; i++) { Assert.assertEquals(i + 10, linkedList.get(i)); } } @Test(expected = IllegalArgumentException.class) public void testGetElements() { LinkedList list = new LinkedList(); list.add(5); list.add(10); list.add(202); list.add(305); Assert.assertArrayEquals(new int[] {5, 10, 202, 305}, linkedList.getElements(list)); Assert.assertEquals(500, linkedList.size()); list.add(500); linkedList.getElements(list); } @Test public void testSubtract() { LinkedList list1 = new LinkedList(); list1.add(1); list1.add(5); list1.add(8); list1.add(10); LinkedList list2 = new LinkedList(); list2.add(2); list2.add(5); list2.add(7); list2.add(11); list1.subtract(list2); Assert.assertEquals(1, list1.get(0)); Assert.assertEquals(8, list1.get(1)); Assert.assertEquals(10, list1.get(2)); Assert.assertEquals(3, list1.size()); } @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(4); list.add(5); list.add(6); list.add(6); list.add(7); list.add(7); list.add(7); list.removeDuplicateValues(); for (int i = 0; i < 7; i++) { Assert.assertEquals(i + 1, list.get(i)); } Assert.assertEquals(7, list.size()); } @Test public void testRemoveRange() { linkedList.removeRange(100, 300); Assert.assertEquals(301, linkedList.size()); for (int i = 0; i < 100; i++) { Assert.assertEquals(i, linkedList.get(i)); } for (int i = 300; i < 500; i++) { Assert.assertEquals(i, linkedList.get(i - 199)); } } @Test public void testIntersection() { LinkedList list1 = new LinkedList(); list1.add(1); list1.add(2); list1.add(5); list1.add(7); list1.add(9); LinkedList list2 = new LinkedList(); list2.add(0); list2.add(2); list2.add(9); list2.add(10); list2.add(19); LinkedList intersection = list1.intersection(list2); Assert.assertNotNull(intersection); Assert.assertEquals(2, intersection.size()); Assert.assertEquals(2, (int) intersection.get(0)); Assert.assertEquals(9, (int) intersection.get(1)); } }