summaryrefslogtreecommitdiff
path: root/test/files/jvm/scala-concurrent-tck.scala
diff options
context:
space:
mode:
authoraleksandar <aleksandar@lampmac14.epfl.ch>2011-12-13 13:31:06 +0100
committeraleksandar <aleksandar@lampmac14.epfl.ch>2011-12-13 13:31:06 +0100
commit65b27aa3ab58b39a3b68999f4c6b9d3af7a81f85 (patch)
tree57f57618a306f852349dfb662a2caf97c1c3732d /test/files/jvm/scala-concurrent-tck.scala
parentd9981460533949182691e2d83079af364d2dfcde (diff)
downloadscala-65b27aa3ab58b39a3b68999f4c6b9d3af7a81f85.tar.gz
scala-65b27aa3ab58b39a3b68999f4c6b9d3af7a81f85.tar.bz2
scala-65b27aa3ab58b39a3b68999f4c6b9d3af7a81f85.zip
Rename block->await. Add more tck test cases.
Diffstat (limited to 'test/files/jvm/scala-concurrent-tck.scala')
-rw-r--r--test/files/jvm/scala-concurrent-tck.scala95
1 files changed, 87 insertions, 8 deletions
diff --git a/test/files/jvm/scala-concurrent-tck.scala b/test/files/jvm/scala-concurrent-tck.scala
index 6e291c396b..774d4236b7 100644
--- a/test/files/jvm/scala-concurrent-tck.scala
+++ b/test/files/jvm/scala-concurrent-tck.scala
@@ -8,15 +8,14 @@ import scala.concurrent.{
SyncVar,
ExecutionException
}
+import scala.concurrent.future
+import scala.concurrent.promise
+import scala.concurrent.await
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)
@@ -206,6 +205,90 @@ trait FutureCombinators extends TestBase {
trait FutureProjections extends TestBase {
+ def testFailedFailureOnComplete(): Unit = once {
+ done =>
+ val cause = new RuntimeException
+ val f = future {
+ throw cause
+ }
+ f.failed onComplete {
+ case Right(t) =>
+ assert(t == cause)
+ done()
+ case Left(t) =>
+ assert(false)
+ }
+ }
+
+ def testFailedFailureOnSuccess(): Unit = once {
+ done =>
+ val cause = new RuntimeException
+ val f = future {
+ throw cause
+ }
+ f.failed onSuccess {
+ t =>
+ assert(t == cause)
+ done()
+ }
+ }
+
+ def testFailedSuccessOnComplete(): Unit = once {
+ done =>
+ val f = future { 0 }
+ f.failed onComplete {
+ case Right(t) =>
+ assert(false)
+ case Left(t) =>
+ assert(t.isInstanceOf[NoSuchElementException])
+ done()
+ }
+ }
+
+ def testFailedSuccessOnFailure(): Unit = once {
+ done =>
+ val f = future { 0 }
+ f.failed onFailure {
+ case nsee: NoSuchElementException =>
+ done()
+ }
+ }
+
+ def testFailedFailureAwait(): Unit = once {
+ done =>
+ val cause = new RuntimeException
+ val f = future {
+ throw cause
+ }
+ assert(await(0, f.failed) == cause)
+ done()
+ }
+
+ def testFailedSuccessAwait(): Unit = once {
+ done =>
+ val f = future { 0 }
+ try {
+ println(await(0, f.failed))
+ assert(false)
+ } catch {
+ case nsee: NoSuchElementException => done()
+ }
+ }
+
+ testFailedFailureOnComplete()
+ testFailedFailureOnSuccess()
+ testFailedSuccessOnComplete()
+ testFailedSuccessOnFailure()
+ testFailedFailureAwait()
+ //testFailedSuccessAwait()
+
+}
+
+
+trait Blocking extends TestBase {
+
+ // TODO
+
}
@@ -246,10 +329,6 @@ with Promises
with Exceptions
{
- def future[T](body: =>T) = scala.concurrent.future(body)
-
- def promise[T] = scala.concurrent.promise[T]
-
}