org.scalatest.prop

# Whenever

#### trait Whenever extends AnyRef

Trait that contains the `whenever` clause that can be used in table- or generator-driven property checks.

Linear Supertypes
AnyRef, Any
Known Subclasses
GeneratorDrivenPropertyChecks, GeneratorDrivenPropertyChecks, PropertyChecks, PropertyChecks, TableDrivenPropertyChecks, TableDrivenPropertyChecks
Ordering

1. Alphabetic
2. By inheritance

Inherited

1. Hide All
2. Show all

1. Whenever
2. AnyRef
3. Any

Visibility

1. Public
2. All

### Value Members

1. #### def != (arg0: AnyRef): Boolean

   Attributes
     final
   Definition Classes
     AnyRef

2. #### def != (arg0: Any): Boolean

   Attributes
     final
   Definition Classes
     Any

3. #### def ## (): Int

   Attributes
     final
   Definition Classes
     AnyRef → Any

4. #### def == (arg0: AnyRef): Boolean

   Attributes
     final
   Definition Classes
     AnyRef

5. #### def == (arg0: Any): Boolean

   Attributes
     final
   Definition Classes
     Any

6. #### def asInstanceOf [T0] : T0

   Attributes
     final
   Definition Classes
     Any

7. #### def clone (): AnyRef

   Attributes
     protected[lang]
   Definition Classes
     AnyRef
   Annotations
     @throws()

8. #### def eq (arg0: AnyRef): Boolean

   Attributes
     final
   Definition Classes
     AnyRef

9. #### def equals (arg0: Any): Boolean

   Definition Classes
     AnyRef → Any

10. #### def finalize (): Unit

    Attributes
      protected[lang]
    Definition Classes
      AnyRef
    Annotations
      @throws()

11. #### def getClass (): java.lang.Class[_]

    Attributes
      final
    Definition Classes
      AnyRef

12. #### def hashCode (): Int

    Definition Classes
      AnyRef → Any

13. #### def isInstanceOf [T0] : Boolean

    Attributes
      final
    Definition Classes
      Any

14. #### def ne (arg0: AnyRef): Boolean

    Attributes
      final
    Definition Classes
      AnyRef

15. #### def notify (): Unit

    Attributes
      final
    Definition Classes
      AnyRef

16. #### def notifyAll (): Unit

    Attributes
      final
    Definition Classes
      AnyRef

17. #### def synchronized [T0] (arg0: ⇒ T0): T0

    Attributes
      final
    Definition Classes
      AnyRef

18. #### def toString (): String

    Definition Classes
      AnyRef → Any

19. #### def wait (): Unit

    Attributes
      final
    Definition Classes
      AnyRef
    Annotations
      @throws()

20. #### def wait (arg0: Long, arg1: Int): Unit

    Attributes
      final
    Definition Classes
      AnyRef
    Annotations
      @throws()

21. #### def wait (arg0: Long): Unit

    Attributes
      final
    Definition Classes
      AnyRef
    Annotations
      @throws()

22. #### def whenever (condition: Boolean)(fun: ⇒ Unit): Unit

    Evaluates the passed code block if the passed boolean condition is true, else throws `DiscardedEvaluationException`.

    Evaluates the passed code block if the passed boolean condition is true, else throws `DiscardedEvaluationException`.

    The `whenever` method can be used inside property check functions to discard invocations of the function with data for which it is known the property would fail. For example, given the following `Fraction` class:

        class Fraction(n: Int, d: Int) {

          require(d != 0)
          require(d != Integer.MIN_VALUE)
          require(n != Integer.MIN_VALUE)

          val numer = if (d < 0) -1 * n else n
          val denom = d.abs

          override def toString = numer + " / " + denom
        }

        import org.scalatest.prop.TableDrivenPropertyChecks._

        val fractions =
          Table(
            ("n", "d"),
            (  1,   2),
            ( -1,   2),
            (  1,  -2),
            ( -1,  -2),
            (  3,   1),
            ( -3,   1),
            ( -3,   0),
            (  3,  -1),
            (  3,  Integer.MIN_VALUE),
            (Integer.MIN_VALUE, 3),
            ( -3,  -1)
          )

    Imagine you wanted to check a property against this class with data that includes some value that are rejected by the constructor, such as a denominator of zero, which should result in an `IllegalArgumentException`. You could use `whenever` to discard any rows in the `fraction` that represent illegal arguments, like this:

        import org.scalatest.matchers.ShouldMatchers._

        forAll (fractions) { (n: Int, d: Int) =>

          whenever (d != 0 && d != Integer.MIN_VALUE
              && n != Integer.MIN_VALUE) {

            val f = new Fraction(n, d)

            if (n < 0 && d < 0 || n > 0 && d > 0)
              f.numer should be > 0
            else if (n != 0)
              f.numer should be < 0
            else
              f.numer should be === 0

            f.denom should be > 0
          }
        }

    In this example, rows 6, 8, and 9 have values that would cause a false to be passed to `whenever`. (For example, in row 6, `d` is 0, which means `d` `!=` `0` will be false.) For those rows, `whenever` will throw `DiscardedEvaluationException`, which will cause the `forAll` method to discard that row.

    condition

      the boolean condition that determines whether `whenever` will evaluate the `fun` function (`condition` is true) or throws `DiscardedEvaluationException` (`condition` is false)

    fun

      the function to evaluate if the specified `condition` is true

### Inherited from AnyRef

### Inherited from Any