From b9dbdda8d0a157e0abe8ba54a37b8e2217d2125e Mon Sep 17 00:00:00 2001 From: phaller Date: Tue, 30 Oct 2012 15:29:16 +0100 Subject: Enable using partest for running tests --- .../test/files/run/async-spec/AsyncSpec.scala | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/async/test/files/run/async-spec/AsyncSpec.scala (limited to 'src/async/test/files/run/async-spec/AsyncSpec.scala') diff --git a/src/async/test/files/run/async-spec/AsyncSpec.scala b/src/async/test/files/run/async-spec/AsyncSpec.scala new file mode 100644 index 0000000..afd4c6c --- /dev/null +++ b/src/async/test/files/run/async-spec/AsyncSpec.scala @@ -0,0 +1,75 @@ +/** + * Copyright (C) 2012 Typesafe Inc. + */ +package scala.async + +import language.{ reflectiveCalls, postfixOps } +import scala.concurrent.{ Future, ExecutionContext, future, Await } +import scala.concurrent.duration._ +import scala.async.Async.{ async, await } + + +object Test extends App { + + AsyncSpec.check() + +} + + +class Test1Class { + import ExecutionContext.Implicits.global + + def m1(x: Int): Future[Int] = future { + Thread.sleep(1000) + x + 2 + } + + def m2(y: Int): Future[Int] = async { + val f = m1(y) + val x = await(f) + x + 2 + } + + def m3(y: Int): Future[Int] = async { + val f1 = m1(y) + val x1 = await(f1) + val f2 = m1(y + 2) + val x2 = await(f2) + x1 + x2 + } + + // currently fails with: error: not found: value f2 +/* + def m4(y: Int): Future[Int] = async { + val f1 = m1(y) + val f2 = m1(y + 2) + val x1 = await(f1) + println("between two awaits") + val x2 = await(f2) + x1 + x2 + } +*/ +} + + +object AsyncSpec extends MinimalScalaTest { + + "An async method" should { + "support a simple await" in { + val o = new Test1Class + val fut = o.m2(10) + val res = Await.result(fut, 2 seconds) + res mustBe(14) + } + } + + "An async method" should { + "support several awaits in sequence" in { + val o = new Test1Class + val fut = o.m3(10) + val res = Await.result(fut, 4 seconds) + res mustBe(26) + } + } + +} -- cgit v1.2.3