package com.coding.basic; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import junit.framework.AssertionFailedError; public class LinkedListTest { @Before public void setUp() throws Exception { } @Test public void testReverse() { LinkedList list1 = createLinkList(0, 1000); list1.reverse(); list1.reverse(); LinkedList list2 = createLinkList(0, 1000); compareEquals(list1, list2); } @Test public void testRemoveFirstHalf() { LinkedList list1 = createLinkList(0, 5); list1.removeFirstHalf(); LinkedList list2 = createLinkList(2, 5); compareEquals(list1, list2); LinkedList list3 = createLinkList(0, 6); list3.removeFirstHalf(); LinkedList list4 = createLinkList(3, 6); compareEquals(list3, list4); } @Test public void testRemoveIntInt() { LinkedList list1 = createLinkList(0, 10); list1.remove(3, 5); LinkedList list2 = createLinkList(0, 3); addDataToLinkList(list2, 8, 10); compareEquals(list2, list1); } @Test public void testGetElements() { LinkedList list1 = createLinkList(0, 10); LinkedList list2 = createLinkList(3, 8); int[] arrResult = { 3, 4, 5, 6, 7 }; assertArrayEquals(arrResult, list1.getElements(list2)); // LinkedList list3 = createLinkList(0, 10); // LinkedList list4 = createLinkList(9, 11); // list3.getElements(list4); } @Test public void testSubtract() { LinkedList list1 = createLinkList(0, 10); LinkedList list2 = createLinkList(3, 8); list1.subtract(list2); LinkedList list3 = createLinkList(0, 3); addDataToLinkList(list3, 8, 10); compareEquals(list3, list1); } @Test public void testRemoveDuplicateValues() { LinkedList list1 = createLinkList(0, 2); list1.add(1); list1.add(1); addDataToLinkList(list1, 2, 5); list1.add(4); list1.removeDuplicateValues(); LinkedList list2 = createLinkList(0, 5); compareEquals(list1, list2); } @Test public void testRemoveRange() { LinkedList list1 = createLinkList(0, 10); list1.removeRange(0, 5); LinkedList list2 = createLinkList(5, 10); compareEquals(list2, list1); LinkedList list3 = createLinkList(0, 6); list3.removeRange(3, 5); LinkedList list4 = createLinkList(0, 3); compareEquals(list4, list3); LinkedList list5 = createLinkList(0, 6); list5.removeRange(0, 7); LinkedList list6 = new LinkedList(); compareEquals(list6, list5); LinkedList list7 = createLinkList(0, 100000); list7.removeRange(0, 50000); LinkedList list8 = createLinkList(50000, 100000); //compareEquals(list8, list7); } @Test public void testIntersection() { LinkedList list1 = new LinkedList(); LinkedList list2 = new LinkedList(); for (int i = 0; i < 10; i++) { list1.add(i); } for (int i = 3; i < 12; i++) { list2.add(i); } LinkedList list3 = new LinkedList(); for (int i = 3; i < 10; i++) { list3.add(i); } LinkedList list4 = list1.interSection(list2); compareEquals(list3, list4); } private void compareEquals(LinkedList list1, LinkedList list2) { assertEquals(list1.size(), list2.size()); for (int i = 0; i < list1.size(); i++) { assertEquals(list1.get(i), list2.get(i)); } } private void printLinkedList(LinkedList list) { for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } private LinkedList createLinkList(int min, int max) { LinkedList list = new LinkedList(); for (int i = min; i < max; i++) { list.add(i); } return list; } private void addDataToLinkList(LinkedList list, int min, int max) { for (int i = min; i < max; i++) { list.add(i); } } }