Tests and fixes for component manager and cache interface.

This commit is contained in:
Mark Harrah 2009-08-20 00:02:06 -04:00
parent 4b824fbe84
commit 31b6464101
1 changed files with 14 additions and 1 deletions

View File

@ -8,10 +8,16 @@ class TestLogger extends Logger
def debug(msg: F0[String]) = buffer("[debug] ", msg)
def error(msg: F0[String]) = buffer("[error] ", msg)
def verbose(msg: F0[String]) = buffer("[verbose] ", msg)
def info(msg: => String) = buffer("[info] ", msg)
def warn(msg: => String) = buffer("[warn] ", msg)
def debug(msg: => String) = buffer("[debug] ", msg)
def error(msg: => String) = buffer("[error] ", msg)
def verbose(msg: => String) = buffer("[verbose] ", msg)
def show() { buffer.foreach(_()) }
def clear() { buffer.clear() }
def trace(t: F0[Throwable]) { buffer += f0(t().printStackTrace) }
private def buffer(s: String, msg: F0[String]) { buffer += f0(println(s + msg())) }
private def buffer(s: String, msg: F0[String]) { buffer(s, msg()) }
private def buffer(s: String, msg: => String) { buffer += f0(println(s + msg)) }
}
object TestLogger
{
@ -22,4 +28,11 @@ object TestLogger
catch { case e: Exception => log.show(); throw e }
finally { log.clear() }
}
def apply[L <: TestLogger, T](newLogger: => L)(f: L => T): T =
{
val log = newLogger
try { f(log) }
catch { case e: Exception => log.show(); throw e }
finally { log.clear() }
}
}