package com.coding.basic.linklist;
import static org.junit.Assert.*;
import org.junit.Assert;
import org.junit.Test;
public class LinkedListTest {
@Test
public void testAdd() {
LinkedList l1 = new LinkedList();
Assert.assertEquals("[]", l1.toString());
l1.add(1);
l1.add(2);
l1.add(3);
l1.add(4);
Assert.assertEquals("[1,2,3,4]", l1.toString());
}
@Test
public void TestSize(){
LinkedList l2 = new LinkedList();
Assert.assertEquals(0, l2.size());
l2.add(1);
l2.add(2);
l2.add(3);
Assert.assertEquals(3, l2.size());
}
@Test
public void testAddIndex(){
LinkedList l3 = new LinkedList();
l3.add(1);
l3.add(2);
l3.add(3);
l3.add(4);
l3.add(2, 6);
Assert.assertEquals("[1,2,6,3,4]", l3.toString());
}
@Test
public void testGet(){
LinkedList l4 = new LinkedList();
l4.add(1);
l4.add(2);
l4.add(3);
l4.add(4);
Assert.assertEquals(3, l4.get(2));
}
@Test
public void testRemove(){
LinkedList l5 = new LinkedList();
l5.add(1);
l5.add(2);
l5.add(3);
l5.add(4);
l5.remove(3);
Assert.assertEquals("[1,2,3]", l5.toString());
}
@Test
public void testAddFirst(){
LinkedList l6 = new LinkedList();
l6.addFirst(1);
Assert.assertEquals("[1]", l6.toString());
l6.add(2);
l6.add(3);
l6.addFirst(2);
Assert.assertEquals("[2,1,2,3]", l6.toString());
}
@Test
public void testAddLast(){
LinkedList l7 = new LinkedList();
l7.addLast(1);
Assert.assertEquals("[1]", l7.toString());
l7.add(2);
l7.add(3);
l7.addLast(4);
Assert.assertEquals("[1,2,3,4]", l7.toString());
}
@Test
public void testRmemoveFirst(){
LinkedList l8 = new LinkedList();
l8.removeFirst();
Assert.assertEquals("[]", l8.toString());
l8.add(2);
l8.add(3);
l8.removeFirst();
Assert.assertEquals("[3]", l8.toString());
}
@Test
public void testRmemoveLast(){
LinkedList l9 = new LinkedList();
l9.removeLast();
Assert.assertEquals("[]", l9.toString());
l9.add(2);
l9.add(3);
l9.removeLast();
Assert.assertEquals("[2]", l9.toString());
}
@Test
public void testReverse(){
LinkedList list1 = new LinkedList();
list1.reverse();
Assert.assertEquals("[]", list1.toString());
list1.add(1);
list1.add(2);
list1.add(3);
list1.reverse();
Assert.assertEquals("[3,2,1]", list1.toString());
}
@Test
public void testRemoveFirstHalf(){
LinkedList list2 = new LinkedList();
list2.removeFirstHalf();
Assert.assertEquals("[]", list2.toString());
list2.add(1);
list2.removeFirstHalf();
Assert.assertEquals("[1]", list2.toString());
list2.add(2);
list2.add(3);
list2.add(4);
list2.removeFirstHalf();
Assert.assertEquals("[3,4]", list2.toString());
list2.add(5);
list2.removeFirstHalf();
Assert.assertEquals("[4,5]", list2.toString());
}
@Test
public void testRemoveLength(){
LinkedList list3 = new LinkedList();
list3.remove(1,3);
Assert.assertEquals("[]", list3.toString());
list3.add(1);
list3.add(2);
list3.add(3);
list3.add(4);
list3.add(5);
list3.remove(0,1);
Assert.assertEquals("[2,3,4,5]", list3.toString());
}
@Test
public void testGetElements(){
LinkedList list4 = new LinkedList();
LinkedList list = new LinkedList();
int[] array = null;
array = list4.getElements(list);
assertArrayEquals(new int[0], array);
list4.add(11);
list4.add(101);
list4.add(201);
list4.add(301);
list4.add(401);
list4.add(501);
list4.add(601);
list4.add(701);
list.add(1);
list.add(3);
list.add(12);
list.add(6);
array = list4.getElements(list);
int[] result = {101,301,601};
assertArrayEquals(result, array);
}
@Test
public void testSubtract(){
LinkedList list5 = new LinkedList();
LinkedList list = new LinkedList();
list5.subtract(list);
Assert.assertEquals("[]", list5.toString());
list5.add(11);
list5.add(101);
list5.add(201);
list5.add(301);
list5.add(401);
list5.add(501);
list5.add(601);
list5.add(701);
list.add(11);
list.add(301);
list.add(12);
list.add(401);
list5.subtract(list);
Assert.assertEquals("[101,201,501,601,701]", list5.toString());
}
@Test
public void testRemoveDuplicateValues(){
LinkedList list6 = new LinkedList();
list6.removeDuplicateValues();
Assert.assertEquals("[]", list6.toString());
list6.add(1);
list6.add(2);
list6.add(2);
list6.add(10);
list6.removeDuplicateValues();
Assert.assertEquals("[1,2,10]", list6.toString());
}
@Test
public void testRemoveRange(){
LinkedList list7 = new LinkedList();
list7.removeRange(0, 10);
Assert.assertEquals("[]", list7.toString());
list7.add(1);
list7.add(2);
list7.add(3);
list7.add(4);
list7.add(5);
list7.add(6);
list7.add(12);
list7.removeRange(3, 10);
Assert.assertEquals("[1,2,12]", list7.toString());
}
@Test
public void testIntersection(){
LinkedList list8 = new LinkedList();
list8.add(1);
list8.add(2);
list8.add(3);
list8.add(4);
LinkedList list9 = new LinkedList();
list9.add(2);
list9.add(3);
list9.add(4);
list9.add(8);
LinkedList result = new LinkedList();
result = list8.intersection(list9);
Assert.assertEquals("[2,3,4]", result.toString());
}
}