package com.levelup.java.util.stream;
import static java.lang.Integer.parseInt;
import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.OptionalInt;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.junit.Test;
/**
* This java example will demonstrate IntStream and .
*
* @author Justin Musgrove
* @see <a href=
* 'http://www.leveluplunch.com/java/examples/java-util-stream-intstream-example/'>IntSt
* r e a m example</a>
*/
public class IntStreamExample {
@Test
public void intstream_builder() {
int sum = IntStream.builder().add(10).add(10).build().sum();
assertEquals(20, sum);
}
@Test
public void intstream_concat() {
IntStream first = IntStream.builder().add(10).build();
IntStream second = IntStream.builder().add(10).build();
IntStream third = IntStream.concat(first, second);
assertEquals(20, third.sum());
}
@Test
public void intstream_empty() {
IntStream emptyStream = IntStream.empty();
assertEquals(0, emptyStream.count());
}
@Test
public void intstream_generate() {
OptionalInt one = IntStream.generate(() -> 1).limit(10).distinct()
.findFirst();
assertEquals(1, one.getAsInt());
}
@Test
public void intstream_iterate() {
List<Integer> numbers = IntStream.iterate(0, n -> n + 3).limit(3)
.boxed().collect(Collectors.toList());
assertThat(numbers,
contains(new Integer(0), new Integer(3), new Integer(6)));
}
@Test
public void intstream_of() {
OptionalInt max = IntStream.of(5, 10).max();
assertEquals(10, max.getAsInt());
}
@Test
public void intstream_range() {
List<Integer> numbers = IntStream.range(1, 3).boxed()
.collect(Collectors.toList());
assertThat(numbers, contains(new Integer(1), new Integer(2)));
}
@Test
public void intstream_rangeClosed() {
List<Integer> numbers = IntStream.rangeClosed(1, 3).boxed()
.collect(Collectors.toList());
assertThat(numbers,
contains(new Integer(1), new Integer(2), new Integer(3)));
}
@Test
public void map_to_intstream() {
List<String> integers = new ArrayList<String>();
integers.add("1");
integers.add("2");
integers.add("3");
OptionalInt intStream = integers.stream().mapToInt(Integer::parseInt)
.max();
assertEquals(3, intStream.getAsInt());
}
@Test
public void convert_to_stream_of_objects() {
int[] numbers = { 1, 2, 3, 4, 5, 6 };
List<Integer> listOfInteger = Arrays.stream(numbers).boxed()
.collect(Collectors.toList());
assertThat(
listOfInteger,
contains(new Integer(1), new Integer(2), new Integer(3),
new Integer(4), new Integer(5), new Integer(6)));
}
@Test
public void provide_default() {
List<String> integers = new ArrayList<String>();
int optionalInt = integers.stream().mapToInt(Integer::parseInt)
.max().orElse(5);
assertEquals(5, optionalInt);
}
}