From 5383ec50d206aa66dc832f27475d15243723cfff Mon Sep 17 00:00:00 2001 From: "Vitaliy.Bibaev" Date: Thu, 21 Dec 2017 00:51:02 +0300 Subject: [PATCH] Add tests on filtering operations --- .../sequence/exec/sequence/outs/drop.out | 28 ++++++++++++++++ .../sequence/exec/sequence/outs/dropWhile.out | 30 +++++++++++++++++ .../sequence/exec/sequence/outs/filter.out | 28 ++++++++++++++++ .../exec/sequence/outs/filterIndexed.out | 30 +++++++++++++++++ .../exec/sequence/outs/filterIsInstance.out | 14 ++++++++ .../sequence/exec/sequence/outs/filterNot.out | 30 +++++++++++++++++ .../sequence/exec/sequence/outs/minus.out | 31 +++++++++++++++++ .../exec/sequence/outs/minusElement.out | 33 +++++++++++++++++++ .../sequence/exec/sequence/outs/take.out | 29 ++++++++++++++++ .../sequence/exec/sequence/outs/takeWhile.out | 27 +++++++++++++++ .../sequence/exec/sequence/src/filter/Drop.kt | 6 ++++ .../exec/sequence/src/filter/DropWhile.kt | 6 ++++ .../exec/sequence/src/filter/Filter.kt | 6 ++++ .../exec/sequence/src/filter/FilterIndexed.kt | 6 ++++ .../sequence/src/filter/FilterIsInstance.kt | 7 ++++ .../exec/sequence/src/filter/FilterNot.kt | 7 ++++ .../exec/sequence/src/filter/Minus.kt | 7 ++++ .../exec/sequence/src/filter/MinusElement.kt | 6 ++++ .../sequence/exec/sequence/src/filter/Take.kt | 6 ++++ .../exec/sequence/src/filter/TakeWhile.kt | 7 ++++ .../exec/sequence/FilterOperationsTest.kt | 18 ++++++++++ 21 files changed, 362 insertions(+) create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/drop.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/dropWhile.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/filter.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/filterIndexed.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/filterIsInstance.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/filterNot.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/minus.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/minusElement.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/take.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/outs/takeWhile.out create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/Drop.kt create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/DropWhile.kt create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/Filter.kt create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/FilterIndexed.kt create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/FilterIsInstance.kt create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/FilterNot.kt create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/Minus.kt create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/MinusElement.kt create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/Take.kt create mode 100644 idea/testData/debugger/sequence/exec/sequence/src/filter/TakeWhile.kt create mode 100644 idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/FilterOperationsTest.kt diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/drop.out b/idea/testData/debugger/sequence/exec/sequence/outs/drop.out new file mode 100644 index 00000000000..d4275bb56de --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/drop.out @@ -0,0 +1,28 @@ +LineBreakpoint created at Drop.kt:5 +Run Java +Connected to the target VM +Drop.kt:5 +listOf(1, 2, 3).asSequence() +.drop(2) +.count() +drop + before: 1,2,3 + after: 4 +count + before: 4 + after: nothing +mappings for drop + direct: + 1 -> nothing + 2 -> nothing + 3 -> 4 + reverse: + 3 <- 4 +mappings for count + direct: + 4 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/dropWhile.out b/idea/testData/debugger/sequence/exec/sequence/outs/dropWhile.out new file mode 100644 index 00000000000..f5a90656b37 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/dropWhile.out @@ -0,0 +1,30 @@ +LineBreakpoint created at DropWhile.kt:5 +Run Java +Connected to the target VM +DropWhile.kt:5 +listOf("abs", "bcs", "abt").asSequence() +.dropWhile({ it.startsWith('a') }) +.forEach({}) +dropWhile + before: 1,2,4 + after: 3,5 +forEach + before: 3,5 + after: nothing +mappings for dropWhile + direct: + 1 -> nothing + 2 -> 3 + 4 -> 5 + reverse: + 2 <- 3 + 4 <- 5 +mappings for forEach + direct: + 3 -> nothing + 5 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/filter.out b/idea/testData/debugger/sequence/exec/sequence/outs/filter.out new file mode 100644 index 00000000000..e7d2d3e5624 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/filter.out @@ -0,0 +1,28 @@ +LineBreakpoint created at Filter.kt:5 +Run Java +Connected to the target VM +Filter.kt:5 +listOf(1,2,3).asSequence() +.filter({ it == 2 }) +.count() +filter + before: 1,2,4 + after: 3 +count + before: 3 + after: nothing +mappings for filter + direct: + 1 -> nothing + 2 -> 3 + 4 -> nothing + reverse: + 2 <- 3 +mappings for count + direct: + 3 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/filterIndexed.out b/idea/testData/debugger/sequence/exec/sequence/outs/filterIndexed.out new file mode 100644 index 00000000000..8c44ca03922 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/filterIndexed.out @@ -0,0 +1,30 @@ +LineBreakpoint created at FilterIndexed.kt:5 +Run Java +Connected to the target VM +FilterIndexed.kt:5 +intArrayOf(1, 2, 3).asSequence() +.filterIndexed({ index, _ -> index % 2 == 0 }) +.count() +filterIndexed + before: 1,3,4 + after: 2,5 +count + before: 2,5 + after: nothing +mappings for filterIndexed + direct: + 1 -> 2 + 3 -> nothing + 4 -> 5 + reverse: + 1 <- 2 + 4 <- 5 +mappings for count + direct: + 2 -> nothing + 5 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/filterIsInstance.out b/idea/testData/debugger/sequence/exec/sequence/outs/filterIsInstance.out new file mode 100644 index 00000000000..dc7c72835ae --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/filterIsInstance.out @@ -0,0 +1,14 @@ +LineBreakpoint created at FilterIsInstance.kt:6 +Run Java +Connected to the target VM +FilterIsInstance.kt:6 +Exception caught: junit.framework.AssertionFailedError: Type inference failed: Not enough information to infer parameter R in inline fun Sequence<*>.filterIsInstance(): Sequence +Please specify it explicitly. +, Type inference failed: Not enough information to infer parameter R in inline fun Sequence<*>.filterIsInstance(): Sequence +Please specify it explicitly. + +WRONG! Should be fixed in the platform + +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/filterNot.out b/idea/testData/debugger/sequence/exec/sequence/outs/filterNot.out new file mode 100644 index 00000000000..0ad17865610 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/filterNot.out @@ -0,0 +1,30 @@ +LineBreakpoint created at FilterNot.kt:6 +Run Java +Connected to the target VM +FilterNot.kt:6 +booleanArrayOf(true, false, false).asSequence() +.filterNot({ it }) +.lastIndexOf(true) +filterNot + before: 1,2,4 + after: 3,5 +lastIndexOf + before: 3,5 + after: nothing +mappings for filterNot + direct: + 1 -> nothing + 2 -> 3 + 4 -> 5 + reverse: + 2 <- 3 + 4 <- 5 +mappings for lastIndexOf + direct: + 3 -> nothing + 5 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/minus.out b/idea/testData/debugger/sequence/exec/sequence/outs/minus.out new file mode 100644 index 00000000000..03bc9b500f5 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/minus.out @@ -0,0 +1,31 @@ +LineBreakpoint created at Minus.kt:6 +Run Java +Connected to the target VM +Minus.kt:6 +byteArrayOf(1, 2, 3, 2).asSequence() +.minus(arrayOf(2.toByte())) +.count() +minus + before: 1,3,4,6 + after: 2,5 +count + before: 2,5 + after: nothing +mappings for minus + direct: + 1 -> 2 + 3 -> nothing + 4 -> 5 + 6 -> nothing + reverse: + 1 <- 2 + 4 <- 5 +mappings for count + direct: + 2 -> nothing + 5 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/minusElement.out b/idea/testData/debugger/sequence/exec/sequence/outs/minusElement.out new file mode 100644 index 00000000000..4bfec087364 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/minusElement.out @@ -0,0 +1,33 @@ +LineBreakpoint created at MinusElement.kt:5 +Run Java +Connected to the target VM +MinusElement.kt:5 +byteArrayOf(1, 2, 3, 2).asSequence() +.minusElement(2.toByte()) +.count() +minusElement + before: 1,3,4,6 + after: 2,5,7 +count + before: 2,5,7 + after: nothing +mappings for minusElement + direct: + 1 -> 2 + 3 -> nothing + 4 -> 5 + 6 -> 7 + reverse: + 1 <- 2 + 4 <- 5 + 6 <- 7 +mappings for count + direct: + 2 -> nothing + 5 -> nothing + 7 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/take.out b/idea/testData/debugger/sequence/exec/sequence/outs/take.out new file mode 100644 index 00000000000..21ec4691c8f --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/take.out @@ -0,0 +1,29 @@ +LineBreakpoint created at Take.kt:5 +Run Java +Connected to the target VM +Take.kt:5 +charArrayOf('a', 'b', 'c').asSequence() +.take(2) +.count() +take + before: 1,3 + after: 2,4 +count + before: 2,4 + after: nothing +mappings for take + direct: + 1 -> 2 + 3 -> 4 + reverse: + 1 <- 2 + 3 <- 4 +mappings for count + direct: + 2 -> nothing + 4 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/outs/takeWhile.out b/idea/testData/debugger/sequence/exec/sequence/outs/takeWhile.out new file mode 100644 index 00000000000..db5c1e711b1 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/outs/takeWhile.out @@ -0,0 +1,27 @@ +LineBreakpoint created at TakeWhile.kt:6 +Run Java +Connected to the target VM +TakeWhile.kt:6 +doubleArrayOf(1.0, 3.0, 5.0).asSequence() +.takeWhile({ it < 2 }) +.forEach({}) +takeWhile + before: 1,3 + after: 2 +forEach + before: 2 + after: nothing +mappings for takeWhile + direct: + 1 -> 2 + 3 -> nothing + reverse: + 1 <- 2 +mappings for forEach + direct: + 2 -> nothing + reverse: + empty +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/Drop.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/Drop.kt new file mode 100644 index 00000000000..39804e7ccb2 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/Drop.kt @@ -0,0 +1,6 @@ +package filter + +fun main(args: Array) { + // Breakpoint! + listOf(1, 2, 3).asSequence().drop(2).count() +} \ No newline at end of file diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/DropWhile.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/DropWhile.kt new file mode 100644 index 00000000000..cb844969db0 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/DropWhile.kt @@ -0,0 +1,6 @@ +package filter + +fun main(args: Array) { + // Breakpoint! + listOf("abs", "bcs", "abt").asSequence().dropWhile { it.startsWith('a') }.forEach {} +} \ No newline at end of file diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/Filter.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/Filter.kt new file mode 100644 index 00000000000..9bb3acb11da --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/Filter.kt @@ -0,0 +1,6 @@ +package filter + +fun main(args: Array) { + // Breakpoint! + listOf(1,2,3).asSequence().filter { it == 2 }.count() +} \ No newline at end of file diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/FilterIndexed.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/FilterIndexed.kt new file mode 100644 index 00000000000..8fb8d791b52 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/FilterIndexed.kt @@ -0,0 +1,6 @@ +package filter + +fun main(args: Array) { + // Breakpoint! + intArrayOf(1, 2, 3).asSequence().filterIndexed({ index, _ -> index % 2 == 0 }).count() +} \ No newline at end of file diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/FilterIsInstance.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/FilterIsInstance.kt new file mode 100644 index 00000000000..ec29d52dfa2 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/FilterIsInstance.kt @@ -0,0 +1,7 @@ +// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package filter + +fun main(args: Array) { + // Breakpoint! + arrayOf(true, "12", false).asSequence().filterIsInstance().forEach {} +} \ No newline at end of file diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/FilterNot.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/FilterNot.kt new file mode 100644 index 00000000000..dfeac143ccc --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/FilterNot.kt @@ -0,0 +1,7 @@ +// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package filter + +fun main(args: Array) { + // Breakpoint! + booleanArrayOf(true, false, false).asSequence().filterNot { it }.lastIndexOf(true) +} \ No newline at end of file diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/Minus.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/Minus.kt new file mode 100644 index 00000000000..270a986f4c8 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/Minus.kt @@ -0,0 +1,7 @@ +// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package filter + +fun main(args: Array) { + // Breakpoint! + byteArrayOf(1, 2, 3, 2).asSequence().minus(arrayOf(2.toByte())).count() +} \ No newline at end of file diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/MinusElement.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/MinusElement.kt new file mode 100644 index 00000000000..6fa2be1598a --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/MinusElement.kt @@ -0,0 +1,6 @@ +package filter + +fun main(args: Array) { + // Breakpoint! + byteArrayOf(1, 2, 3, 2).asSequence().minusElement(2.toByte()).count() +} \ No newline at end of file diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/Take.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/Take.kt new file mode 100644 index 00000000000..50039271c05 --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/Take.kt @@ -0,0 +1,6 @@ +package filter + +fun main(args: Array) { + // Breakpoint! + charArrayOf('a', 'b', 'c').asSequence().take(2).count() +} \ No newline at end of file diff --git a/idea/testData/debugger/sequence/exec/sequence/src/filter/TakeWhile.kt b/idea/testData/debugger/sequence/exec/sequence/src/filter/TakeWhile.kt new file mode 100644 index 00000000000..e873a2b96da --- /dev/null +++ b/idea/testData/debugger/sequence/exec/sequence/src/filter/TakeWhile.kt @@ -0,0 +1,7 @@ +// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package filter + +fun main(args: Array) { + // Breakpoint! + doubleArrayOf(1.0, 3.0, 5.0).asSequence().takeWhile { it < 2 }.forEach {} +} \ No newline at end of file diff --git a/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/FilterOperationsTest.kt b/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/FilterOperationsTest.kt new file mode 100644 index 00000000000..c75774edd81 --- /dev/null +++ b/idea/tests/com/intellij/debugger/streams/kotlin/exec/sequence/FilterOperationsTest.kt @@ -0,0 +1,18 @@ +// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.debugger.streams.kotlin.exec.sequence + +class FilterOperationsTest : OperationsTestCase("filter") { + fun testFilter() = doTestWithResult() + fun testFilterNot() = doTestWithResult() + fun testFilterIndexed() = doTestWithResult() + fun testFilterIsInstance() = doTestWithoutResult() + + fun testDrop() = doTestWithResult() + fun testDropWhile() = doTestWithoutResult() + + fun testMinus() = doTestWithResult() + fun testMinusElement() = doTestWithResult() + + fun testTake() = doTestWithResult() + fun testTakeWhile() = doTestWithoutResult() +} \ No newline at end of file