summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/files/jvm/scala-concurrent-tck.scala25
1 files changed, 24 insertions, 1 deletions
diff --git a/test/files/jvm/scala-concurrent-tck.scala b/test/files/jvm/scala-concurrent-tck.scala
index e1b8d2763c..705675ae43 100644
--- a/test/files/jvm/scala-concurrent-tck.scala
+++ b/test/files/jvm/scala-concurrent-tck.scala
@@ -3,6 +3,7 @@
import scala.concurrent.{
Future,
+ Promise,
TimeoutException,
SyncVar,
ExecutionException
@@ -14,6 +15,8 @@ trait TestBase {
def future[T](body: =>T): Future[T]
+ def promise[T]: Promise[T]
+
def once(body: (() => Unit) => Unit) {
val sv = new SyncVar[Boolean]
body(() => sv put true)
@@ -141,7 +144,25 @@ trait FutureProjections extends TestBase {
trait Promises extends TestBase {
-
+
+ def testSuccess(): Unit = once {
+ done =>
+ val p = promise[Int]
+ val f = p.future
+
+ f.onSuccess { x =>
+ done()
+ assert(x == 5)
+ } onFailure { case any =>
+ done()
+ assert(false)
+ }
+
+ p.success(5)
+ }
+
+ testSuccess()
+
}
@@ -161,6 +182,8 @@ with Exceptions
def future[T](body: =>T) = scala.concurrent.future(body)
+ def promise[T] = scala.concurrent.promise[T]
+
}