package org.limewire.core.impl.download;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.limewire.core.api.download.DownloadItem;
import org.limewire.core.api.download.DownloadState;
import org.limewire.util.BaseTestCase;
import ca.odell.glazedlists.BasicEventList;
import ca.odell.glazedlists.EventList;
public class QueueTimeCalculatorTest extends BaseTestCase {
public QueueTimeCalculatorTest(String name) {
super(name);
}
public void testGetRemainingQueueTime1ItemDownloading1Queued() {
Mockery context = new Mockery();
final DownloadItem downloadItem1 = context.mock(DownloadItem.class);
final DownloadItem downloadItem2 = context.mock(DownloadItem.class);
EventList<DownloadItem> downloadItems = new BasicEventList<DownloadItem>();
downloadItems.add(downloadItem1);
downloadItems.add(downloadItem2);
final long remaingDownloadTime1 = 500L;
context.checking(new Expectations() {
{
allowing(downloadItem1).getState();
will(returnValue(DownloadState.DOWNLOADING));
allowing(downloadItem2).getState();
will(returnValue(DownloadState.LOCAL_QUEUED));
allowing(downloadItem1).getRemainingDownloadTime();
will(returnValue(remaingDownloadTime1));
allowing(downloadItem2).getLocalQueuePriority();
will(returnValue(1));
}
});
QueueTimeCalculator queueTimeCalculator = new QueueTimeCalculator(downloadItems);
assertEquals(remaingDownloadTime1, queueTimeCalculator.getRemainingQueueTime(downloadItem2));
context.assertIsSatisfied();
}
public void testGetRemainingQueueTime2ItemsDownloading1Queued() {
Mockery context = new Mockery();
final DownloadItem downloadItem1 = context.mock(DownloadItem.class);
final DownloadItem downloadItem2 = context.mock(DownloadItem.class);
final DownloadItem downloadItem3 = context.mock(DownloadItem.class);
EventList<DownloadItem> downloadItems = new BasicEventList<DownloadItem>();
downloadItems.add(downloadItem1);
downloadItems.add(downloadItem2);
downloadItems.add(downloadItem3);
final long remaingDownloadTime1 = 500L;
final long remaingDownloadTime2 = 200L;
context.checking(new Expectations() {
{
allowing(downloadItem1).getState();
will(returnValue(DownloadState.DOWNLOADING));
allowing(downloadItem2).getState();
will(returnValue(DownloadState.DOWNLOADING));
allowing(downloadItem3).getState();
will(returnValue(DownloadState.LOCAL_QUEUED));
allowing(downloadItem1).getRemainingDownloadTime();
will(returnValue(remaingDownloadTime1));
allowing(downloadItem2).getRemainingDownloadTime();
will(returnValue(remaingDownloadTime2));
allowing(downloadItem3).getLocalQueuePriority();
will(returnValue(1));
}
});
QueueTimeCalculator queueTimeCalculator = new QueueTimeCalculator(downloadItems);
assertEquals(remaingDownloadTime2, queueTimeCalculator.getRemainingQueueTime(downloadItem3));
context.assertIsSatisfied();
}
public void testGetRemainingQueueTime2ItemsDownloading2Queued() {
Mockery context = new Mockery();
final DownloadItem downloadItem1 = context.mock(DownloadItem.class);
final DownloadItem downloadItem2 = context.mock(DownloadItem.class);
final DownloadItem downloadItem3 = context.mock(DownloadItem.class);
final DownloadItem downloadItem4 = context.mock(DownloadItem.class);
EventList<DownloadItem> downloadItems = new BasicEventList<DownloadItem>();
downloadItems.add(downloadItem1);
downloadItems.add(downloadItem2);
downloadItems.add(downloadItem3);
downloadItems.add(downloadItem4);
final long remaingDownloadTime1 = 500L;
final long remaingDownloadTime2 = 200L;
context.checking(new Expectations() {
{
allowing(downloadItem1).getState();
will(returnValue(DownloadState.DOWNLOADING));
allowing(downloadItem2).getState();
will(returnValue(DownloadState.DOWNLOADING));
allowing(downloadItem3).getState();
will(returnValue(DownloadState.LOCAL_QUEUED));
allowing(downloadItem4).getState();
will(returnValue(DownloadState.LOCAL_QUEUED));
allowing(downloadItem1).getRemainingDownloadTime();
will(returnValue(remaingDownloadTime1));
allowing(downloadItem2).getRemainingDownloadTime();
will(returnValue(remaingDownloadTime2));
allowing(downloadItem3).getLocalQueuePriority();
will(returnValue(1));
allowing(downloadItem4).getLocalQueuePriority();
will(returnValue(2));
}
});
QueueTimeCalculator queueTimeCalculator = new QueueTimeCalculator(downloadItems);
assertEquals(remaingDownloadTime2, queueTimeCalculator.getRemainingQueueTime(downloadItem3));
assertEquals(remaingDownloadTime1, queueTimeCalculator.getRemainingQueueTime(downloadItem4));
context.assertIsSatisfied();
}
}