package com.annimon.stream.longstreamtests;
import com.annimon.stream.LongStream;
import org.junit.Test;
import static com.annimon.stream.test.hamcrest.LongStreamMatcher.elements;
import static com.annimon.stream.test.hamcrest.LongStreamMatcher.isEmpty;
import static org.hamcrest.Matchers.arrayContaining;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
public final class RangeTest {
@Test
public void testStreamRange() {
assertTrue(LongStream.range(1, 5).sum() == 10);
assertTrue(LongStream.range(2, 2).count() == 0);
}
@Test(timeout = 1000)
public void testStreamRangeOnMinValue() {
assertThat(LongStream.range(Long.MIN_VALUE, Long.MIN_VALUE + 5).count(), is(5L));
}
@Test(timeout = 1000)
public void testStreamRangeOnEqualValues() {
assertThat(LongStream.range(Long.MIN_VALUE, Long.MIN_VALUE), isEmpty());
assertThat(LongStream.range(0, 0), isEmpty());
assertThat(LongStream.range(Long.MAX_VALUE, Long.MAX_VALUE), isEmpty());
}
@Test(timeout = 1000)
public void testStreamRangeOnMaxValue() {
assertThat(LongStream.range(Long.MAX_VALUE - 5, Long.MAX_VALUE).count(), is(5L));
}
@Test
public void testStreamRangeClosed() {
assertThat(LongStream.rangeClosed(1, 5).sum(), is(15L));
assertThat(LongStream.rangeClosed(1, 5).count(), is(5L));
}
@Test
public void testStreamRangeClosedStartGreaterThanEnd() {
assertThat(LongStream.rangeClosed(5, 1), isEmpty());
}
@Test(timeout = 1000)
public void testStreamRangeClosedOnMinValue() {
assertThat(LongStream.rangeClosed(Long.MIN_VALUE, Long.MIN_VALUE + 5).count(), is(6L));
}
@Test(timeout = 1000)
public void testStreamRangeClosedOnEqualValues() {
assertThat(LongStream.rangeClosed(Long.MIN_VALUE, Long.MIN_VALUE),
elements(arrayContaining(Long.MIN_VALUE)));
assertThat(LongStream.rangeClosed(0, 0),
elements(arrayContaining(0L)));
assertThat(LongStream.rangeClosed(Long.MAX_VALUE, Long.MAX_VALUE),
elements(arrayContaining(Long.MAX_VALUE)));
}
@Test(timeout = 1000)
public void testStreamRangeClosedOnMaxValue() {
assertThat(LongStream.rangeClosed(Long.MAX_VALUE - 5, Long.MAX_VALUE).count(), is(6L));
}
}