package com.mopub.mobileads;
import org.junit.Before;
import org.junit.Test;
import static org.fest.assertions.api.Assertions.assertThat;
public class TaskTrackerTest {
private TaskTracker taskTracker;
@Before
public void setUp() throws Exception {
taskTracker = new TaskTracker();
}
@Test
public void newTaskStarted_shouldIncrementIdsFromNegativeOne() throws Exception {
assertThat(taskTracker.getCurrentTaskId()).isEqualTo(-1);
taskTracker.newTaskStarted();
assertThat(taskTracker.getCurrentTaskId()).isEqualTo(0);
}
@Test
public void isMostCurrentTask_onFirstTask_whenSecondTaskIsCompleted_shouldBeFalse() throws Exception {
taskTracker.newTaskStarted();
taskTracker.newTaskStarted();
taskTracker.markTaskCompleted(taskTracker.getCurrentTaskId());
assertThat(taskTracker.isMostCurrentTask(0)).isFalse();
}
@Test
public void isMostCurrentTask_onFirstTask_whenSecondTaskIsNotCompleted_shouldBeTrue() throws Exception {
taskTracker.newTaskStarted();
taskTracker.newTaskStarted();
assertThat(taskTracker.isMostCurrentTask(0)).isTrue();
}
@Test
public void mostCurrentTaskIsLastCompletedTaskOrLater() throws Exception {
taskTracker.newTaskStarted();
taskTracker.newTaskStarted();
taskTracker.newTaskStarted();
taskTracker.markTaskCompleted(1);
assertThat(taskTracker.isMostCurrentTask(0)).isFalse();
assertThat(taskTracker.isMostCurrentTask(1)).isTrue();
assertThat(taskTracker.isMostCurrentTask(2)).isTrue();
}
@Test
public void markTaskCompleted_shouldKeepTrackOfMostCurrentTaskRegardlessOfCompletionOrder() throws Exception {
taskTracker.newTaskStarted();
taskTracker.newTaskStarted();
taskTracker.newTaskStarted();
taskTracker.markTaskCompleted(1);
taskTracker.markTaskCompleted(0);
assertThat(taskTracker.isMostCurrentTask(0)).isFalse();
assertThat(taskTracker.isMostCurrentTask(1)).isTrue();
}
}