diff options
author | Philipp Haller <hallerp@gmail.com> | 2009-10-25 08:31:33 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2009-10-25 08:31:33 +0000 |
commit | a129d09baec62024b1c040ddd52405d05fea3933 (patch) | |
tree | 67ce3307f7494df68ebf430d08185404d46f572a /test/files | |
parent | 728775440ccd67928c25914a1e003ff9765ad80b (diff) | |
download | scala-a129d09baec62024b1c040ddd52405d05fea3933.tar.gz scala-a129d09baec62024b1c040ddd52405d05fea3933.tar.bz2 scala-a129d09baec62024b1c040ddd52405d05fea3933.zip |
Fix and test for #2515.
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/jvm/t2515.check | 10 | ||||
-rw-r--r-- | test/files/jvm/t2515.scala | 40 |
2 files changed, 50 insertions, 0 deletions
diff --git a/test/files/jvm/t2515.check b/test/files/jvm/t2515.check new file mode 100644 index 0000000000..8cb8bde11e --- /dev/null +++ b/test/files/jvm/t2515.check @@ -0,0 +1,10 @@ +Iteration 1 succeeded +Iteration 2 succeeded +Iteration 3 succeeded +Iteration 4 succeeded +Iteration 5 succeeded +Iteration 6 succeeded +Iteration 7 succeeded +Iteration 8 succeeded +Iteration 9 succeeded +Iteration 10 succeeded diff --git a/test/files/jvm/t2515.scala b/test/files/jvm/t2515.scala new file mode 100644 index 0000000000..83cb058168 --- /dev/null +++ b/test/files/jvm/t2515.scala @@ -0,0 +1,40 @@ +import scala.actors.{Futures, TIMEOUT} +import scala.actors.Actor._ + +object Test { + + def compute(): Option[Boolean] = { + val fts = for (j <- 0 until 5) yield Futures.future { + receiveWithin (100) { + case TIMEOUT => true + case other => false + } + } + val done = Futures.awaitAll(2000, fts.toArray: _*) // list to array, as varargs + if (done.contains(None)) + None + else + Some(true) + } + + def main(args:Array[String]) : Unit = { + val format = new java.text.DecimalFormat("000.00'ms'") + var iter = 1 + val done = 11 + while (iter < done) { + val start = System.nanoTime() + val result = compute() + val time = System.nanoTime() - start + result match { + case Some(result) => + //printf("Iteration %2d succeeded after %s %n", iter, format.format(time / 1e6)) + printf("Iteration %2d succeeded%n", iter) + iter += 1 + case None => + printf(">>>> Iteration %2d failed after %s <<<<< %n", iter, format.format(time / 1e6)) + iter = done + } + } + } + +} |