aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/xyz/driver/restquery/rest/parsers/TestUtils.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/xyz/driver/restquery/rest/parsers/TestUtils.scala')
-rw-r--r--src/test/scala/xyz/driver/restquery/rest/parsers/TestUtils.scala54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/test/scala/xyz/driver/restquery/rest/parsers/TestUtils.scala b/src/test/scala/xyz/driver/restquery/rest/parsers/TestUtils.scala
new file mode 100644
index 0000000..9ea75b6
--- /dev/null
+++ b/src/test/scala/xyz/driver/restquery/rest/parsers/TestUtils.scala
@@ -0,0 +1,54 @@
+package xyz.driver.restquery.http.parsers
+
+import
+org.scalacheck.Prop
+import org.scalacheck.Prop.BooleanOperators
+import org.scalatest.matchers.{MatchResult, Matcher}
+import xyz.driver.restquery.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(_) => 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(_) => true
+ }
+
+ }
+
+}