blob: 09b60ed304bfc30ada093af29144960038ef9a2a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
package xyz.driver.pdsuicommon.parsers
import org.scalacheck.Prop
import org.scalacheck.Prop.BooleanOperators
import org.scalatest.matchers.{MatchResult, Matcher}
import xyz.driver.pdsuicommon.utils.Utils
import scala.reflect.ClassTag
import scala.util.{Failure, Success, Try}
object TestUtils {
object success extends Matcher[Try[Any]] {
override def apply(left: Try[Any]) = {
MatchResult(left.isSuccess, s"$left did not fail", s"did fail with $left")
}
}
class FailWith[ThrowableT <: Throwable](implicit ct: ClassTag[ThrowableT]) extends Matcher[Try[Any]] {
override def apply(left: Try[Any]): MatchResult = {
MatchResult(
left.isFailure && left.failed.get.getClass == ct.runtimeClass,
left match {
case Success(x) => s"$left did not fail"
case Failure(e) =>
s"$left did fail with ${Utils.getClassSimpleName(e.getClass)}, " +
s"not ${Utils.getClassSimpleName(ct.runtimeClass)}"
},
left match {
case Success(_) => s"$left failed with ${Utils.getClassSimpleName(ct.runtimeClass)}"
case Failure(e) => s"$left failed with ${Utils.getClassSimpleName(e.getClass)}"
}
)
}
}
def failWith[ThrowableT <: Throwable](implicit ct: ClassTag[ThrowableT]) = new FailWith[ThrowableT]
final implicit class TryPropOps(val self: Try[Any]) extends AnyVal {
def successProp: Prop = self match {
case Success(_) => true :| "ok"
case Failure(e) => false :| e.getMessage
}
def failureProp: Prop = self match {
case Success(x) => false :| s"invalid: $x"
case Failure(e) => true
}
}
}
|