Search in sources :

Example 11 with TestController

use of com.bluelinelabs.conductor.util.TestController in project Conductor by bluelinelabs.

the class ReattachCaseTests method testNeedsAttachingOnPauseAndOrientation.

@Test
public void testNeedsAttachingOnPauseAndOrientation() {
    final TestController controllerA = new TestController();
    final TestController controllerB = new TestController();
    router.pushController(RouterTransaction.with(controllerA).pushChangeHandler(MockChangeHandler.defaultHandler()).popChangeHandler(MockChangeHandler.defaultHandler()));
    assertTrue(controllerA.isAttached());
    assertFalse(controllerB.isAttached());
    sleepWakeDevice();
    assertTrue(controllerA.isAttached());
    assertFalse(controllerB.isAttached());
    router.pushController(RouterTransaction.with(controllerB).pushChangeHandler(MockChangeHandler.defaultHandler()).popChangeHandler(MockChangeHandler.defaultHandler()));
    assertFalse(controllerA.isAttached());
    assertTrue(controllerB.isAttached());
    activityProxy.rotate();
    router.rebindIfNeeded();
    assertFalse(controllerA.isAttached());
    assertTrue(controllerB.isAttached());
}
Also used : TestController(com.bluelinelabs.conductor.util.TestController) Test(org.junit.Test)

Example 12 with TestController

use of com.bluelinelabs.conductor.util.TestController in project Conductor by bluelinelabs.

the class ReattachCaseTests method testReusedChildRouterHandleBackOnOrientation.

// Attempt to test https://github.com/bluelinelabs/Conductor/issues/86#issuecomment-231381271
@Test
public void testReusedChildRouterHandleBackOnOrientation() {
    TestController controllerA = new TestController();
    TestController controllerB = new TestController();
    TestController childController = new TestController();
    router.pushController(RouterTransaction.with(controllerA).pushChangeHandler(MockChangeHandler.defaultHandler()).popChangeHandler(MockChangeHandler.defaultHandler()));
    assertTrue(controllerA.isAttached());
    assertFalse(controllerB.isAttached());
    assertFalse(childController.isAttached());
    router.pushController(RouterTransaction.with(controllerB).pushChangeHandler(MockChangeHandler.defaultHandler()).popChangeHandler(MockChangeHandler.defaultHandler()));
    Router childRouter = controllerB.getChildRouter((ViewGroup) controllerB.getView().findViewById(TestController.VIEW_ID));
    childRouter.setPopsLastView(true);
    childRouter.pushController(RouterTransaction.with(childController).pushChangeHandler(MockChangeHandler.defaultHandler()).popChangeHandler(MockChangeHandler.defaultHandler()));
    assertFalse(controllerA.isAttached());
    assertTrue(controllerB.isAttached());
    assertTrue(childController.isAttached());
    router.handleBack();
    assertFalse(controllerA.isAttached());
    assertTrue(controllerB.isAttached());
    assertFalse(childController.isAttached());
    childController = new TestController();
    childRouter.pushController(RouterTransaction.with(childController).pushChangeHandler(MockChangeHandler.defaultHandler()).popChangeHandler(MockChangeHandler.defaultHandler()));
    assertFalse(controllerA.isAttached());
    assertTrue(controllerB.isAttached());
    assertTrue(childController.isAttached());
    activityProxy.rotate();
    router.rebindIfNeeded();
    assertFalse(controllerA.isAttached());
    assertTrue(controllerB.isAttached());
    assertTrue(childController.isAttached());
    router.handleBack();
    childController = new TestController();
    childRouter.pushController(RouterTransaction.with(childController).pushChangeHandler(MockChangeHandler.defaultHandler()).popChangeHandler(MockChangeHandler.defaultHandler()));
    assertFalse(controllerA.isAttached());
    assertTrue(controllerB.isAttached());
    assertTrue(childController.isAttached());
    router.handleBack();
    assertFalse(controllerA.isAttached());
    assertTrue(controllerB.isAttached());
    assertFalse(childController.isAttached());
    router.handleBack();
    assertTrue(controllerA.isAttached());
    assertFalse(controllerB.isAttached());
    assertFalse(childController.isAttached());
}
Also used : TestController(com.bluelinelabs.conductor.util.TestController) Test(org.junit.Test)

Example 13 with TestController

use of com.bluelinelabs.conductor.util.TestController in project Conductor by bluelinelabs.

the class RouterChangeHandlerTests method testSetBackstackWithTwoVisibleHandlers.

@Test
public void testSetBackstackWithTwoVisibleHandlers() {
    TestController initialController1 = new TestController();
    MockChangeHandler initialPushHandler1 = MockChangeHandler.taggedHandler("initialPush1", true);
    MockChangeHandler initialPopHandler1 = MockChangeHandler.taggedHandler("initialPop1", true);
    router.setRoot(RouterTransaction.with(initialController1).pushChangeHandler(initialPushHandler1).popChangeHandler(initialPopHandler1));
    TestController initialController2 = new TestController();
    MockChangeHandler initialPushHandler2 = MockChangeHandler.taggedHandler("initialPush2", false);
    MockChangeHandler initialPopHandler2 = MockChangeHandler.taggedHandler("initialPop2", false);
    router.pushController(RouterTransaction.with(initialController2).pushChangeHandler(initialPushHandler2).popChangeHandler(initialPopHandler2));
    View initialView1 = initialController1.getView();
    View initialView2 = initialController2.getView();
    TestController newController1 = new TestController();
    TestController newController2 = new TestController();
    MockChangeHandler setBackstackHandler = MockChangeHandler.taggedHandler("setBackstackHandler", true);
    List<RouterTransaction> newBackstack = Arrays.asList(RouterTransaction.with(newController1), RouterTransaction.with(newController2).pushChangeHandler(MockChangeHandler.noRemoveViewOnPushHandler()));
    router.setBackstack(newBackstack, setBackstackHandler);
    assertTrue(initialController1.changeHandlerHistory.isValidHistory);
    assertTrue(initialController2.changeHandlerHistory.isValidHistory);
    assertTrue(newController1.changeHandlerHistory.isValidHistory);
    assertEquals(3, initialController1.changeHandlerHistory.size());
    assertEquals(2, initialController2.changeHandlerHistory.size());
    assertEquals(2, newController1.changeHandlerHistory.size());
    assertEquals(1, newController2.changeHandlerHistory.size());
    assertNotNull(initialController1.changeHandlerHistory.latestToView());
    assertEquals(newController1.getView(), initialController1.changeHandlerHistory.latestToView());
    assertEquals(initialView1, initialController1.changeHandlerHistory.latestFromView());
    assertEquals(setBackstackHandler.tag, initialController1.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(initialController1.changeHandlerHistory.latestIsPush());
    assertNull(initialController2.changeHandlerHistory.latestToView());
    assertEquals(initialView2, initialController2.changeHandlerHistory.latestFromView());
    assertEquals(setBackstackHandler.tag, initialController2.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(initialController2.changeHandlerHistory.latestIsPush());
    assertNotNull(newController1.changeHandlerHistory.latestToView());
    assertEquals(newController1.getView(), newController1.changeHandlerHistory.toViewAt(0));
    assertEquals(newController2.getView(), newController1.changeHandlerHistory.latestToView());
    assertEquals(initialView1, newController1.changeHandlerHistory.fromViewAt(0));
    assertEquals(newController1.getView(), newController1.changeHandlerHistory.latestFromView());
    assertEquals(setBackstackHandler.tag, newController1.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(newController1.changeHandlerHistory.latestIsPush());
    assertNotNull(newController2.changeHandlerHistory.latestToView());
    assertEquals(newController2.getView(), newController2.changeHandlerHistory.latestToView());
    assertEquals(newController1.getView(), newController2.changeHandlerHistory.latestFromView());
    assertEquals(setBackstackHandler.tag, newController2.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(newController2.changeHandlerHistory.latestIsPush());
}
Also used : MockChangeHandler(com.bluelinelabs.conductor.util.MockChangeHandler) TestController(com.bluelinelabs.conductor.util.TestController) View(android.view.View) Test(org.junit.Test)

Example 14 with TestController

use of com.bluelinelabs.conductor.util.TestController in project Conductor by bluelinelabs.

the class RouterChangeHandlerTests method testSetBackstackHandlers.

@Test
public void testSetBackstackHandlers() {
    TestController initialController1 = new TestController();
    MockChangeHandler initialPushHandler1 = MockChangeHandler.taggedHandler("initialPush1", true);
    MockChangeHandler initialPopHandler1 = MockChangeHandler.taggedHandler("initialPop1", true);
    router.setRoot(RouterTransaction.with(initialController1).pushChangeHandler(initialPushHandler1).popChangeHandler(initialPopHandler1));
    TestController initialController2 = new TestController();
    MockChangeHandler initialPushHandler2 = MockChangeHandler.taggedHandler("initialPush2", false);
    MockChangeHandler initialPopHandler2 = MockChangeHandler.taggedHandler("initialPop2", false);
    router.pushController(RouterTransaction.with(initialController2).pushChangeHandler(initialPushHandler2).popChangeHandler(initialPopHandler2));
    View initialView1 = initialController1.getView();
    View initialView2 = initialController2.getView();
    TestController newController1 = new TestController();
    TestController newController2 = new TestController();
    MockChangeHandler setBackstackHandler = MockChangeHandler.taggedHandler("setBackstackHandler", true);
    List<RouterTransaction> newBackstack = Arrays.asList(RouterTransaction.with(newController1), RouterTransaction.with(newController2));
    router.setBackstack(newBackstack, setBackstackHandler);
    assertTrue(initialController1.changeHandlerHistory.isValidHistory);
    assertTrue(initialController2.changeHandlerHistory.isValidHistory);
    assertTrue(newController1.changeHandlerHistory.isValidHistory);
    assertEquals(3, initialController1.changeHandlerHistory.size());
    assertEquals(2, initialController2.changeHandlerHistory.size());
    assertEquals(0, newController1.changeHandlerHistory.size());
    assertEquals(1, newController2.changeHandlerHistory.size());
    assertNotNull(initialController1.changeHandlerHistory.latestToView());
    assertEquals(newController2.getView(), initialController1.changeHandlerHistory.latestToView());
    assertEquals(initialView1, initialController1.changeHandlerHistory.latestFromView());
    assertEquals(setBackstackHandler.tag, initialController1.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(initialController1.changeHandlerHistory.latestIsPush());
    assertNull(initialController2.changeHandlerHistory.latestToView());
    assertEquals(initialView2, initialController2.changeHandlerHistory.latestFromView());
    assertEquals(setBackstackHandler.tag, initialController2.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(initialController2.changeHandlerHistory.latestIsPush());
    assertNotNull(newController2.changeHandlerHistory.latestToView());
    assertEquals(newController2.getView(), newController2.changeHandlerHistory.latestToView());
    assertEquals(initialView1, newController2.changeHandlerHistory.latestFromView());
    assertEquals(setBackstackHandler.tag, newController2.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(newController2.changeHandlerHistory.latestIsPush());
}
Also used : MockChangeHandler(com.bluelinelabs.conductor.util.MockChangeHandler) TestController(com.bluelinelabs.conductor.util.TestController) View(android.view.View) Test(org.junit.Test)

Example 15 with TestController

use of com.bluelinelabs.conductor.util.TestController in project Conductor by bluelinelabs.

the class RouterChangeHandlerTests method testResetRootHandlers.

@Test
public void testResetRootHandlers() {
    TestController initialController1 = new TestController();
    MockChangeHandler initialPushHandler1 = MockChangeHandler.taggedHandler("initialPush1", true);
    MockChangeHandler initialPopHandler1 = MockChangeHandler.taggedHandler("initialPop1", true);
    router.setRoot(RouterTransaction.with(initialController1).pushChangeHandler(initialPushHandler1).popChangeHandler(initialPopHandler1));
    TestController initialController2 = new TestController();
    MockChangeHandler initialPushHandler2 = MockChangeHandler.taggedHandler("initialPush2", false);
    MockChangeHandler initialPopHandler2 = MockChangeHandler.taggedHandler("initialPop2", false);
    router.pushController(RouterTransaction.with(initialController2).pushChangeHandler(initialPushHandler2).popChangeHandler(initialPopHandler2));
    View initialView1 = initialController1.getView();
    View initialView2 = initialController2.getView();
    TestController newRootController = new TestController();
    MockChangeHandler newRootHandler = MockChangeHandler.taggedHandler("newRootHandler", true);
    router.setRoot(RouterTransaction.with(newRootController).pushChangeHandler(newRootHandler));
    assertTrue(initialController1.changeHandlerHistory.isValidHistory);
    assertTrue(initialController2.changeHandlerHistory.isValidHistory);
    assertTrue(newRootController.changeHandlerHistory.isValidHistory);
    assertEquals(3, initialController1.changeHandlerHistory.size());
    assertEquals(2, initialController2.changeHandlerHistory.size());
    assertEquals(1, newRootController.changeHandlerHistory.size());
    assertNotNull(initialController1.changeHandlerHistory.latestToView());
    assertEquals(newRootController.getView(), initialController1.changeHandlerHistory.latestToView());
    assertEquals(initialView1, initialController1.changeHandlerHistory.latestFromView());
    assertEquals(newRootHandler.tag, initialController1.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(initialController1.changeHandlerHistory.latestIsPush());
    assertNull(initialController2.changeHandlerHistory.latestToView());
    assertEquals(initialView2, initialController2.changeHandlerHistory.latestFromView());
    assertEquals(newRootHandler.tag, initialController2.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(initialController2.changeHandlerHistory.latestIsPush());
    assertNotNull(newRootController.changeHandlerHistory.latestToView());
    assertEquals(newRootController.getView(), newRootController.changeHandlerHistory.latestToView());
    assertEquals(initialView1, newRootController.changeHandlerHistory.latestFromView());
    assertEquals(newRootHandler.tag, newRootController.changeHandlerHistory.latestChangeHandler().tag);
    assertTrue(newRootController.changeHandlerHistory.latestIsPush());
}
Also used : MockChangeHandler(com.bluelinelabs.conductor.util.MockChangeHandler) TestController(com.bluelinelabs.conductor.util.TestController) View(android.view.View) Test(org.junit.Test)

Aggregations

TestController (com.bluelinelabs.conductor.util.TestController)65 Test (org.junit.Test)64 CallState (com.bluelinelabs.conductor.util.CallState)14 View (android.view.View)6 ViewGroup (android.view.ViewGroup)5 MockChangeHandler (com.bluelinelabs.conductor.util.MockChangeHandler)5 Bundle (android.os.Bundle)4 HorizontalChangeHandler (com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler)3 Intent (android.content.Intent)2 FadeChangeHandler (com.bluelinelabs.conductor.changehandler.FadeChangeHandler)2 LifecycleListener (com.bluelinelabs.conductor.Controller.LifecycleListener)1 VerticalChangeHandler (com.bluelinelabs.conductor.changehandler.VerticalChangeHandler)1 ActivityProxy (com.bluelinelabs.conductor.util.ActivityProxy)1