package org.edx.mobile.test;
import org.edx.mobile.util.WeakList;
import org.junit.Before;
import org.junit.Test;
import java.lang.ref.WeakReference;
import static junit.framework.TestCase.assertTrue;
/**
*
*/
public class WeakListTest {
@Before
public void setUp() throws Exception {
}
@Test
public void testAdd() throws Exception {
WeakList<Object> list = new WeakList<>();
Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = new Object();
list.add(obj1);
assertTrue("add op failed", list.size() == 1);
list.add(obj3);
list.add(1, obj2);
assertTrue("add at index op failed", list.get(1) == obj2 );
assertTrue("size() op failed", list.size() == 3 );
}
@Test
public void testRemoveReleased() throws Exception {
WeakList<Object> list = new WeakList<>();
Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = new Object();
WeakReference<Object> obj1Wrapper = list.add(obj1);
WeakReference<Object> obj2Wrapper = list.add(obj2);
WeakReference<Object> obj3Wrapper = list.add(obj3);
assertTrue("size() op failed", list.size() == 3 );
obj2Wrapper.clear();
list.removeReleased();
assertTrue("removeReleased() op failed", list.size() == 2 );
obj1Wrapper.clear();
obj3Wrapper.clear();
list.removeReleased();
assertTrue("removeReleased() op failed", list.size() == 0 );
}
@Test
public void testGetFirstValid() throws Exception {
WeakList<Object> list = new WeakList<>();
Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = new Object();
WeakReference<Object> obj1Wrapper = list.add(obj1);
WeakReference<Object> obj2Wrapper = list.add(obj2);
WeakReference<Object> obj3Wrapper = list.add(obj3);
obj1Wrapper.clear();
assertTrue("GetFirstValid() op failed", list.getFirstValid() == obj2 );
obj3Wrapper.clear();
assertTrue("GetFirstValid() op failed", list.getFirstValid() == obj2 );
}
@Test
public void testGetLastValid() throws Exception {
WeakList<Object> list = new WeakList<>();
Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = new Object();
WeakReference<Object> obj1Wrapper = list.add(obj1);
WeakReference<Object> obj2Wrapper = list.add(obj2);
WeakReference<Object> obj3Wrapper = list.add(obj3);
obj1Wrapper.clear();
assertTrue("getLastValid() op failed", list.getLastValid() == obj3 );
obj3Wrapper.clear();
assertTrue("getLastValid() op failed", list.getLastValid() == obj2 );
}
@Test
public void testHas() throws Exception {
WeakList<Object> list = new WeakList<>();
Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = new Object();
WeakReference<Object> obj1Wrapper = list.add(obj1);
WeakReference<Object> obj2Wrapper = list.add(obj2);
assertTrue("has() op failed", list.has(obj1) );
assertTrue("has() op failed", !list.has(obj3) );
}
@Test
public void testRemove() throws Exception {
WeakList<Object> list = new WeakList<>();
Object obj1 = new Object();
Object obj2 = new Object();
Object obj3 = new Object();
WeakReference<Object> obj1Wrapper = list.add(obj1);
WeakReference<Object> obj2Wrapper = list.add(obj2);
list.remove(obj1);
assertTrue("remove() op failed", list.size() == 1 );
list.remove(obj3);
assertTrue("remove() op failed", list.size() == 1);
}
}