From aa1bd43464385c72f3db411e31c5c29036a7f53f Mon Sep 17 00:00:00 2001 From: Øyvind Grønnesby Date: Thu, 10 Oct 2019 15:20:20 +0200 Subject: Utility to create stream from Slime array --- .../src/main/java/com/yahoo/slime/SlimeStream.java | 21 +++++++++++++++++ .../test/java/com/yahoo/slime/SlimeStreamTest.java | 26 ++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 vespajlib/src/main/java/com/yahoo/slime/SlimeStream.java create mode 100644 vespajlib/src/test/java/com/yahoo/slime/SlimeStreamTest.java (limited to 'vespajlib/src') diff --git a/vespajlib/src/main/java/com/yahoo/slime/SlimeStream.java b/vespajlib/src/main/java/com/yahoo/slime/SlimeStream.java new file mode 100644 index 00000000000..a6008294a72 --- /dev/null +++ b/vespajlib/src/main/java/com/yahoo/slime/SlimeStream.java @@ -0,0 +1,21 @@ +package com.yahoo.slime; + +import java.util.function.Function; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +public final class SlimeStream { + private SlimeStream() {} + + /** + * Create a stream from a Slime {@link Inspector} pointing to an array. + * @param array the array inspector + * @param mapper the function mapping to Stream elements + * @return A Stream of array elements + */ + public static Stream fromArray(Inspector array, Function mapper) { + return IntStream.range(0, array.entries()) + .mapToObj(array::entry) + .map(mapper); + } +} diff --git a/vespajlib/src/test/java/com/yahoo/slime/SlimeStreamTest.java b/vespajlib/src/test/java/com/yahoo/slime/SlimeStreamTest.java new file mode 100644 index 00000000000..116551cea59 --- /dev/null +++ b/vespajlib/src/test/java/com/yahoo/slime/SlimeStreamTest.java @@ -0,0 +1,26 @@ +package com.yahoo.slime; + +import org.junit.Test; + +import java.util.List; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertEquals; + +public class SlimeStreamTest { + @Test + public void test_empty_array() { + var inspector = new Slime().setArray(); + var items = SlimeStream.fromArray(inspector, Inspector::asString).collect(Collectors.toList()); + assertEquals(List.of(), items); + } + + @Test + public void test_some_elements() { + var inspector = new Slime().setArray(); + inspector.addString("foo"); + inspector.addString("bar"); + var items = SlimeStream.fromArray(inspector, Inspector::asString).collect(Collectors.toList()); + assertEquals(List.of("foo", "bar"), items); + } +} -- cgit v1.2.3