@Test
public void testStartWithFuncAndMultipleObservers() {

    TestScheduler scheduler = new TestScheduler();
    @SuppressWarnings("unchecked")
    Func0<String> func = (Func0<String>) mock(Func0.class);
    doAnswer(new Answer<String>() {
        @Override
        public String answer(InvocationOnMock invocation) throws Throwable {
            return "one";
        }
    }).when(func).call();
    Observable<String> observable = Async.start(func, scheduler);
    scheduler.advanceTimeBy(100, TimeUnit.MILLISECONDS);
    @SuppressWarnings("unchecked")
    Observer<String> observer1 = mock(Observer.class);
    @SuppressWarnings("unchecked")
    Observer<String> observer2 = mock(Observer.class);
    @SuppressWarnings("unchecked")
    Observer<String> observer3 = mock(Observer.class);
    observable.subscribe(new TestObserver<String>(observer1));
    observable.subscribe(new TestObserver<String>(observer2));
    observable.subscribe(new TestObserver<String>(observer3));
    InOrder inOrder;
    inOrder = inOrder(observer1);
    inOrder.verify(observer1, times(1)).onNext("one");
    inOrder.verify(observer1, times(1)).onCompleted();
    inOrder.verifyNoMoreInteractions();
    inOrder = inOrder(observer2);
    inOrder.verify(observer2, times(1)).onNext("one");
    inOrder.verify(observer2, times(1)).onCompleted();
    inOrder.verifyNoMoreInteractions();
    inOrder = inOrder(observer3);
    inOrder.verify(observer3, times(1)).onNext("one");
    inOrder.verify(observer3, times(1)).onCompleted();
    inOrder.verifyNoMoreInteractions();
    verify(func, times(1)).call();
}