@Test
public void testUsingWithObservableFactoryErrorInOnSubscribe() {

    final Action0 unsubscribe = mock(Action0.class);
    Func0<Subscription> resourceFactory = new Func0<Subscription>() {
        @Override
        public Subscription call() {
            return Subscriptions.create(unsubscribe);
        }
    };
    Func1<Subscription, Observable<Integer>> observableFactory = new Func1<Subscription, Observable<Integer>>() {
        @Override
        public Observable<Integer> call(Subscription subscription) {
            return Observable.create(new OnSubscribeFunc<Integer>() {
                @Override
                public Subscription onSubscribe(Observer<? super Integer> t1) {
                    throw new TestException();
                }
            });
        }
    };
    try {
        Observable.create(using(resourceFactory, observableFactory))
                .toBlockingObservable().last();
        fail("Should throw a TestException when the observableFactory throws it");
    } catch (TestException e) {
        // Make sure that unsubscribe is called so that users can close
        // the resource if some error happens.
        verify(unsubscribe, times(1)).call();
    }
}