package com.levelup.java.util.stream;
import static java.lang.Long.parseLong;
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.OptionalLong;
import java.util.stream.Collectors;
import java.util.stream.LongStream;
import org.junit.Test;
/**
* This java example will demonstrate .
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/java-util-stream-longstream-example/'>LongStream example</a>
*/
public class LongStreamExample {
@Test
public void longstream_builder() {
long sum = LongStream.builder().add(10).add(10).build().sum();
assertEquals(20, sum, 0);
}
@Test
public void longstream_concat() {
LongStream first = LongStream.builder().add(10).build();
LongStream second = LongStream.builder().add(10).build();
LongStream third = LongStream.concat(first, second);
assertEquals(20, third.sum(), 0);
}
@Test
public void longstream_empty() {
LongStream emptyStream = LongStream.empty();
assertEquals(0, emptyStream.count());
}
@Test
public void longstream_generate() {
OptionalLong one = LongStream.generate(() -> 1).limit(10)
.distinct().findFirst();
assertEquals(1, one.getAsLong(), 0);
}
@Test
public void longstream_iterate() {
List<Long> numbers = LongStream.iterate(0, n -> n + 3).limit(3)
.boxed().collect(Collectors.toList());
assertThat(numbers,
contains(new Long(0), new Long(3), new Long(6)));
}
@Test
public void longstream_of() {
OptionalLong max = LongStream.of(5, 10).max();
assertEquals(10, max.getAsLong(), 0);
}
@Test
public void map_to_longstream() {
List<String> longs = new ArrayList<String>();
longs.add("1");
longs.add("2");
longs.add("3");
OptionalLong longStream = longs.stream()
.mapToLong(Long::parseLong).max();
assertEquals(3, longStream.getAsLong(), 0);
}
@Test
public void convert_to_stream_of_objects() {
long[] numbers = { 1, 2, 3, 4, 5, 6 };
List<Long> listOfLongs = Arrays.stream(numbers).boxed()
.collect(Collectors.toList());
assertThat(
listOfLongs,
contains(new Long(1), new Long(2), new Long(3),
new Long(4), new Long(5), new Long(6)));
}
@Test
public void provide_default() {
List<String> longs = new ArrayList<String>();
long optionalLong = longs.stream()
.mapToLong(Long::parseLong).max().orElse(5);
assertEquals(5, optionalLong, 0);
}
}