@Nonnull @Override public M onGetModel() { M model = loop.getMostRecentModel(); return model != null ? model : startModel; } }
@Nonnull @Override public M onGetModel() { M model = loop.getMostRecentModel(); return model != null ? model : startModel; } }
@Override public void onStop() { loop.dispose(); M mostRecentModel = loop.getMostRecentModel(); actions.goToStateCreated(renderer, mostRecentModel); }
@Override public void onStop() { loop.dispose(); M mostRecentModel = loop.getMostRecentModel(); actions.goToStateCreated(renderer, mostRecentModel); }
@Test public void shouldSupportCreatingMultipleLoops() throws Exception { MobiusLoop.Factory<String, Integer, Boolean> factory = Mobius.loop(UPDATE, HANDLER); // one loop = factory.startFrom("first"); loop.dispatchEvent(97); await().atMost(Duration.ONE_SECOND).until(() -> loop.getMostRecentModel(), is("first97")); loop.dispose(); // then another one loop = factory.startFrom("second"); loop.dispatchEvent(97); await().atMost(Duration.ONE_SECOND).until(() -> loop.getMostRecentModel(), is("second97")); }
@Test public void shouldInstantiateBeginnerWithMinimumParams() throws Exception { MobiusLoop<String, Integer, ?> loop = MobiusExtras.beginnerLoop(BEGINNER_UPDATE).startFrom(MY_MODEL); loop.dispatchEvent(8); await().atMost(Duration.ONE_SECOND).until(() -> loop.getMostRecentModel(), is("start8")); } }
@Test public void shouldInstantiateWithMinimumParams() throws Exception { loop = Mobius.loop(UPDATE, HANDLER).startFrom(MY_MODEL); loop.dispatchEvent(8); await().atMost(Duration.ONE_SECOND).until(() -> loop.getMostRecentModel(), is("start83")); }
@Test public void shouldSupportCreatingFactory() throws Exception { MobiusLoop.Factory<String, Integer, Boolean> factory = Mobius.loop(UPDATE, HANDLER); loop = factory.startFrom("resume"); loop.dispatchEvent(97); await().atMost(Duration.ONE_SECOND).until(() -> loop.getMostRecentModel(), is("resume97")); }
@Test public void shouldPermitUsingCustomInit() throws Exception { Init<String, Boolean> init = new Init<String, Boolean>() { @Nonnull @Override public First<String, Boolean> init(String model) { return First.first(model, effects(true)); } }; loop = Mobius.loop(UPDATE, HANDLER).init(init).startFrom(MY_MODEL); loop.dispatchEvent(3); await().atMost(Duration.ONE_SECOND).until(() -> "start33".equals(loop.getMostRecentModel())); }
@Test public void shouldPermitUsingEventSource() throws Exception { TestEventSource eventSource = new TestEventSource(); loop = Mobius.loop(UPDATE, HANDLER).eventSource(eventSource).startFrom(MY_MODEL); eventSource.consumer.accept(7); await().atMost(Duration.ONE_SECOND).until(() -> loop.getMostRecentModel(), is("start7")); }