package org.edx.mobile.test; import org.edx.mobile.model.course.CourseComponent; import org.edx.mobile.services.ViewPagerDownloadManager; import org.edx.mobile.view.common.RunnableCourseComponent; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import java.util.ArrayList; import java.util.List; import static junit.framework.Assert.assertTrue; @RunWith(MockitoJUnitRunner.class) public class ViewPagerDownloadManagerTest { final CourseComponent mainComponent = Mockito.mock(CourseComponent.class); final CourseComponent prevComponent = Mockito.mock(CourseComponent.class); final CourseComponent nextComponent = Mockito.mock(CourseComponent.class); final CourseComponent otherComponent = Mockito.mock(CourseComponent.class); RunnableCourseComponent mainComponentUI; RunnableCourseComponent prevComponentUI; RunnableCourseComponent nextComponentUI; RunnableCourseComponent otherComponentUI; @Before public void setUp() throws Exception { //use mockito.answer is a little inconvenience, let's use fake approach mainComponentUI = new RunnableCourseComponent(){ @Override public CourseComponent getCourseComponent() { return mainComponent; } @Override public void run() { ViewPagerDownloadManager.instance.done(this, true); } }; prevComponentUI = new RunnableCourseComponent(){ @Override public CourseComponent getCourseComponent() { return prevComponent; } @Override public void run() { ViewPagerDownloadManager.instance.done(this, true); } }; nextComponentUI = new RunnableCourseComponent(){ @Override public CourseComponent getCourseComponent() { return nextComponent; } @Override public void run() { ViewPagerDownloadManager.instance.done(this, true); } }; otherComponentUI = new RunnableCourseComponent(){ @Override public CourseComponent getCourseComponent() { return otherComponent; } @Override public void run() { ViewPagerDownloadManager.instance.done(this, true); } }; ViewPagerDownloadManager.USING_UI_PRELOADING = true; } @Test public void testInInitialPhase() throws Exception { List<CourseComponent> unitlist = new ArrayList<>(); unitlist.add(prevComponent); unitlist.add(mainComponent); unitlist.add(nextComponent); ViewPagerDownloadManager.instance.setMainComponent(mainComponent, unitlist); assertTrue("InInitialPhase() op failed", !ViewPagerDownloadManager.instance.inInitialPhase(prevComponent) ); assertTrue("InInitialPhase() op failed", !ViewPagerDownloadManager.instance.inInitialPhase(mainComponent) ); assertTrue("InInitialPhase() op failed", !ViewPagerDownloadManager.instance.inInitialPhase(nextComponent) ); assertTrue("InInitialPhase() op failed", !ViewPagerDownloadManager.instance.inInitialPhase(otherComponent) ); ViewPagerDownloadManager.instance.addTask(prevComponentUI); assertTrue("InInitialPhase() op failed", !ViewPagerDownloadManager.instance.inInitialPhase(otherComponent) ); ViewPagerDownloadManager.instance.addTask(mainComponentUI); assertTrue("InInitialPhase() op failed", !ViewPagerDownloadManager.instance.inInitialPhase(otherComponent) ); } @Test public void testAddTask() throws Exception { List<CourseComponent> unitlist = new ArrayList<>(); unitlist.add(prevComponent); unitlist.add(mainComponent); unitlist.add(nextComponent); ViewPagerDownloadManager.instance.setMainComponent(mainComponent, unitlist); ViewPagerDownloadManager.instance.addTask(prevComponentUI); assertTrue("addTask() op failed", !ViewPagerDownloadManager.instance.isTaskIsRunning() ); assertTrue("addTask() op failed", ViewPagerDownloadManager.instance.numTaskInStack() == 0 ); ViewPagerDownloadManager.instance.addTask(mainComponentUI); assertTrue("addTask() op failed for add main component", ViewPagerDownloadManager.instance.numTaskInStack() == 0 ); assertTrue("addTask() op failed for add main component", !ViewPagerDownloadManager.instance.isTaskIsRunning() ); ViewPagerDownloadManager.instance.addTask(nextComponentUI); assertTrue("addTask() op failed for add main component", ViewPagerDownloadManager.instance.numTaskInStack() == 0 ); } }