@Test public void enqueue() { doNothing().when(serialQueue).startNewLooper(); // order when(task1.compareTo(task2)).thenReturn(-1); serialQueue.enqueue(task2); serialQueue.enqueue(task1); verify(taskList).add(eq(task1)); verify(taskList).add(eq(task2)); assertThat(taskList).containsExactly(task1, task2); }
@Test public void enqueue_newLooper() { doNothing().when(serialQueue).startNewLooper(); serialQueue.paused = true; serialQueue.enqueue(task1); verify(serialQueue, never()).startNewLooper(); serialQueue.looping = true; serialQueue.enqueue(task1); verify(serialQueue, never()).startNewLooper(); serialQueue.paused = false; serialQueue.looping = false; serialQueue.enqueue(task1); verify(serialQueue).startNewLooper(); assertThat(serialQueue.looping).isTrue(); }
/** * Enqueues the given task sometime in the serial queue. If the {@code task} is in the head of * the serial queue, the {@code task} will be started automatically. */ public void enqueue(BaseDownloadTask task) { final DownloadTaskAdapter downloadTaskAdapter = (DownloadTaskAdapter) task; downloadTaskAdapter.assembleDownloadTask(); FileDownloadList.getImpl().addIndependentTask(downloadTaskAdapter); serialQueue.enqueue(downloadTaskAdapter.getDownloadTask()); listenerManager.addAutoRemoveListenersWhenTaskEnd(downloadTaskAdapter.getId()); listenerManager.attachListener(downloadTaskAdapter.getDownloadTask(), downloadTaskAdapter.getCompatListener()); }