package com.coderising.linkedlist;
import static org.junit.Assert.*;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class LinkedListTest {
LinkedList linkedList;
@Before
public void setUp() throws Exception {
linkedList = new LinkedList();
}
@Test
public void testReverse() {
linkedList.add(3);
linkedList.add(7);
linkedList.add(10);
linkedList.reverse();
Assert.assertEquals(10, linkedList.get(0));
Assert.assertEquals(7, linkedList.get(1));
Assert.assertEquals(3, linkedList.get(2));
linkedList.add(20);
linkedList.reverse();
Assert.assertEquals(20, linkedList.get(0));
Assert.assertEquals(3, linkedList.get(1));
Assert.assertEquals(7, linkedList.get(2));
Assert.assertEquals(10, linkedList.get(3));
}
@Test
public void testRemoveFirstHalf() {
linkedList.add(2);
linkedList.add(5);
linkedList.add(7);
linkedList.add(8);
linkedList.removeFirstHalf();
Assert.assertEquals(7, linkedList.get(0));
Assert.assertEquals(8, linkedList.get(1));
Assert.assertEquals(2, linkedList.size());
linkedList.addFirst(5);
linkedList.addFirst(2);
linkedList.addLast(10);
linkedList.removeFirstHalf();
Assert.assertEquals(7, linkedList.get(0));
Assert.assertEquals(8, linkedList.get(1));
Assert.assertEquals(10, linkedList.get(2));
Assert.assertEquals(3, linkedList.size());
}
@Test
public void testRemoveIntInt() {
linkedList.add(2);
linkedList.add(5);
linkedList.add(7);
linkedList.add(8);
linkedList.add(10);
linkedList.remove(1,3);
Assert.assertEquals(2, linkedList.get(0));
Assert.assertEquals(10, linkedList.get(1));
Assert.assertEquals(2, linkedList.size());
}
@Test
public void testGetElements() {
linkedList.add(11);
linkedList.add(101);
linkedList.add(201);
linkedList.add(301);
linkedList.add(401);
linkedList.add(501);
linkedList.add(601);
linkedList.add(701);
LinkedList list = new LinkedList();
list.add(1);
list.add(3);
list.add(4);
list.add(6);
Assert.assertArrayEquals(new int[]{101,301,401,601},linkedList.getElements(list));
}
@Test
public void testSubtract() {
linkedList.add(11);
linkedList.add(101);
linkedList.add(201);
linkedList.add(301);
linkedList.add(401);
linkedList.add(501);
linkedList.add(601);
linkedList.add(701);
LinkedList list = new LinkedList();
list.add(1);
list.add(3);
list.add(4);
list.add(6);
linkedList.subtract(list);
Assert.assertEquals(11,linkedList.get(0));
Assert.assertEquals(201,linkedList.get(1));
Assert.assertEquals(501,linkedList.get(2));
Assert.assertEquals(701,linkedList.get(3));
Assert.assertEquals(4, linkedList.size());
}
@Test
public void testRemoveDuplicateValues() {
linkedList.add(1);
linkedList.add(1);
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
linkedList.add(3);
linkedList.add(8);
linkedList.add(8);
linkedList.add(9);
linkedList.removeDuplicateValues();
Assert.assertEquals(1,linkedList.get(0));
Assert.assertEquals(2,linkedList.get(1));
Assert.assertEquals(3,linkedList.get(2));
Assert.assertEquals(8,linkedList.get(3));
Assert.assertEquals(9,linkedList.get(4));
Assert.assertEquals(5, linkedList.size());
}
@Test
public void testRemoveRange() {
linkedList.add(11);
linkedList.add(101);
linkedList.add(201);
linkedList.add(301);
linkedList.add(401);
linkedList.add(501);
linkedList.add(601);
linkedList.add(701);
linkedList.removeRange(100, 600);
Assert.assertEquals(11,linkedList.get(0));
Assert.assertEquals(601,linkedList.get(1));
Assert.assertEquals(701,linkedList.get(2));
Assert.assertEquals(3, linkedList.size());
}
@Test
public void testIntersection() {
linkedList.add(11);
linkedList.add(101);
linkedList.add(201);
linkedList.add(301);
linkedList.add(401);
linkedList.add(501);
linkedList.add(601);
linkedList.add(701);
LinkedList list = new LinkedList();
list.add(10);
list.add(101);
list.add(301);
list.add(333);
list.add(401);
list.add(666);
LinkedList newList = linkedList.intersection(list);
Assert.assertEquals(101,newList.get(0));
Assert.assertEquals(301,newList.get(1));
Assert.assertEquals(401,newList.get(2));
Assert.assertEquals(3, newList.size());
}
}