Skip to content

Return same instance instead of wrapping Iterator results when possible #5

@danieldietrich

Description

@danieldietrich
  1. Remove the method useIsEqualToInsteadOfIsSameAs() from unit tests and test for isSameAs()
  2. fix broken unit tests

Example: take(0)

// AbstractTraversableTest
@Test
public void shouldTakeNoneOnNil() {
    if (useIsEqualToInsteadOfIsSameAs()) {
        assertThat(empty().take(1)).isEqualTo(empty());
    } else {
        assertThat(empty().take(1)).isSameAs(empty());
    }
}
// PriorityQueue (current)
@Override
public PriorityQueue<T> take(int n) {
    return ofAll(comparator, iterator().take(n));
}

// PriorityQueue (time and mem saver)
@Override
public PriorityQueue<T> take(int n) {
    if (n <= 0) {
        return this;
    } else if (n >= size()) {
        return empty(comparator());
    } else {
        return ofAll(comparator, iterator().take(n));
    }
}

This was only an example. We have many similar occurrences.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions