void start() { loop.observe( new Consumer<M>() { @Override public void accept(M model) { actions.postUpdateView(model); } }); }
void start() { loop.observe( new Consumer<M>() { @Override public void accept(M model) { actions.postUpdateView(model); } }); }
final MobiusLoop<M, E, ?> loop = loopFactory.startFrom(loopStart); loop.observe( new Consumer<M>() { @Override
final MobiusLoop<M, E, ?> loop = loopFactory.startFrom(startModel); loop.observe( new com.spotify.mobius.functions.Consumer<M>() { @Override
private void setupWithEffects( Connectable<TestEffect, TestEvent> effectHandler, WorkRunner effectRunner) { observer = new RecordingModelObserver<>(); mobiusLoop = MobiusLoop.create(mobiusStore, effectHandler, eventSource, immediateRunner, effectRunner); mobiusLoop.observe(observer); }
@Test public void shouldThrowForEventSourceEventsAfterDispose() throws Exception { FakeEventSource<TestEvent> eventSource = new FakeEventSource<>(); mobiusLoop = MobiusLoop.create( mobiusStore, effectHandler, eventSource, immediateRunner, immediateRunner); observer = new RecordingModelObserver<>(); // to clear out the init from the previous setup mobiusLoop.observe(observer); eventSource.emit(new EventWithSafeEffect("one")); mobiusLoop.dispose(); assertThatThrownBy(() -> eventSource.emit(new EventWithSafeEffect("two"))) .isInstanceOf(IllegalStateException.class); observer.assertStates("init", "init->one"); }
@Test public void shouldSupportUnregisteringObserver() throws Exception { observer = new RecordingModelObserver<>(); mobiusLoop = MobiusLoop.create( mobiusStore, effectHandler, eventSource, immediateRunner, immediateRunner); Disposable unregister = mobiusLoop.observe(observer); mobiusLoop.dispatchEvent(new TestEvent("active observer")); unregister.dispose(); mobiusLoop.dispatchEvent(new TestEvent("shouldn't be seen")); observer.assertStates("init", "init->active observer"); }