diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2014-10-02 11:11:06 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2014-10-02 11:11:06 +1000 |
commit | 38416aec4cbe5b47153ae5f634e420bc00b2292d (patch) | |
tree | b55513a0edf9c11c4120214d0966bd431435a968 /src/test/scala/scala | |
parent | 0f8ea5cc046f30f28975556ec37855e3ef5a2c69 (diff) | |
parent | f42efa3b225dc82a83fb1c7730e9218e5c8a0325 (diff) | |
download | scala-async-38416aec4cbe5b47153ae5f634e420bc00b2292d.tar.gz scala-async-38416aec4cbe5b47153ae5f634e420bc00b2292d.tar.bz2 scala-async-38416aec4cbe5b47153ae5f634e420bc00b2292d.zip |
Merge pull request #92 from retronym/merge/2.10.x-to-master-20140930
Merge 2.10.x to master (plus a test)
Diffstat (limited to 'src/test/scala/scala')
-rw-r--r-- | src/test/scala/scala/async/run/toughtype/ToughType.scala | 75 |
1 files changed, 74 insertions, 1 deletions
diff --git a/src/test/scala/scala/async/run/toughtype/ToughType.scala b/src/test/scala/scala/async/run/toughtype/ToughType.scala index 5ff1605..9ae33b1 100644 --- a/src/test/scala/scala/async/run/toughtype/ToughType.scala +++ b/src/test/scala/scala/async/run/toughtype/ToughType.scala @@ -239,9 +239,82 @@ class ToughTypeSpec { val result = Await.result(f, 5.seconds) result mustEqual (new IntWrapper("foo")) } + + @Test def ticket86NestedValueClass() { + import ExecutionContext.Implicits.global + + val f = async { + val a = Future.successful(new IntWrapper("42")) + await(await(a).plusStr) + } + val result = Await.result(f, 5.seconds) + result mustEqual "42!" + } + + @Test def ticket86MatchedValueClass(): Unit = { + import ExecutionContext.Implicits.global + + def doAThing(param: IntWrapper) = Future(None) + + val fut = async { + Option(new IntWrapper("value!")) match { + case Some(valueHolder) => + await(doAThing(valueHolder)) + case None => + None + } + } + + val result = Await.result(fut, 5.seconds) + result mustBe None + } + + @Test def ticket86MatchedParameterizedValueClass(): Unit = { + import ExecutionContext.Implicits.global + + def doAThing(param: ParamWrapper[String]) = Future(None) + + val fut = async { + Option(new ParamWrapper("value!")) match { + case Some(valueHolder) => + await(doAThing(valueHolder)) + case None => + None + } + } + + val result = Await.result(fut, 5.seconds) + result mustBe None + } + + @Test def ticket86PrivateValueClass(): Unit = { + import ExecutionContext.Implicits.global + + def doAThing(param: PrivateWrapper) = Future(None) + + val fut = async { + Option(PrivateWrapper.Instance) match { + case Some(valueHolder) => + await(doAThing(valueHolder)) + case None => + None + } + } + + val result = Await.result(fut, 5.seconds) + result mustBe None + } } -class IntWrapper(val value: String) extends AnyVal +class IntWrapper(val value: String) extends AnyVal { + def plusStr = Future.successful(value + "!") +} +class ParamWrapper[T](val value: T) extends AnyVal + +class PrivateWrapper private (private val value: String) extends AnyVal +object PrivateWrapper { + def Instance = new PrivateWrapper("") +} trait A |