2016-06-07 37 views

回答

2

這不是一個確切的比賽,但我們有SyncOnSubscribe(和AsyncOnSubscriber),可以產生價值,例如:

@Test 
public void testRange() { 
    final int start = 1; 
    final int count = 4000; 
    OnSubscribe<Integer> os = SyncOnSubscribe.createStateful(new Func0<Integer>(){ 
     @Override 
     public Integer call() { 
      return start; 
     }}, 
     new Func2<Integer, Observer<? super Integer>, Integer>() { 
      @Override 
      public Integer call(Integer state, Observer<? super Integer> subscriber) { 
       subscriber.onNext(state); 
       if (state == count) { 
        subscriber.onCompleted(); 
       } 
       return state + 1; 
      } 
     }); 

    @SuppressWarnings("unchecked") 
    Observer<Object> o = mock(Observer.class); 
    InOrder inOrder = inOrder(o); 

    Observable.create(os).subscribe(o); 

    verify(o, never()).onError(any(TestException.class)); 
    inOrder.verify(o, times(count)).onNext(any(Integer.class)); 
    inOrder.verify(o).onCompleted(); 
    inOrder.verifyNoMoreInteractions(); 
}