package com.annimon.stream.intstreamtests;
import com.annimon.stream.Functions;
import com.annimon.stream.IntStream;
import com.annimon.stream.OptionalInt;
import org.junit.Test;
import static com.annimon.stream.test.hamcrest.OptionalIntMatcher.hasValue;
import static com.annimon.stream.test.hamcrest.OptionalIntMatcher.isEmpty;
import static org.junit.Assert.assertThat;
public final class FindSingleTest {
@Test
public void testFindSingleOnEmptyStream() {
assertThat(IntStream.empty().findSingle(), isEmpty());
}
@Test
public void testFindSingleOnOneElementStream() {
OptionalInt result = IntStream.of(42).findSingle();
assertThat(result, hasValue(42));
}
@Test(expected = IllegalStateException.class)
public void testFindSingleOnMoreElementsStream() {
IntStream.rangeClosed(1, 2).findSingle();
}
@Test
public void testFindSingleAfterFilteringToEmptyStream() {
OptionalInt result = IntStream.range(1, 5)
.filter(Functions.remainderInt(6))
.findSingle();
assertThat(result, isEmpty());
}
@Test
public void testFindSingleAfterFilteringToOneElementStream() {
OptionalInt result = IntStream.range(1, 10)
.filter(Functions.remainderInt(6))
.findSingle();
assertThat(result, hasValue(6));
}
@Test(expected = IllegalStateException.class)
public void testFindSingleAfterFilteringToMoreElementStream() {
IntStream.range(1, 100)
.filter(Functions.remainderInt(6))
.findSingle();
}
}