package org.limewire.core.impl.library;
import java.io.File;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.limewire.core.api.library.LocalFileItem;
import org.limewire.util.BaseTestCase;
import ca.odell.glazedlists.BasicEventList;
import ca.odell.glazedlists.EventList;
import ca.odell.glazedlists.event.ListEventPublisher;
import ca.odell.glazedlists.util.concurrent.ReadWriteLock;
public class CombinedShareListTest extends BaseTestCase {
public CombinedShareListTest(String name) {
super(name);
}
public void testCombinedShareList() throws Exception {
Mockery context = new Mockery();
final LocalFileItem localFileItem1 = context.mock(LocalFileItem.class);
final LocalFileItem localFileItem2 = context.mock(LocalFileItem.class);
final LocalFileItem localFileItem3 = context.mock(LocalFileItem.class);
final LocalFileItem duplicateItem = context.mock(LocalFileItem.class);
context.checking(new Expectations() {
{
allowing(localFileItem1).getFile();
will(returnValue(new File("/tmp/1")));
allowing(localFileItem2).getFile();
will(returnValue(new File("/tmp/2")));
allowing(localFileItem3).getFile();
will(returnValue(new File("/tmp/3")));
allowing(duplicateItem).getFile();
will(returnValue(new File("/tmp/1")));
}
});
EventList<LocalFileItem> masterList = new BasicEventList<LocalFileItem>();
masterList.add(localFileItem1);
ListEventPublisher listEventPublisher = masterList.getPublisher();
ReadWriteLock readWriteLock = masterList.getReadWriteLock();
CombinedShareList combinedShareList = new CombinedShareList(listEventPublisher,
readWriteLock);
assertEquals(0, combinedShareList.size());
EventList<LocalFileItem> subList1 = combinedShareList.createMemberList();
subList1.add(localFileItem1);
assertEquals(0, combinedShareList.size());
combinedShareList.addMemberList(subList1);
assertEquals(1, combinedShareList.size());
EventList<LocalFileItem> subList2 = combinedShareList.createMemberList();
combinedShareList.addMemberList(subList2);
subList2.add(localFileItem2);
subList2.add(localFileItem3);
assertEquals(3, combinedShareList.size());
subList2.add(duplicateItem);
assertEquals(3, combinedShareList.size());
subList2.remove(duplicateItem);
assertEquals(3, combinedShareList.size());
subList2.remove(localFileItem3);
assertEquals(2, combinedShareList.size());
combinedShareList.removeMemberList(subList2);
assertEquals(1, combinedShareList.size());
subList1.remove(localFileItem1);
assertEquals(0, combinedShareList.size());
}
}