summaryrefslogblamecommitdiff
path: root/test/files/jvm/t2515.scala
blob: 83cb0581683cb0b9c8479024bc8f229cda23a756 (plain) (tree)







































                                                                                                
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
      }
    }
  }

}