diff options
Diffstat (limited to 'src/test/scala')
-rw-r--r-- | src/test/scala/scala/async/TreeInterrogation.scala | 29 | ||||
-rw-r--r-- | src/test/scala/scala/async/neg/NakedAwait.scala | 16 | ||||
-rw-r--r-- | src/test/scala/scala/async/run/ifelse0/WhileSpec.scala | 43 |
3 files changed, 60 insertions, 28 deletions
diff --git a/src/test/scala/scala/async/TreeInterrogation.scala b/src/test/scala/scala/async/TreeInterrogation.scala index cf5948c..9ac0dce 100644 --- a/src/test/scala/scala/async/TreeInterrogation.scala +++ b/src/test/scala/scala/async/TreeInterrogation.scala @@ -36,23 +36,28 @@ class TreeInterrogation { } - // @Test + @Test def sandbox() { val cm = reflect.runtime.currentMirror val tb = mkToolbox("-cp target/scala-2.10/classes") val tree = tb.parse( - """| import _root_.scala.async.AsyncId._ + """ import _root_.scala.async.AsyncId._ | async { - | var x = 0 - | var y = 0 - | while (x <= 2) { - | y = await(x) - | x += 1 - | } - | y + | var xxx: Int = 0 + | var y = 0 + | println("before while") + | while (xxx < 3) { + | println("in while before await") + | y = await(xxx) + | println("in while after await") + | xxx = xxx + 1 + | } + | println("after while") + | y | }""".stripMargin) - val tree1 = tb.typeCheck(tree) - - println(cm.universe.show(tree1)) + //println(tree) + val tree1 = tb.typeCheck(tree.duplicate) + //println(cm.universe.show(tree1)) + //println(tb.eval(tree)) } } diff --git a/src/test/scala/scala/async/neg/NakedAwait.scala b/src/test/scala/scala/async/neg/NakedAwait.scala index d400729..a0c4e4d 100644 --- a/src/test/scala/scala/async/neg/NakedAwait.scala +++ b/src/test/scala/scala/async/neg/NakedAwait.scala @@ -117,20 +117,4 @@ class NakedAwait { """.stripMargin } } - - @Test - def whileBody() { - expectError("await must not be used in this position") { - """ import _root_.scala.async.AsyncId._ - | async { - | var x = 0 - | var y = 0 - | while (x <= 2) { - | y = await(x) - | x += 1 - | } - | y - | }""".stripMargin - } - } } diff --git a/src/test/scala/scala/async/run/ifelse0/WhileSpec.scala b/src/test/scala/scala/async/run/ifelse0/WhileSpec.scala new file mode 100644 index 0000000..d08e2c5 --- /dev/null +++ b/src/test/scala/scala/async/run/ifelse0/WhileSpec.scala @@ -0,0 +1,43 @@ +package scala.async +package run +package ifelse0 + +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import org.junit.Test + +@RunWith(classOf[JUnit4]) +class WhileSpec { + + @Test + def whiling1() { + import AsyncId._ + + val result = async { + var xxx: Int = 0 + var y = 0 + while (xxx < 3) { + y = await(xxx) + xxx = xxx + 1 + } + y + } + result mustBe (2) + } + + @Test + def whiling2() { + import AsyncId._ + + val result = async { + var xxx: Int = 0 + var y = 0 + while (false) { + y = await(xxx) + xxx = xxx + 1 + } + y + } + result mustBe (0) + } +}
\ No newline at end of file |