Как расширить самый масштабный макрос assert - PullRequest
0 голосов
/ 17 мая 2018

Я хотел бы включить:

eventually { assert(x == 0) }

в

verify { x == 0 }

и по-прежнему получаю хорошее консольное сообщение:

Caused by: org.scalatest.exceptions.TestFailedException: 1 did not equal 0

Как реализовать verify?

1 Ответ

0 голосов
/ 17 мая 2018

verify тоже должен быть макросом:

import scala.language.experimental.macros
import scala.reflect.macros.blackbox

class VerifyMacro(val c: blackbox.Context) {
  import c.universe._

  def verifyImpl(condition: Tree): Tree =
    q"${c.prefix}.eventually(${c.prefix}.assert($condition))"
}

import org.scalatest._
import org.scalatest.concurrent._

trait Verifications extends Assertions with Eventually {
  def verify(condition: Boolean): Assertion = macro VerifyMacro.verifyImpl
}
...