package org.limewire.collection;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import junit.framework.Test;
import org.limewire.util.BaseTestCase;
public class LIFOSetTest extends BaseTestCase {
public LIFOSetTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(LIFOSetTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public void testLIFOSet() {
String test = "test";
String test2 = "test2";
String test3 = "test3";
String test4 = "test4";
LIFOSet<String> lifo = new LIFOSet<String>();
assertEquals(lifo.size(),0);
lifo.add(test);
assertTrue(lifo.contains(test));
//try readding
assertFalse(lifo.add(test));
lifo.add(test2);
assertTrue(lifo.contains(test2));
lifo.add(test3);
assertTrue(lifo.contains(test3));
//try adding null
assertTrue(lifo.add(null));
assertFalse(lifo.add(null));
assertTrue(lifo.contains(null));
lifo.add(test4);
assertTrue(lifo.contains(test4));
//test the iterator
Iterator<String> it = lifo.iterator();
assertEquals(test4, it.next());
assertNull(it.next());
assertEquals(test3, it.next());
assertEquals(test2, it.next());
assertEquals(test, it.next());
try {
assertFalse(it.hasNext());
it.next();
assertTrue("should have thrown NoSuchElementException", false);
}catch(NoSuchElementException ex) {}
//try removing with iterator
it = lifo.iterator();
it.next();
it.remove();
assertFalse(lifo.contains(test4));
//try add all & remove all
lifo = new LIFOSet<String>();
List<String> l = Arrays.asList(test,test2,test3);
lifo.addAll(l);
assertTrue(lifo.contains(test));
assertTrue(lifo.contains(test2));
assertTrue(lifo.contains(test3));
assertTrue(lifo.containsAll(l));
l = Arrays.asList(test,test3);
lifo.removeAll(l);
assertFalse(lifo.contains(test));
assertTrue(lifo.contains(test2));
assertFalse(lifo.contains(test3));
assertFalse(lifo.containsAll(l));
//test clear
lifo.clear();
assertTrue(lifo.isEmpty());
assertFalse(lifo.iterator().hasNext());
//test remove first (eldest) element from the Set
lifo = new LIFOSet<String>();
lifo.add(test);
lifo.add(test2);
lifo.removeEldest();
assertTrue(lifo.contains(test2));
assertFalse(lifo.contains(test));
//test remove last (newest) element from the Set
lifo = new LIFOSet<String>();
lifo.add(test);
lifo.add(test2);
lifo.removeNewest();
assertFalse(lifo.contains(test2));
assertTrue(lifo.contains(test));
//test toArray
lifo = new LIFOSet<String>();
lifo.add(test);
lifo.add(test4);
String[] s = lifo.toArray(new String[lifo.size()]);
assertEquals(s[0], test4);
assertEquals(s[1], test);
}
}