@Test
public void testWhileDoManyTimes() {

    Observable<Integer> source1 = Observable.from(1, 2, 3).subscribeOn(Schedulers.currentThread());
    List<Integer> expected = new ArrayList<Integer>(numRecursion * 3);
    for (int i = 0; i < numRecursion; i++) {
        expected.add(1);
        expected.add(2);
        expected.add(3);
    }
    Observable<Integer> result = Statement.whileDo(source1, countdown(numRecursion));
    observeSequence(result, expected);
}