Skip to content

Commit ff04b9f

Browse files
committed
tests for debugging in async block
1 parent 64774de commit ff04b9f

File tree

2 files changed

+90
-1
lines changed

2 files changed

+90
-1
lines changed

project/dependencies.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ object DependencyGroups {
196196
"com.github.julien-truffaut" %% "monocle-core" % "1.2.0-SNAPSHOT",
197197
"com.github.julien-truffaut" %% "monocle-generic" % "1.2.0-SNAPSHOT",
198198
"com.github.julien-truffaut" %% "monocle-macro" % "1.2.0-SNAPSHOT",
199-
"io.spray" %% "spray-routing" % "1.3.1"
199+
"io.spray" %% "spray-routing" % "1.3.1",
200+
"org.scala-lang.modules" % "scala-async_2.11" % "0.9.5"
200201
)
201202

202203
val testScalaLibraryDownloader = Seq(
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package org.jetbrains.plugins.scala.debugger.evaluateExpression
2+
3+
import org.jetbrains.plugins.scala.debugger.{ScalaDebuggerTestCase, ScalaVersion_2_11}
4+
5+
/**
6+
* @author Nikolay.Tropin
7+
*/
8+
9+
class InAsyncTest extends InAsyncTestBase with ScalaVersion_2_11
10+
11+
abstract class InAsyncTestBase extends ScalaDebuggerTestCase {
12+
13+
override protected def addOtherLibraries(): Unit = {
14+
addIvyCacheLibrary("scala-async", "/org.scala-lang.modules/scala-async_2.11/bundles/", "scala-async_2.11-0.9.5.jar")
15+
}
16+
17+
addFileWithBreakpoints("InAsync.scala",
18+
s"""
19+
|import scala.async.Async._
20+
|import scala.concurrent.Await
21+
|import scala.concurrent.duration.Duration
22+
|import scala.concurrent.ExecutionContext.Implicits.global
23+
|
24+
|object InAsync {
25+
| def main(args: Array[String]) {
26+
| val future = async {
27+
| val q = "q"
28+
| val f1 = async { false }
29+
| val x = 1
30+
| def inc(t: Int) = {
31+
| def inner(): String = {
32+
| val r = "r"
33+
| r + q$bp //3rd
34+
| }
35+
| inner()
36+
| t + x$bp //4th
37+
| }
38+
| val t = 0
39+
| val f2 = async { 42 }
40+
| "" $bp //1st
41+
| if (await(f1))
42+
| await(f2)
43+
| else {
44+
| val z = 1
45+
| inc(t + z) $bp //2nd
46+
| }
47+
| }
48+
|
49+
| println(Await.result(future, Duration.Inf))
50+
| }
51+
|}
52+
""".stripMargin)
53+
54+
def testInAsync(): Unit = {
55+
runDebugger() {
56+
waitForBreakpoint()
57+
evalEquals("q", "q")
58+
evalEquals("f1.value.get.get", "false")
59+
evalEquals("x", "1")
60+
evalEquals("t", "0")
61+
evalEquals("inc(1)", "2")
62+
evalEquals("f2.value.get.get", "42")
63+
atNextBreakpoint {
64+
evalEquals("q", "q")
65+
evalEquals("x", "1")
66+
evalEquals("t", "0")
67+
evalEquals("z", "1")
68+
evalEquals("inc(11)", "12")
69+
}
70+
atNextBreakpoint {
71+
evalEquals("q", "q")
72+
evalEquals("x", "1")
73+
evalEquals("t", "1")
74+
evalEquals("r", "r")
75+
evalEquals("inc(12)", "13")
76+
evalEquals("inner()", "rq")
77+
}
78+
atNextBreakpoint {
79+
evalEquals("q", "q")
80+
evalEquals("x", "1")
81+
evalEquals("t", "1")
82+
evalEquals("inc(13)", "14")
83+
evalEquals("inner()", "rq")
84+
}
85+
}
86+
}
87+
88+
}

0 commit comments

Comments
 (0)