package org.limewire.core.impl.mozilla; import java.util.concurrent.ScheduledExecutorService; import org.jmock.Expectations; import org.jmock.Mockery; import org.jmock.lib.legacy.ClassImposteriser; import org.limewire.util.BaseTestCase; import org.limewire.util.ExecuteRunnableAction; import org.mozilla.interfaces.nsIDownload; import org.mozilla.interfaces.nsIDownloadManager; import org.mozilla.interfaces.nsILocalFile; import com.limegroup.gnutella.Downloader.DownloadState; import com.limegroup.gnutella.downloader.CoreDownloader; public class LimeMozillaDownloadProgressListenerImplTest extends BaseTestCase { public LimeMozillaDownloadProgressListenerImplTest(String name) { super(name); } public void testInitialization() { Mockery context = new Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; final nsIDownload download = context.mock(nsIDownload.class); final long downloadId = 1; final long downloadSize = 1234; final nsILocalFile targetFile = context.mock(nsILocalFile.class); final LimeMozillaDownloadManagerListenerImpl downloadManager = context .mock(LimeMozillaDownloadManagerListenerImpl.class); final ScheduledExecutorService executorService = context .mock(ScheduledExecutorService.class); final CoreDownloader coreDownloader = context.mock(CoreDownloader.class); final XPComUtility xpComUtility = context.mock(XPComUtility.class); context.checking(new Expectations() { { allowing(download).getId(); will(returnValue(downloadId)); one(download).getSize(); will(returnValue(downloadSize)); one(download).getTargetFile(); will(returnValue(targetFile)); one(targetFile).getPath(); will(returnValue("/tmp/somefile")); one(executorService).execute(with(any(Runnable.class))); will(new ExecuteRunnableAction()); } }); LimeMozillaDownloadProgressListenerImpl limeMozillaDownloadProgressListenerImpl = new LimeMozillaDownloadProgressListenerImpl( downloadManager, executorService, download, xpComUtility); limeMozillaDownloadProgressListenerImpl.init(coreDownloader, nsIDownloadManager.DOWNLOAD_QUEUED); assertEquals(downloadId, limeMozillaDownloadProgressListenerImpl.getDownloadId()); context.assertIsSatisfied(); } public void testOnStateChange() { Mockery context = new Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; final nsIDownload download = context.mock(nsIDownload.class); final long downloadId = 1; final long downloadSize = 1234; final nsILocalFile targetFile = context.mock(nsILocalFile.class); final LimeMozillaDownloadManagerListenerImpl downloadManager = context .mock(LimeMozillaDownloadManagerListenerImpl.class); final ScheduledExecutorService executorService = context .mock(ScheduledExecutorService.class); final CoreDownloader coreDownloader = context.mock(CoreDownloader.class); final XPComUtility xpComUtility = context.mock(XPComUtility.class); context.checking(new Expectations() { { allowing(download).getId(); will(returnValue(downloadId)); allowing(download).getSize(); will(returnValue(downloadSize)); one(download).getTargetFile(); will(returnValue(targetFile)); one(targetFile).getPath(); will(returnValue("/tmp/somefile")); allowing(executorService).execute(with(any(Runnable.class))); will(new ExecuteRunnableAction()); } }); LimeMozillaDownloadProgressListenerImpl limeMozillaDownloadProgressListenerImpl = new LimeMozillaDownloadProgressListenerImpl( downloadManager, executorService, download, xpComUtility); limeMozillaDownloadProgressListenerImpl.init(coreDownloader, nsIDownloadManager.DOWNLOAD_QUEUED); assertTrue(limeMozillaDownloadProgressListenerImpl.isQueued()); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertEquals(DownloadState.QUEUED, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_PAUSED)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertTrue(limeMozillaDownloadProgressListenerImpl.isPaused()); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.PAUSED, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_CANCELED)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertTrue(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.ABORTED, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_FAILED)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertTrue(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.INVALID, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_BLOCKED_PARENTAL)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertTrue(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.INVALID, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_BLOCKED_POLICY)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertTrue(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.INVALID, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_DIRTY)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertTrue(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.INVALID, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_FAILED)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertTrue(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.INVALID, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_DOWNLOADING)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertFalse(limeMozillaDownloadProgressListenerImpl.isInactive()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.DOWNLOADING, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_NOTSTARTED)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.PAUSED, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_SCANNING)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertFalse(limeMozillaDownloadProgressListenerImpl.isInactive()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.RESUMING, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.checking(new Expectations() { { one(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_FINISHED)); } }); limeMozillaDownloadProgressListenerImpl.onStateChange(null, null, -1, -1, download); assertTrue(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.COMPLETE, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); assertEquals(downloadSize, limeMozillaDownloadProgressListenerImpl.getAmountDownloaded()); assertEquals(0, limeMozillaDownloadProgressListenerImpl.getAmountPending()); assertEquals(downloadSize, limeMozillaDownloadProgressListenerImpl.getContentLength()); limeMozillaDownloadProgressListenerImpl.setDiskError(); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertTrue(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertEquals(DownloadState.INVALID, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); context.assertIsSatisfied(); } public void testOnProgressChange() { Mockery context = new Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; final nsIDownload download = context.mock(nsIDownload.class); final long downloadId = 1; final long downloadSize = 1234; final nsILocalFile targetFile = context.mock(nsILocalFile.class); final LimeMozillaDownloadManagerListenerImpl downloadManager = context .mock(LimeMozillaDownloadManagerListenerImpl.class); final ScheduledExecutorService executorService = context .mock(ScheduledExecutorService.class); final CoreDownloader coreDownloader = context.mock(CoreDownloader.class); final XPComUtility xpComUtility = context.mock(XPComUtility.class); context.checking(new Expectations() { { allowing(download).getId(); will(returnValue(downloadId)); allowing(download).getSize(); will(returnValue(downloadSize)); one(download).getTargetFile(); will(returnValue(targetFile)); one(targetFile).getPath(); will(returnValue("/tmp/somefile")); allowing(executorService).execute(with(any(Runnable.class))); will(new ExecuteRunnableAction()); } }); LimeMozillaDownloadProgressListenerImpl limeMozillaDownloadProgressListenerImpl = new LimeMozillaDownloadProgressListenerImpl( downloadManager, executorService, download, xpComUtility); limeMozillaDownloadProgressListenerImpl.init(coreDownloader, nsIDownloadManager.DOWNLOAD_QUEUED); assertTrue(limeMozillaDownloadProgressListenerImpl.isQueued()); assertTrue(limeMozillaDownloadProgressListenerImpl.isInactive()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertEquals(DownloadState.QUEUED, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); assertEquals(0, limeMozillaDownloadProgressListenerImpl.getAmountDownloaded()); assertEquals(downloadSize, limeMozillaDownloadProgressListenerImpl.getAmountPending()); assertEquals(downloadSize, limeMozillaDownloadProgressListenerImpl.getContentLength()); context.checking(new Expectations() { { allowing(download).getState(); will(returnValue(nsIDownloadManager.DOWNLOAD_DOWNLOADING)); } }); limeMozillaDownloadProgressListenerImpl.onProgressChange(null, null, -1, -1, 10, -1, download); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertFalse(limeMozillaDownloadProgressListenerImpl.isInactive()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertEquals(DownloadState.DOWNLOADING, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); assertEquals(10, limeMozillaDownloadProgressListenerImpl.getAmountDownloaded()); assertEquals(downloadSize - 10, limeMozillaDownloadProgressListenerImpl.getAmountPending()); assertEquals(downloadSize, limeMozillaDownloadProgressListenerImpl.getContentLength()); limeMozillaDownloadProgressListenerImpl.onProgressChange(null, null, -1, -1, 510, -1, download); assertFalse(limeMozillaDownloadProgressListenerImpl.isQueued()); assertFalse(limeMozillaDownloadProgressListenerImpl.isInactive()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCancelled()); assertFalse(limeMozillaDownloadProgressListenerImpl.isCompleted()); assertFalse(limeMozillaDownloadProgressListenerImpl.isPaused()); assertEquals(DownloadState.DOWNLOADING, limeMozillaDownloadProgressListenerImpl .getDownloadStatus()); assertEquals(510, limeMozillaDownloadProgressListenerImpl.getAmountDownloaded()); assertEquals(downloadSize - 10 - 500, limeMozillaDownloadProgressListenerImpl.getAmountPending()); assertEquals(downloadSize, limeMozillaDownloadProgressListenerImpl.getContentLength()); context.assertIsSatisfied(); } }