package com.github.davidmoten.rx; import static org.junit.Assert.assertEquals; import java.util.Arrays; import java.util.List; import org.junit.Test; import com.github.davidmoten.rx.StateMachine.Completion; import com.github.davidmoten.rx.StateMachine.Transition; import com.github.davidmoten.rx.util.BackpressureStrategy; import rx.Observable; import rx.Observable.Transformer; import rx.Subscriber; public class StateMachineTest { @Test public void testBuilder() { Transformer<Integer, String> collectIntoStringsOfMinLength3 = Transformers.stateMachine() // .initialState("") // .transition(new Transition<String, Integer, String>() { @Override public String call(String state, Integer value, Subscriber<String> subscriber) { String state2 = state + value; if (state2.length() >= 3) { subscriber.onNext(state2.substring(0, 3)); return state2.substring(3); } else { return state2; } } }) // .completion(new Completion<String, String>() { @Override public Boolean call(String state, Subscriber<String> subscriber) { subscriber.onNext(state); return true; } }) // .backpressureStrategy(BackpressureStrategy.BUFFER) // .build(); List<String> list = Observable.range(1, 13).compose(collectIntoStringsOfMinLength3).toList().toBlocking().single(); assertEquals(Arrays.asList("123", "456", "789", "101", "112", "13"), list); } }