package structure.week3;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class LinkedListTest {
LinkedList list = null;
@Before
public void setUp() throws Exception {
list = new LinkedList();
}
@After
public void tearDown() throws Exception {
}
@Test
public void testReverse() {
list.add(1);
list.add(2);
list.add(3);
list.add(4);
LinkedList test = new LinkedList();
test.add(4);
test.add(3);
test.add(2);
test.add(1);
list.reverse();
Assert.assertEquals(test.get(0), list.get(0));
Assert.assertEquals(test.get(1), list.get(1));
Assert.assertEquals(test.get(2), list.get(2));
Assert.assertEquals(test.get(3), list.get(3));
}
@Test
public void testRemoveFirstHalf() {
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
LinkedList test = new LinkedList();
test.add(4);
test.add(5);
test.add(6);
test.add(7);
list.removeFirstHalf();
Assert.assertEquals(test.get(0), list.get(0));
Assert.assertEquals(test.get(1), list.get(1));
Assert.assertEquals(test.get(2), list.get(2));
Assert.assertEquals(test.get(3), list.get(3));
list.removeFirstHalf();
Assert.assertEquals(test.get(2), list.get(0));
Assert.assertEquals(test.get(3), list.get(1));
list.removeFirstHalf();
Assert.assertEquals(test.get(3), list.get(0));
list.removeFirstHalf();
Assert.assertEquals(test.get(3), list.get(0));
}
@Test
public void testRemove(){
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
LinkedList test = new LinkedList();
test.add(1);
test.add(4);
test.add(5);
test.add(6);
test.add(7);
list.remove(1, 2);
Assert.assertEquals(test.get(0), list.get(0));
Assert.assertEquals(test.get(1), list.get(1));
Assert.assertEquals(test.get(2), list.get(2));
Assert.assertEquals(test.get(3), list.get(3));
Assert.assertEquals(test.get(4), list.get(4));
list.remove(1, 0);
Assert.assertEquals(test.get(0), list.get(0));
Assert.assertEquals(test.get(1), list.get(1));
Assert.assertEquals(test.get(2), list.get(2));
Assert.assertEquals(test.get(3), list.get(3));
Assert.assertEquals(test.get(4), list.get(4));
list.remove(0, 2);
Assert.assertEquals(test.get(2), list.get(0));
Assert.assertEquals(test.get(3), list.get(1));
Assert.assertEquals(test.get(4), list.get(2));
}
@Test
public void testGetElements(){
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
LinkedList sel = new LinkedList();
sel.add(2);
sel.add(4);
sel.add(6);
int[] res = list.getElements(sel);
Assert.assertEquals(res[0], 3);
Assert.assertEquals(res[1], 5);
Assert.assertEquals(res[2], 7);
}
@Test
public void testSubtract() {
list.add(1);
list.add(1);
list.add(2);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
list.add(8);
list.add(8);
LinkedList sub =new LinkedList();
sub.add(1);
sub.add(7);
sub.add(8);
LinkedList test =new LinkedList();
test.add(2);
test.add(2);
test.add(3);
test.add(4);
test.add(5);
test.add(6);
list.subtract(sub);
Assert.assertEquals(test.get(0), list.get(0));
Assert.assertEquals(test.get(1), list.get(1));
Assert.assertEquals(test.get(2), list.get(2));
Assert.assertEquals(test.get(3), list.get(3));
Assert.assertEquals(test.get(4), list.get(4));
Assert.assertEquals(test.get(5), list.get(5));
}
@Test
public void testRemoveDuplicateValues() {
list.add(1);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(4);
list.add(5);
list.add(6);
list.add(6);
list.add(7);
list.add(7);
LinkedList test =new LinkedList();
test.add(1);
test.add(2);
test.add(3);
test.add(4);
test.add(5);
test.add(6);
test.add(7);
list.removeDuplicateValues();
Assert.assertEquals(test.get(0), list.get(0));
Assert.assertEquals(test.get(1), list.get(1));
Assert.assertEquals(test.get(2), list.get(2));
Assert.assertEquals(test.get(3), list.get(3));
Assert.assertEquals(test.get(4), list.get(4));
Assert.assertEquals(test.get(5), list.get(5));
Assert.assertEquals(test.get(6), list.get(6));
}
@Test
public void testRemoveRange() {
list.add(1);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(4);
list.add(5);
list.add(6);
list.add(6);
list.add(7);
list.add(7);
LinkedList test =new LinkedList();
test.add(1);
test.add(1);
test.add(2);
test.add(6);
test.add(6);
test.add(7);
test.add(7);
list.removeRange(2, 6);
Assert.assertEquals(test.get(0), list.get(0));
Assert.assertEquals(test.get(1), list.get(1));
Assert.assertEquals(test.get(2), list.get(2));
Assert.assertEquals(test.get(3), list.get(3));
Assert.assertEquals(test.get(4), list.get(4));
Assert.assertEquals(test.get(5), list.get(5));
Assert.assertEquals(test.get(6), list.get(6));
}
@Test
public void testIntersection(){
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
list.add(11);
list.add(12);
list.add(13);
list.add(14);
list.add(15);
list.add(16);
list.add(17);
LinkedList l2 = new LinkedList();
l2.add(1);
l2.add(8);
l2.add(8);
l2.add(9);
l2.add(9);
l2.add(10);
l2.add(12);
l2.add(17);
LinkedList test = new LinkedList();
test.add(1);
test.add(12);
test.add(17);
list = list.intersection(l2);
Assert.assertEquals(test.get(0), list.get(0));
Assert.assertEquals(test.get(1), list.get(1));
Assert.assertEquals(test.get(2), list.get(2));
}
}