aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/scala/async/run/toughtype/ToughType.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-10-02 11:11:06 +1000
committerJason Zaugg <jzaugg@gmail.com>2014-10-02 11:11:06 +1000
commit38416aec4cbe5b47153ae5f634e420bc00b2292d (patch)
treeb55513a0edf9c11c4120214d0966bd431435a968 /src/test/scala/scala/async/run/toughtype/ToughType.scala
parent0f8ea5cc046f30f28975556ec37855e3ef5a2c69 (diff)
parentf42efa3b225dc82a83fb1c7730e9218e5c8a0325 (diff)
downloadscala-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/async/run/toughtype/ToughType.scala')
-rw-r--r--src/test/scala/scala/async/run/toughtype/ToughType.scala75
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