package net.bible.android.control.page.window; import net.bible.android.TestBibleApplication; import net.bible.android.activity.BuildConfig; import net.bible.android.control.event.ABEventBus; import net.bible.android.control.event.EventManager; import net.bible.android.control.page.CurrentPageManager; import net.bible.service.sword.SwordDocumentFacade; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; import javax.inject.Provider; import robolectric.MyRobolectricTestRunner; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; @RunWith(MyRobolectricTestRunner.class) @Config(constants = BuildConfig.class, application = TestBibleApplication.class) public class WindowSynchronisationTest { private EventManager eventManager; private WindowRepository windowRepository; private WindowControl windowControl; @Before public void setUp() throws Exception { eventManager = ABEventBus.getDefault(); Provider<CurrentPageManager> mockCurrentPageManagerProvider = new Provider<CurrentPageManager>() { @Override public CurrentPageManager get() { return new CurrentPageManager(null, new SwordDocumentFacade(null), null, null); } }; windowRepository = new WindowRepository(mockCurrentPageManagerProvider); windowControl = new WindowControl(windowRepository, eventManager); } @Test public void testSynchronizeScreens() throws Exception { Window window2 = windowControl.addNewWindow(); assertThat(window2.getPageManager().getCurrentBible().getCurrentVerseNo(), not(equalTo(7))); Window mainWindow = windowControl.getActiveWindow(); mainWindow.getPageManager().getCurrentBible().setCurrentVerseNo(7); assertThat(mainWindow.getPageManager().getCurrentBible().getCurrentVerseNo(), equalTo(7)); Thread.sleep(500); assertThat(window2.getPageManager().getCurrentBible().getCurrentVerseNo(), equalTo(7)); } }