blob: 1ff7ee516eecfae71ddbb430284cf414ffe0bf17 (
plain) (
tree)
|
|
import scala.util.control.NonFatal
trait NonFatalTests {
//NonFatals
val nonFatals: Seq[Throwable] =
Seq(new RuntimeException,
new Exception,
new Throwable,
new NotImplementedError)
//Fatals
val fatals: Seq[Throwable] =
Seq(new InterruptedException,
new StackOverflowError,
new OutOfMemoryError,
new LinkageError,
new VirtualMachineError {},
new Throwable with scala.util.control.ControlThrowable)
def testFatalsUsingApply(): Unit = {
fatals foreach { t => assert(NonFatal(t) == false) }
}
def testNonFatalsUsingApply(): Unit = {
nonFatals foreach { t => assert(NonFatal(t) == true) }
}
def testFatalsUsingUnapply(): Unit = {
fatals foreach { t => assert(NonFatal.unapply(t).isEmpty) }
}
def testNonFatalsUsingUnapply(): Unit = {
nonFatals foreach { t => assert(NonFatal.unapply(t).isDefined) }
}
testFatalsUsingApply()
testNonFatalsUsingApply()
testFatalsUsingUnapply()
testNonFatalsUsingUnapply()
}
object Test
extends App
with NonFatalTests {
System.exit(0)
}
|