/*
* RapidBeans Framework: HistoryListTest.java
*
* Copyright Martin Bluemel, 2009
*
* 11.08.2009
*/
package org.rapidbeans.core.common;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import junit.framework.TestCase;
/**
* Tests for the history list.
*
* @author Martin Bluemel
*/
public class HistoryListTest extends TestCase {
public void testCreateNewHistoryList() {
HistoryList<String> list = new HistoryList<String>(5);
assertEquals(5, list.getMax());
assertEquals(0, list.size());
}
public void testCreateNewHistoryListDefault() {
HistoryList<URL> list = new HistoryList<URL>();
assertEquals(10, list.getMax());
assertEquals(0, list.size());
}
public void testCreateNewHistoryListIllegal() {
try {
new HistoryList<String>(-2);
fail();
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
public void testAddFirst() throws MalformedURLException {
HistoryList<URL> list = new HistoryList<URL>();
list.add(new File("test1.xml").toURI().toURL());
assertEquals(1, list.size());
Iterator<URL> iter = list.iterator();
assertEquals("test1.xml", new File(iter.next().getFile()).getName());
assertFalse(iter.hasNext());
assertEquals("test1.xml", new File(list.get(0).getFile()).getName());
try {
list.get(1);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testAdd2() throws MalformedURLException {
HistoryList<URL> list = new HistoryList<URL>();
list.add(new File("test1.xml").toURI().toURL());
list.add(new File("test2.xml").toURI().toURL());
Iterator<URL> iter = list.iterator();
assertEquals("test2.xml", new File(iter.next().getFile()).getName());
assertEquals("test1.xml", new File(iter.next().getFile()).getName());
assertEquals(2, list.size());
assertFalse(iter.hasNext());
assertEquals("test2.xml", new File(list.get(0).getFile()).getName());
assertEquals("test1.xml", new File(list.get(1).getFile()).getName());
try {
list.get(2);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testAdd3() throws MalformedURLException {
HistoryList<String> list = new HistoryList<String>();
list.add("test1.xml");
list.add("test2.xml");
list.add("test3.xml");
assertEquals(3, list.size());
Iterator<String> iter = list.iterator();
assertEquals("test3.xml", iter.next());
assertEquals("test2.xml", iter.next());
assertEquals("test1.xml", iter.next());
assertFalse(iter.hasNext());
assertEquals("test3.xml", list.get(0));
assertEquals("test2.xml", list.get(1));
assertEquals("test1.xml", list.get(2));
try {
list.get(3);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testAdd3PartiallySame() throws MalformedURLException {
HistoryList<String> list = new HistoryList<String>();
list.add("test1.xml");
list.add("test2.xml");
list.add("test2.xml");
list.add("test3.xml");
list.add("test3.xml");
list.add("test2.xml");
assertEquals(3, list.size());
Iterator<String> iter = list.iterator();
assertEquals("test2.xml", iter.next());
assertEquals("test3.xml", iter.next());
assertEquals("test1.xml", iter.next());
assertFalse(iter.hasNext());
assertEquals("test2.xml", list.get(0));
assertEquals("test3.xml", list.get(1));
assertEquals("test1.xml", list.get(2));
try {
list.get(3);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testAdd5() throws MalformedURLException {
HistoryList<URL> historyList = new HistoryList<URL>();
historyList.add(new File("test1.xml").toURI().toURL());
historyList.add(new File("test2.xml").toURI().toURL());
historyList.add(new File("test3.xml").toURI().toURL());
historyList.add(new File("test4.xml").toURI().toURL());
historyList.add(new File("test5.xml").toURI().toURL());
assertEquals(5, historyList.size());
Iterator<URL> iter = historyList.iterator();
assertEquals("test5.xml", new File(iter.next().getFile()).getName());
assertEquals("test4.xml", new File(iter.next().getFile()).getName());
assertEquals("test3.xml", new File(iter.next().getFile()).getName());
assertEquals("test2.xml", new File(iter.next().getFile()).getName());
assertEquals("test1.xml", new File(iter.next().getFile()).getName());
assertFalse(iter.hasNext());
assertEquals("test5.xml", new File(historyList.get(0).getFile()).getName());
assertEquals("test4.xml", new File(historyList.get(1).getFile()).getName());
assertEquals("test3.xml", new File(historyList.get(2).getFile()).getName());
assertEquals("test2.xml", new File(historyList.get(3).getFile()).getName());
assertEquals("test1.xml", new File(historyList.get(4).getFile()).getName());
try {
historyList.get(5);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testAddMoreThanMax() throws MalformedURLException {
HistoryList<URL> list = new HistoryList<URL>(3);
list.add(new File("test1.xml").toURI().toURL());
assertEquals(1, list.size());
list.add(new File("test2.xml").toURI().toURL());
assertEquals(2, list.size());
list.add(new File("test3.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test4.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test5.xml").toURI().toURL());
assertEquals(3, list.size());
Iterator<URL> iter = list.iterator();
assertEquals("test5.xml", new File(iter.next().getFile()).getName());
assertEquals("test4.xml", new File(iter.next().getFile()).getName());
assertEquals("test3.xml", new File(iter.next().getFile()).getName());
assertFalse(iter.hasNext());
assertEquals("test5.xml", new File(list.get(0).getFile()).getName());
assertEquals("test4.xml", new File(list.get(1).getFile()).getName());
assertEquals("test3.xml", new File(list.get(2).getFile()).getName());
try {
list.get(3);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testAddMoreThanMaxPartiallySame() throws MalformedURLException {
HistoryList<URL> list = new HistoryList<URL>(3);
list.add(new File("test1.xml").toURI().toURL());
assertEquals(1, list.size());
list.add(new File("test2.xml").toURI().toURL());
assertEquals(2, list.size());
list.add(new File("test1.xml").toURI().toURL());
assertEquals(2, list.size());
list.add(new File("test3.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test4.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test3.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test5.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test4.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test4.xml").toURI().toURL());
assertEquals(3, list.size());
Iterator<URL> iter = list.iterator();
assertEquals("test4.xml", new File(iter.next().getFile()).getName());
assertEquals("test5.xml", new File(iter.next().getFile()).getName());
assertEquals("test3.xml", new File(iter.next().getFile()).getName());
assertFalse(iter.hasNext());
assertEquals("test4.xml", new File(list.get(0).getFile()).getName());
assertEquals("test5.xml", new File(list.get(1).getFile()).getName());
assertEquals("test3.xml", new File(list.get(2).getFile()).getName());
try {
list.get(3);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testSetMaxGreater() throws MalformedURLException {
HistoryList<URL> list = new HistoryList<URL>(3);
list.add(new File("test1.xml").toURI().toURL());
assertEquals(1, list.size());
list.add(new File("test2.xml").toURI().toURL());
assertEquals(2, list.size());
list.add(new File("test3.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test4.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test5.xml").toURI().toURL());
assertEquals(3, list.size());
assertEquals("test5.xml", new File(list.get(0).getFile()).getName());
assertEquals("test4.xml", new File(list.get(1).getFile()).getName());
assertEquals("test3.xml", new File(list.get(2).getFile()).getName());
try {
list.get(3);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
list.setMax(5);
assertEquals(3, list.size());
list.add(new File("test6.xml").toURI().toURL());
assertEquals(4, list.size());
list.add(new File("test7.xml").toURI().toURL());
assertEquals(5, list.size());
list.add(new File("test8.xml").toURI().toURL());
assertEquals(5, list.size());
assertEquals("test8.xml", new File(list.get(0).getFile()).getName());
assertEquals("test7.xml", new File(list.get(1).getFile()).getName());
assertEquals("test6.xml", new File(list.get(2).getFile()).getName());
assertEquals("test5.xml", new File(list.get(3).getFile()).getName());
assertEquals("test4.xml", new File(list.get(4).getFile()).getName());
try {
list.get(5);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testSetMaxLessFilled() throws MalformedURLException {
HistoryList<URL> list = new HistoryList<URL>(4);
list.add(new File("test1.xml").toURI().toURL());
assertEquals(1, list.size());
list.add(new File("test2.xml").toURI().toURL());
assertEquals(2, list.size());
list.add(new File("test3.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test4.xml").toURI().toURL());
assertEquals(4, list.size());
list.add(new File("test5.xml").toURI().toURL());
assertEquals(4, list.size());
assertEquals("test5.xml", new File(list.get(0).getFile()).getName());
assertEquals("test4.xml", new File(list.get(1).getFile()).getName());
assertEquals("test3.xml", new File(list.get(2).getFile()).getName());
assertEquals("test2.xml", new File(list.get(3).getFile()).getName());
try {
list.get(4);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
list.setMax(2);
assertEquals(2, list.size());
assertEquals("test5.xml", new File(list.get(0).getFile()).getName());
assertEquals("test4.xml", new File(list.get(1).getFile()).getName());
try {
list.get(2);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testSetMaxLessNotFilled() throws MalformedURLException {
HistoryList<URL> list = new HistoryList<URL>(4);
list.add(new File("test1.xml").toURI().toURL());
assertEquals(1, list.size());
list.add(new File("test2.xml").toURI().toURL());
assertEquals(2, list.size());
list.add(new File("test3.xml").toURI().toURL());
assertEquals(3, list.size());
assertEquals("test3.xml", new File(list.get(0).getFile()).getName());
assertEquals("test2.xml", new File(list.get(1).getFile()).getName());
assertEquals("test1.xml", new File(list.get(2).getFile()).getName());
try {
list.get(3);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
list.setMax(2);
assertEquals(2, list.size());
assertEquals("test3.xml", new File(list.get(0).getFile()).getName());
assertEquals("test2.xml", new File(list.get(1).getFile()).getName());
try {
list.get(2);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testSetMaxEqual() throws MalformedURLException {
HistoryList<URL> list = new HistoryList<URL>(4);
list.add(new File("test1.xml").toURI().toURL());
assertEquals(1, list.size());
list.add(new File("test2.xml").toURI().toURL());
assertEquals(2, list.size());
list.add(new File("test3.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test4.xml").toURI().toURL());
assertEquals(4, list.size());
list.add(new File("test5.xml").toURI().toURL());
list.setMax(4);
assertEquals(4, list.size());
assertEquals("test5.xml", new File(list.get(0).getFile()).getName());
assertEquals("test4.xml", new File(list.get(1).getFile()).getName());
assertEquals("test3.xml", new File(list.get(2).getFile()).getName());
assertEquals("test2.xml", new File(list.get(3).getFile()).getName());
try {
list.get(4);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
public void testAddDoubleUrl() throws MalformedURLException {
HistoryList<URL> list = new HistoryList<URL>(4);
list.add(new File("test1.xml").toURI().toURL());
assertEquals(1, list.size());
list.add(new File("test2.xml").toURI().toURL());
assertEquals(2, list.size());
list.add(new File("test2.xml").toURI().toURL());
assertEquals(2, list.size());
list.add(new File("test3.xml").toURI().toURL());
assertEquals(3, list.size());
list.add(new File("test4.xml").toURI().toURL());
assertEquals(4, list.size());
list.add(new File("test5.xml").toURI().toURL());
assertEquals("test5.xml", new File(list.get(0).getFile()).getName());
assertEquals("test4.xml", new File(list.get(1).getFile()).getName());
assertEquals("test3.xml", new File(list.get(2).getFile()).getName());
assertEquals("test2.xml", new File(list.get(3).getFile()).getName());
try {
list.get(4);
fail();
} catch (IndexOutOfBoundsException e) {
assertTrue(true);
}
}
}