diff options
Diffstat (limited to 'src/test/scala/scala/async/package.scala')
-rw-r--r-- | src/test/scala/scala/async/package.scala | 43 |
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 + } } |