@Test public void shouldPermitUsingCustomEffectRunner() throws Exception { TestableWorkRunner runner = new TestableWorkRunner(); loop = Mobius.loop(UPDATE, HANDLER).effectRunner(() -> runner).startFrom(MY_MODEL); loop.dispatchEvent(3); await().atMost(Duration.ONE_SECOND).until(() -> runner.runCounter.get() == 1); }
@Test public void shouldPermitUsingCustomLogger() throws Exception { TestLogger logger = new TestLogger(); loop = Mobius.loop(UPDATE, HANDLER) .logger(logger) .eventRunner(ImmediateWorkRunner::new) .effectRunner(ImmediateWorkRunner::new) .startFrom(MY_MODEL); loop.dispatchEvent(7); assertThat( logger.history, contains( "before init: start", "after init: start, First{model=start, effects=[]}", "before update: start, 7", "after update: start, 7, Next{model=start7, effects=[false]}")); }
private MobiusLoopController<String, String, String> createWithWorkRunner( WorkRunner mainThreadRunner) { return new MobiusLoopController<>( Mobius.<String, String, String>loop( (model, event) -> Next.next(model + event), effectHandler) .eventRunner(WorkRunners::immediate) .effectRunner(WorkRunners::immediate), "init", mainThreadRunner); }