aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/scala/async/package.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/scala/async/package.scala')
-rw-r--r--src/test/scala/scala/async/package.scala43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/test/scala/scala/async/package.scala b/src/test/scala/scala/async/package.scala
index 32e8be4..868024d 100644
--- a/src/test/scala/scala/async/package.scala
+++ b/src/test/scala/scala/async/package.scala
@@ -1,5 +1,46 @@
package scala
-package object async extends TestUtils {
+import reflect._
+import tools.reflect.ToolBoxError
+package object async {
+
+
+ implicit class objectops(obj: Any) {
+ def mustBe(other: Any) = assert(obj == other, obj + " is not " + other)
+
+ def mustEqual(other: Any) = mustBe(other)
+ }
+
+ implicit class stringops(text: String) {
+ def mustContain(substring: String) = assert(text contains substring, text)
+ }
+
+ def intercept[T <: Throwable : ClassTag](body: => Any): T = {
+ try {
+ body
+ throw new Exception(s"Exception of type ${classTag[T]} was not thrown")
+ } catch {
+ case t: Throwable =>
+ if (classTag[T].runtimeClass != t.getClass) throw t
+ else t.asInstanceOf[T]
+ }
+ }
+
+ def eval(code: String, compileOptions: String = ""): Any = {
+ val tb = mkToolbox(compileOptions)
+ tb.eval(tb.parse(code))
+ }
+
+ def mkToolbox(compileOptions: String = "") = {
+ val m = scala.reflect.runtime.currentMirror
+ import scala.tools.reflect.ToolBox
+ m.mkToolBox(options = compileOptions)
+ }
+
+ def expectError(errorSnippet: String, compileOptions: String = "", baseCompileOptions: String = "-cp target/scala-2.10/classes")(code: String) {
+ intercept[ToolBoxError] {
+ eval(code, compileOptions + " " + baseCompileOptions)
+ }.getMessage mustContain errorSnippet
+ }
}