package com.levelup.java.util.stream;
import static java.lang.Double.parseDouble;
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.OptionalDouble;
import java.util.stream.Collectors;
import java.util.stream.DoubleStream;
import org.junit.Test;
/**
* This java example will demonstrate .
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/java-util-stream-doublestream-example/'>DoubleStream example</a>
*/
public class DoubleStreamExample {
@Test
public void doublestream_builder() {
double sum = DoubleStream.builder().add(10).add(10).build().sum();
assertEquals(20, sum, 0);
}
@Test
public void doublestream_concat() {
DoubleStream first = DoubleStream.builder().add(10).build();
DoubleStream second = DoubleStream.builder().add(10).build();
DoubleStream third = DoubleStream.concat(first, second);
assertEquals(20, third.sum(), 0);
}
@Test
public void doublestream_empty() {
DoubleStream emptyStream = DoubleStream.empty();
assertEquals(0, emptyStream.count());
}
@Test
public void doublestream_generate() {
OptionalDouble one = DoubleStream.generate(() -> 1).limit(10)
.distinct().findFirst();
assertEquals(1, one.getAsDouble(), 0);
}
@Test
public void doublestream_iterate() {
List<Double> numbers = DoubleStream.iterate(0, n -> n + 3).limit(3)
.boxed().collect(Collectors.toList());
assertThat(numbers,
contains(new Double(0), new Double(3), new Double(6)));
}
@Test
public void doublestream_of() {
OptionalDouble max = DoubleStream.of(5, 10).max();
assertEquals(10, max.getAsDouble(), 0);
}
@Test
public void map_to_doublestream() {
List<String> doubles = new ArrayList<String>();
doubles.add("1");
doubles.add("2");
doubles.add("3");
OptionalDouble doubleStream = doubles.stream()
.mapToDouble(Double::parseDouble).max();
assertEquals(3, doubleStream.getAsDouble(), 0);
}
@Test
public void convert_to_stream_of_objects() {
double[] numbers = { 1, 2, 3, 4, 5, 6 };
List<Double> listOfDoubles = Arrays.stream(numbers).boxed()
.collect(Collectors.toList());
assertThat(
listOfDoubles,
contains(new Double(1), new Double(2), new Double(3),
new Double(4), new Double(5), new Double(6)));
}
@Test
public void provide_default() {
List<String> doubles = new ArrayList<String>();
double optionalDouble = doubles.stream()
.mapToDouble(Double::parseDouble).max().orElse(5);
assertEquals(5, optionalDouble, 0);
}
}