alexruiz / fest-assert-2.x

FEST Fluent Assertions 2.x
http://fest.easytesting.org
Apache License 2.0
402 stars 69 forks source link

IterableAssert.startsWith tries to evaluate size of collection (2.0M10) #154

Open mpi opened 11 years ago

mpi commented 11 years ago

IterableAssert.startsWith checks size of actual iterable: if (sizeOf(actual) < sequenceSize) {

this causes infinite loop for inifinite iterables. Test case:

public void shouldNotEvaluateAllCollection() throws Exception {

    Iterable<Integer> list = infiniteListOfNumbers();
    assertThat(list).startsWith(1, 2, 3, 4, 5);

}

private Iterable<Integer> infiniteListOfNumbers() {

    return new Iterable<Integer>() {

        int number = 1;

        @Override
        public Iterator<Integer> iterator() {
            return new Iterator<Integer>() {

                @Override
                public boolean hasNext() {
                    return true;
                }

                @Override
                public Integer next() {
                    return number++;
                }

                @Override
                public void remove() {
                }
            };
        }
    };
}