package com.coding.basic;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class LinkedListTest {
private LinkedList<String> l =null;
@Before
public void setUp() throws Exception {
l = new LinkedList<String>() ;
}
@After
public void tearDown() throws Exception {
l = null;
}
@Test
public void testAddE() {
l.add("1");
Assert.assertTrue(l.size() == 1);
l.add("1");
Assert.assertTrue(l.size() == 2);
l.add("1");
Assert.assertTrue(l.size() == 3);
}
@Test
public void testAddIntE() {
l.add("1");
l.add("1");
l.add("1");
l.add("1");
l.add(2,"2");
Assert.assertTrue(l.size() == 5);
}
@Test
public void testAddFirst() {
l.add("1");
l.add("1");
l.add("1");
l.add("1");
l.addFirst("first");
Assert.assertTrue(l.size() == 5);
}
@Test
public void testAddLast() {
l.add("1");
l.add("1");
l.add("1");
l.add("1");
l.addLast("first");
Assert.assertTrue(l.size() == 5);
}
@Test
public void testGet() {
l.add("1");
l.add("1");
l.add("1");
l.add("1");
l.addLast("first");
Assert.assertTrue(l.get(4).equals("first"));
Assert.assertTrue(l.get(3).equals("1"));
}
@Test
public void testRemoveInt() {
l.add("1");
l.add("2");
l.add("3");
l.add("4");
Assert.assertTrue(l.size()==4);
l.remove(2);
Assert.assertTrue(l.size()==3);
Assert.assertTrue(l.get(2).equals("4"));
}
@Test
public void testClear() {
l.add("1");
l.add("2");
l.add("3");
l.add("4");
Assert.assertTrue(l.size()==4);
l.clear();
Assert.assertTrue(l.size()==0);
}
@Test
public void testSize() {
Assert.assertTrue(l.size()==0);
l.add("1");
l.add("2");
l.add("3");
l.add("4");
Assert.assertTrue(l.size()==4);
}
@Test
public void testRemoveFirst() {
l.add("1");
l.add("2");
l.add("3");
l.add("4");
l.removeFirst();
Assert.assertTrue(l.get(0).equals("2"));
}
@Test
public void testRemoveLast() {
l.add("1");
l.add("2");
l.add("3");
l.add("4");
Assert.assertTrue(l.size()==4);
Assert.assertTrue(l.get(2).equals("3"));
l.removeLast();
Assert.assertTrue(l.size()==3);
Assert.assertTrue(l.get(0).equals("1"));
Assert.assertTrue(l.get(1).equals("2"));
Assert.assertTrue(l.get(2).equals("3"));
}
@Test
public void testReverse() {
l.add("1");
l.add("2");
l.add("3");
l.add("4");
Assert.assertTrue(l.get(0).equals("1"));
Assert.assertTrue(l.get(1).equals("2"));
Assert.assertTrue(l.get(2).equals("3"));
Assert.assertTrue(l.get(3).equals("4"));
l.reverse();
Assert.assertTrue(l.get(3).equals("1"));
Assert.assertTrue(l.get(2).equals("2"));
Assert.assertTrue(l.get(1).equals("3"));
Assert.assertTrue(l.get(0).equals("4"));
}
@Test
public void testRemoveFirstHalf() {
l.add("2");
l.add("5");
l.add("7");
l.add("8");
l.add("9");
Assert.assertTrue(l.size()==5);
l.removeFirstHalf();
Assert.assertTrue(l.size()==3);
Assert.assertTrue(l.get(0).equals("7"));
Assert.assertTrue(l.get(1).equals("8"));
Assert.assertTrue(l.get(2).equals("9"));
}
@Test
public void testRemoveIntInt() {
l.add("2");
l.add("5");
l.add("7");
l.add("8");
l.add("9");
l.remove(2, 2);
Assert.assertTrue(l.get(0).equals("2"));
Assert.assertTrue(l.get(1).equals("5"));
Assert.assertTrue(l.get(2).equals("9"));
Assert.assertTrue(l.size()==3);
}
@Test
public void testGetElements() {
LinkedList<Integer> l = new LinkedList<Integer>();
l.add(2);
l.add(5);
l.add(7);
l.add(8);
l.add(9);
LinkedList<Integer> l2 = new LinkedList<Integer>();
l2.add(1);
l2.add(2);
l2.add(4);
int[] elements = l.getElements(l2);
int[] exp = {5,7,9};
Assert.assertArrayEquals(exp, elements);
}
@Test
public void testSubtract() {
l.add("2");
l.add("5");
l.add("7");
l.add("8");
l.add("9");
LinkedList<String> l2 = new LinkedList<String>();
l2.add("2");
l2.add("9");
l2.add("8");
l.subtract(l2);
Assert.assertTrue(l.size()==2);
Assert.assertTrue(l.get(0).equals("5"));
Assert.assertTrue(l.get(1).equals("7"));
}
@Test
public void testRemoveDuplicateValues() {
l.add("2");
l.add("5");
l.add("5");
l.add("8");
l.add("8");
l.removeDuplicateValues();
Assert.assertTrue(l.size()==3);
Assert.assertTrue(l.get(0).equals("2"));
Assert.assertTrue(l.get(1).equals("5"));
Assert.assertTrue(l.get(2).equals("8"));
}
@Test
public void testRemoveRange() {
LinkedList<Integer> l = new LinkedList<Integer>();
l.add(2);
l.add(5);
l.add(7);
l.add(8);
l.add(9);
System.out.println(l);
l.removeRange(3, 7);
System.out.println(l);
Assert.assertTrue(l.size()==4);
Assert.assertTrue(l.get(0)==2);
Assert.assertTrue(l.get(1)==7);
Assert.assertTrue(l.get(2)==8);
Assert.assertTrue(l.get(3)==9);
}
@Test
public void testIntersection() {
l.add("2");
l.add("5");
l.add("7");
l.add("8");
l.add("9");
LinkedList<String> l2 = new LinkedList<String>();
l2.add("1");
l2.add("2");
l2.add("3");
l2.add("5");
LinkedList<String> intersection = l.intersection(l2);
Assert.assertTrue(intersection.size()==2);
Assert.assertTrue(intersection.get(0).equals("2"));
Assert.assertTrue(intersection.get(1).equals("5"));
}
}