From 295d340d7c135918b8990cb5abd361e2a8a46c21 Mon Sep 17 00:00:00 2001 From: "Vitaliy.Bibaev" Date: Thu, 19 Oct 2017 19:06:38 +0300 Subject: [PATCH] Add standard stream chain builder tests --- .../streams/positive/ambiguous/LinkedChain.kt | 9 ++++++ .../ambiguous/NestedCallInAnonymous.kt | 11 +++++++ .../positive/ambiguous/NestedCallInLambda.kt | 6 ++++ .../positive/ambiguous/NestedExpression.kt | 5 +++ .../ambiguous/NestedFunctionParameters.kt | 9 ++++++ .../NestedFunctionParametersReversed.kt | 9 ++++++ .../NestedStreamIntermediateCallParameter.kt | 5 +++ .../NestedStreamProducerParameter.kt | 5 +++ .../NestedStreamTerminatorCallParameter.kt | 9 ++++++ .../SimpleExpression.kt} | 2 +- .../ambiguous/SimpleFunctionParameter.kt | 9 ++++++ .../positive/ambiguous/StreamAllPositions.kt | 5 +++ .../StreamIntermediateCallParameter.kt | 5 +++ .../ambiguous/StreamProducerParameter.kt | 5 +++ .../ambiguous/StreamTerminatorParameter.kt | 5 +++ .../kotlin/psi/java/AmbiguousChainsTest.kt | 32 +++++++++++++++++++ .../kotlin/psi/java/PositiveJavaStreamTest.kt | 6 +--- 17 files changed, 131 insertions(+), 6 deletions(-) create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/LinkedChain.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedCallInAnonymous.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedCallInLambda.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedExpression.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedFunctionParameters.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedFunctionParametersReversed.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamIntermediateCallParameter.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamProducerParameter.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamTerminatorCallParameter.kt rename idea/testData/debugger/sequence/psi/streams/positive/{Simple.kt => ambiguous/SimpleExpression.kt} (50%) create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/SimpleFunctionParameter.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamAllPositions.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamIntermediateCallParameter.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamProducerParameter.kt create mode 100644 idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamTerminatorParameter.kt create mode 100644 idea/tests/com/intellij/debugger/streams/kotlin/psi/java/AmbiguousChainsTest.kt diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/LinkedChain.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/LinkedChain.kt new file mode 100644 index 00000000000..b27d0537867 --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/LinkedChain.kt @@ -0,0 +1,9 @@ +import java.util.stream.Collectors +import java.util.stream.Stream + +fun main(args: Array) { + val count = Stream + .of(1, 2, 3).distinct().collect(Collectors.toList()) + .stream().sorted().collect(Collectors.toList()) + .stream().count() +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedCallInAnonymous.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedCallInAnonymous.kt new file mode 100644 index 00000000000..ee9aa14978f --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedCallInAnonymous.kt @@ -0,0 +1,11 @@ +import java.util.function.Consumer +import java.util.stream.Stream + +fun main(args: Array) { + Stream.of(1) + .peek(object : Consumer { + override fun accept(x: Int) { + Stream.of(1).count() + } + }).forEach { } +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedCallInLambda.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedCallInLambda.kt new file mode 100644 index 00000000000..75276a964be --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedCallInLambda.kt @@ -0,0 +1,6 @@ +import java.util.stream.Stream + +fun main(args: Array) { + Stream.of(1) + .peek { x -> Stream.of(1).count() }.forEach { } +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedExpression.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedExpression.kt new file mode 100644 index 00000000000..eeb335954b7 --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedExpression.kt @@ -0,0 +1,5 @@ +import java.util.stream.Stream + +fun main(args: Array) { + val c = (Stream.of(1, 2).count() + Stream.of(1).count()) * Stream.of(2).count() +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedFunctionParameters.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedFunctionParameters.kt new file mode 100644 index 00000000000..fcbb6e209be --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedFunctionParameters.kt @@ -0,0 +1,9 @@ +import java.util.stream.Stream + +private fun function(a: Long, b: Long): Long { + return a + b +} + +fun main(args: Array) { + val c = function(Stream.of(1, 2).count(), function(Stream.of(1, 2, 3).count(), Stream.of(1, 2, 3, 4).count())) +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedFunctionParametersReversed.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedFunctionParametersReversed.kt new file mode 100644 index 00000000000..1c7e780196f --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedFunctionParametersReversed.kt @@ -0,0 +1,9 @@ +import java.util.stream.Stream + +private fun function(a: Long, b: Long): Long { + return a + b +} + +fun main(args: Array) { + val c = function(function(Stream.of(1, 2, 3).count(), Stream.of(1, 2, 3, 4).count()), Stream.of(1, 2).count()) +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamIntermediateCallParameter.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamIntermediateCallParameter.kt new file mode 100644 index 00000000000..b85c91c1f67 --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamIntermediateCallParameter.kt @@ -0,0 +1,5 @@ +import java.util.stream.Stream + +fun main(args: Array) { + Stream.iterate(0) { i -> i!! + 1 }.skip(Stream.of(1).skip(Stream.empty().count()).count()).limit(1).forEach { x -> } +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamProducerParameter.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamProducerParameter.kt new file mode 100644 index 00000000000..7070698ea0c --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamProducerParameter.kt @@ -0,0 +1,5 @@ +import java.util.stream.Stream + +fun main(args: Array) { + Stream.of(Stream.of(Stream.of(1).count()).count()).count() +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamTerminatorCallParameter.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamTerminatorCallParameter.kt new file mode 100644 index 00000000000..78d4e113623 --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/NestedStreamTerminatorCallParameter.kt @@ -0,0 +1,9 @@ +import java.util.stream.IntStream + +fun main(args: Array) { + IntStream.of(1, 2, 3) + .reduce(IntStream.of(1, 2) + .reduce(IntStream.of(1, 2).sum() + ) { left, right -> left + right } + ) { left, right -> left + right } +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/Simple.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/SimpleExpression.kt similarity index 50% rename from idea/testData/debugger/sequence/psi/streams/positive/Simple.kt rename to idea/testData/debugger/sequence/psi/streams/positive/ambiguous/SimpleExpression.kt index 86d9d51d25c..0211a22e4f6 100644 --- a/idea/testData/debugger/sequence/psi/streams/positive/Simple.kt +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/SimpleExpression.kt @@ -1,5 +1,5 @@ import java.util.stream.Stream fun main(args: Array) { - Stream.of(1, 2, 3).toArray() + val c = Stream.of(1, 2).count() + Stream.of(1).count() } diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/SimpleFunctionParameter.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/SimpleFunctionParameter.kt new file mode 100644 index 00000000000..e1cfa6e8d71 --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/SimpleFunctionParameter.kt @@ -0,0 +1,9 @@ +import java.util.stream.Stream + +private fun func(a: Long, b: Long): Long { + return a + b +} + +fun main(args: Array) { + val c = func(Stream.of(1, 2).count(), Stream.of(1, 2, 3).count()) +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamAllPositions.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamAllPositions.kt new file mode 100644 index 00000000000..f7dcb5c15f5 --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamAllPositions.kt @@ -0,0 +1,5 @@ +import java.util.stream.IntStream + +fun main(args: Array) { + IntStream.of(IntStream.of(1).sum()).skip(IntStream.of(1).count()).reduce(IntStream.of(1, 2).sum()) { l, r -> l + r } +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamIntermediateCallParameter.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamIntermediateCallParameter.kt new file mode 100644 index 00000000000..58adee1f3c5 --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamIntermediateCallParameter.kt @@ -0,0 +1,5 @@ +import java.util.stream.Stream + +fun main(args: Array) { + Stream.iterate(0) { i -> i!! + 1 }.skip(Stream.of(1).count()).limit(1).forEach { x -> } +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamProducerParameter.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamProducerParameter.kt new file mode 100644 index 00000000000..335de95fb85 --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamProducerParameter.kt @@ -0,0 +1,5 @@ +import java.util.stream.IntStream + +fun main(args: Array) { + IntStream.of(IntStream.of(1).sum()).sum() +} diff --git a/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamTerminatorParameter.kt b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamTerminatorParameter.kt new file mode 100644 index 00000000000..430d722d18f --- /dev/null +++ b/idea/testData/debugger/sequence/psi/streams/positive/ambiguous/StreamTerminatorParameter.kt @@ -0,0 +1,5 @@ +import java.util.stream.IntStream + +fun main(args: Array) { + IntStream.of(1, 2).reduce(IntStream.of(1, 2, 3).sum()) { l, r -> l + r } +} diff --git a/idea/tests/com/intellij/debugger/streams/kotlin/psi/java/AmbiguousChainsTest.kt b/idea/tests/com/intellij/debugger/streams/kotlin/psi/java/AmbiguousChainsTest.kt new file mode 100644 index 00000000000..604eb6f3d54 --- /dev/null +++ b/idea/tests/com/intellij/debugger/streams/kotlin/psi/java/AmbiguousChainsTest.kt @@ -0,0 +1,32 @@ +package com.intellij.debugger.streams.kotlin.psi.java + +/** + * @author Vitaliy.Bibaev + */ +class AmbiguousChainsTest : PositiveJavaStreamTest("ambiguous") { + fun testSimpleExpression() = doTest(2) + + fun testNestedExpression() = doTest(3) + fun testSimpleFunctionParameter() = doTest(2) + fun testNestedFunctionParameters() = doTest(3) + fun testNestedFunctionParametersReversed() = doTest(3) + + fun testStreamProducerParameter() = doTest(2) + fun testStreamIntermediateCallParameter() = doTest(2) + fun testStreamTerminatorParameter() = doTest(2) + fun testStreamAllPositions() = doTest(4) + + fun testNestedStreamProducerParameter() = doTest(3) + fun testNestedStreamIntermediateCallParameter() = doTest(3) + fun testNestedStreamTerminatorCallParameter() = doTest(3) + + fun testNestedCallInLambda() = doTest(2) + fun testNestedCallInAnonymous() = doTest(2) + + fun testLinkedChain() = doTest(3) + + private fun doTest(chainsCount: Int) { + val chains = buildChains() + assertEquals(chainsCount, chains.size) + } +} \ No newline at end of file diff --git a/idea/tests/com/intellij/debugger/streams/kotlin/psi/java/PositiveJavaStreamTest.kt b/idea/tests/com/intellij/debugger/streams/kotlin/psi/java/PositiveJavaStreamTest.kt index 1f3bb170794..9c6e3480762 100644 --- a/idea/tests/com/intellij/debugger/streams/kotlin/psi/java/PositiveJavaStreamTest.kt +++ b/idea/tests/com/intellij/debugger/streams/kotlin/psi/java/PositiveJavaStreamTest.kt @@ -8,10 +8,6 @@ import com.intellij.debugger.streams.wrapper.StreamChainBuilder /** * @author Vitaliy.Bibaev */ -class PositiveJavaStreamTest : KotlinPsiChainBuilderTestCase.Positive("streams/positive") { +abstract class PositiveJavaStreamTest(subDirectory: String) : KotlinPsiChainBuilderTestCase.Positive("streams/positive/$subDirectory") { override val kotlinChainBuilder: StreamChainBuilder = JavaStandardLibrarySupportProvider().chainBuilder - - fun testSimple() { - doTest() - } } \ No newline at end of file