package com.annimon.stream.intstreamtests;
import com.annimon.stream.CustomOperators;
import com.annimon.stream.IntStream;
import com.annimon.stream.function.IntBinaryOperator;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.Matchers.closeTo;
import static org.junit.Assert.assertThat;
public final class CustomTest {
@Test(expected = NullPointerException.class)
public void testCustomNull() {
IntStream.empty().custom(null);
}
@Test
public void testCustomIntermediateOperator_Zip() {
final IntBinaryOperator op = new IntBinaryOperator() {
@Override
public int applyAsInt(int left, int right) {
return left + right;
}
};
IntStream s1 = IntStream.of(1, 3, 5, 7, 9);
IntStream s2 = IntStream.of(2, 4, 6, 8);
int[] expected = {3, 7, 11, 15};
IntStream result = s1.custom(new CustomOperators.Zip(s2, op));
assertThat(result.toArray(), is(expected));
}
@Test
public void testCustomTerminalOperator_Average() {
double average = IntStream.range(0, 10).custom(new CustomOperators.Average());
assertThat(average, closeTo(4.5, 0.001));
}
}