package com.github.scr.j8iterables; import org.testng.annotations.Test; import java.util.Arrays; import java.util.Collections; import java.util.Spliterator; import java.util.stream.DoubleStream; import java.util.stream.IntStream; import java.util.stream.LongStream; import java.util.stream.StreamSupport; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.MatcherAssert.assertThat; /** * Created by scr on 9/26/15. */ @Test public class J8SpliteratorsTest { @Test public void testConstructor() throws Exception { assertThat(new J8Spliterators(), notNullValue()); } @Test public void testDoubleSpliterator() throws Exception { assertThat(StreamSupport.doubleStream(J8Spliterators.mapToDouble( Arrays.asList(1d, 2d, 3d).spliterator(), Double::doubleValue), false).sum(), is(6d)); } @Test public void testDoubleSpliteratorTrySplit() throws Exception { Spliterator.OfDouble doubleSpliterator = J8Spliterators.mapToDouble(Arrays.asList(1d, 2d, 3d, 4d).spliterator(), Double::doubleValue); Spliterator.OfDouble doubleSpliterator2 = doubleSpliterator.trySplit(); assertThat(doubleSpliterator, not(sameInstance(doubleSpliterator2))); assertThat(DoubleStream.concat(StreamSupport.doubleStream(doubleSpliterator, false), StreamSupport.doubleStream(doubleSpliterator2, false)).sum(), is(10d)); } @Test public void testDoubleSpliteratorTrySplitSmall() throws Exception { Spliterator.OfDouble doubleSpliterator = J8Spliterators.mapToDouble(Collections.singleton(1d).spliterator(), Double::doubleValue); Spliterator.OfDouble doubleSpliterator2 = doubleSpliterator.trySplit(); assertThat(doubleSpliterator2, nullValue()); } @Test public void testIntSpliterator() throws Exception { assertThat(StreamSupport.intStream(J8Spliterators.mapToInt( Arrays.asList(1d, 2d, 3d).spliterator(), Double::intValue), false).sum(), is(6)); } @Test public void testIntSpliteratorTrySplit() throws Exception { Spliterator.OfInt IntSpliterator = J8Spliterators.mapToInt(Arrays.asList(1d, 2d, 3d, 4d).spliterator(), Double::intValue); Spliterator.OfInt IntSpliterator2 = IntSpliterator.trySplit(); assertThat(IntSpliterator, not(sameInstance(IntSpliterator2))); assertThat(IntStream.concat(StreamSupport.intStream(IntSpliterator, false), StreamSupport.intStream(IntSpliterator2, false)).sum(), is(10)); } @Test public void testIntSpliteratorTrySplitSmall() throws Exception { Spliterator.OfInt IntSpliterator = J8Spliterators.mapToInt(Collections.singleton(1d).spliterator(), Double::intValue); Spliterator.OfInt IntSpliterator2 = IntSpliterator.trySplit(); assertThat(IntSpliterator2, nullValue()); } @Test public void testLongSpliterator() throws Exception { assertThat(StreamSupport.longStream(J8Spliterators.mapToLong( Arrays.asList(1d, 2d, 3d).spliterator(), Double::longValue), false).sum(), is(6L)); } @Test public void testLongSpliteratorTrySplit() throws Exception { Spliterator.OfLong LongSpliterator = J8Spliterators.mapToLong(Arrays.asList(1d, 2d, 3d, 4d).spliterator(), Double::longValue); Spliterator.OfLong LongSpliterator2 = LongSpliterator.trySplit(); assertThat(LongSpliterator, not(sameInstance(LongSpliterator2))); assertThat(LongStream.concat(StreamSupport.longStream(LongSpliterator, false), StreamSupport.longStream(LongSpliterator2, false)).sum(), is(10L)); } @Test public void testLongSpliteratorTrySplitSmall() throws Exception { Spliterator.OfLong LongSpliterator = J8Spliterators.mapToLong(Collections.singleton(1d).spliterator(), Double::longValue); Spliterator.OfLong LongSpliterator2 = LongSpliterator.trySplit(); assertThat(LongSpliterator2, nullValue()); } }