package com.annimon.stream.doublestreamtests; import com.annimon.stream.DoubleStream; import com.annimon.stream.Functions; import java.util.NoSuchElementException; import org.junit.Test; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; public final class SingleTest { @Test(expected = NoSuchElementException.class) public void testSingleOnEmptyStream() { DoubleStream.empty().single(); } @Test public void testSingleOnOneElementStream() { assertThat(DoubleStream.of(42d).single(), is(42d)); } @Test(expected = IllegalStateException.class) public void testSingleOnMoreElementsStream() { DoubleStream.of(0, 1, 2).single(); } @Test(expected = NoSuchElementException.class) public void testSingleAfterFilteringToEmptyStream() { DoubleStream.of(0, 1, 2) .filter(Functions.greaterThan(Math.PI)) .single(); } @Test public void testSingleAfterFilteringToOneElementStream() { double result = DoubleStream.of(1.0, 10.12, -3.01) .filter(Functions.greaterThan(Math.PI)) .single(); assertThat(result, is(10.12d)); } @Test(expected = IllegalStateException.class) public void testSingleAfterFilteringToMoreElementStream() { DoubleStream.of(1.0, 10.12, -3.01, 6.45) .filter(Functions.greaterThan(Math.PI)) .single(); } }