package com.annimon.stream.streamtests;
import com.annimon.stream.Stream;
import com.annimon.stream.test.hamcrest.StreamMatcher;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import static com.annimon.stream.test.hamcrest.StreamMatcher.assertElements;
import static org.hamcrest.Matchers.contains;
public final class SkipTest {
@Test
public void testSkip() {
Stream.range(0, 10)
.skip(7)
.custom(assertElements(contains(
7, 8, 9
)));
}
@Test(expected = IllegalArgumentException.class)
public void testSkipNegative() {
Stream.range(0, 10).skip(-2).count();
}
@Test
public void testSkipZero() {
Stream.range(0, 2)
.skip(0)
.custom(assertElements(contains(
0, 1
)));
}
@Test
public void testSkipMoreThanCount() {
Stream.range(0, 10)
.skip(15)
.custom(StreamMatcher.<Integer>assertIsEmpty());
}
@Test
public void testSkipLazy() {
final List<Integer> data = new ArrayList<Integer>(10);
data.add(0);
Stream<Integer> stream = Stream.of(data).skip(3);
data.addAll(Arrays.asList(1, 2, 3, 4, 5));
stream.custom(assertElements(contains(
3, 4, 5
)));
}
@Test
public void testSkipAndLimit() {
Stream.range(0, 10)
.skip(2) // 23456789
.limit(5) // 23456
.custom(assertElements(contains(
2, 3, 4, 5, 6
)));
}
@Test
public void testLimitAndSkip() {
Stream.range(0, 10)
.limit(5) // 01234
.skip(2) // 234
.custom(assertElements(contains(
2, 3, 4
)));
}
@Test
public void testSkipAndLimitMoreThanCount() {
Stream.range(0, 10)
.skip(8) // 89
.limit(15) // 89
.custom(assertElements(contains(
8, 9
)));
}
@Test
public void testSkipMoreThanCountAndLimit() {
Stream.range(0, 10)
.skip(15)
.limit(8)
.custom(StreamMatcher.<Integer>assertIsEmpty());
}
@Test
public void testSkipAndLimitTwice() {
Stream.range(0, 10)
.skip(2) // 23456789
.limit(5) // 23456
.skip(2) // 456
.limit(2) // 45
.custom(assertElements(contains(
4, 5
)));
}
}