From 157ed3f8c1b62ccb17239dd7c810308ab6b0545b Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 1 Jul 2016 17:43:12 +0300 Subject: [PATCH] Claim a stream produced from a Sequence having ORDERED property. Add a test verifying that property is respected. --- libraries/stdlib/jre8/src/kotlin/streams/Streams.kt | 2 +- libraries/stdlib/jre8/test/collections/StreamsTest.kt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/stdlib/jre8/src/kotlin/streams/Streams.kt b/libraries/stdlib/jre8/src/kotlin/streams/Streams.kt index cf76165394e..5ef785733a0 100644 --- a/libraries/stdlib/jre8/src/kotlin/streams/Streams.kt +++ b/libraries/stdlib/jre8/src/kotlin/streams/Streams.kt @@ -27,7 +27,7 @@ public fun DoubleStream.asSequence(): Sequence = Sequence { iterator() } /** * Creates a sequential [Stream] instance that produces elements from the original sequence. */ -public fun Sequence.asStream(): Stream = StreamSupport.stream({ Spliterators.spliteratorUnknownSize(iterator(), 0) }, 0, false) +public fun Sequence.asStream(): Stream = StreamSupport.stream({ Spliterators.spliteratorUnknownSize(iterator(), Spliterator.ORDERED) }, Spliterator.ORDERED, false) /** * Returns a [List] containing all elements produced by this stream. diff --git a/libraries/stdlib/jre8/test/collections/StreamsTest.kt b/libraries/stdlib/jre8/test/collections/StreamsTest.kt index dcc06bee9e9..113ddb535b2 100644 --- a/libraries/stdlib/jre8/test/collections/StreamsTest.kt +++ b/libraries/stdlib/jre8/test/collections/StreamsTest.kt @@ -41,6 +41,14 @@ class StreamsTest { assertEquals(expected.limit(7).toList(), stream.limit(7).toList()) } + @Test fun asParallelStream() { + val sequence = generateSequence(0) { it + 2 } // even numbers + val stream = sequence.asStream().parallel().map { it / 2 } + val n = 100000 + val expected = (0 until n).toList() + + assertEquals(expected, stream.limit(n.toLong()).toList()) + } }