org.scalatest.prop

# GeneratorDrivenPropertyChecks

#### trait GeneratorDrivenPropertyChecks extends Whenever with Configuration

Trait containing methods that faciliate property checks against generated data using ScalaCheck.

This trait contains `forAll` methods that provide various ways to check properties using generated data. Use of this trait requires that ScalaCheck be on the class path when you compile and run your tests. It also contains a `wherever` method that can be used to indicate a property need only hold whenever some condition is true.

For an example of trait `GeneratorDrivenPropertyChecks` in action, imagine you want to test this `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
    }

To test the behavior of `Fraction`, you could mix in or import the members of `GeneratorDrivenPropertyChecks`(and `ShouldMatchers`) and check a property using a `forAll` method, like this:

    forAll { (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
      }
    }

Trait `GeneratorDrivenPropertyChecks` provides overloaded `forAll` methods that allow you to check properties using the data provided by a ScalaCheck generator. The simplest form of `forAll` method takes two parameter lists, the second of which is implicit. The first parameter list is a "property" function with one to six parameters. An implicit `Arbitrary` generator and `Shrink` object needs to be supplied for The `forAll` method will pass each row of data to each parameter type. ScalaCheck provides many implicit `Arbitrary` generators for common types such as`Int`, `String`, `List[Float]`, etc., in its `org.scalacheck.Arbitrary` companion object. So long as you use types for which ScalaCheck already provides implicit `Arbitrary` generators, you needn't worry about them. Same for `Shrink` objects, which are provided by ScalaCheck's `org.scalacheck.Shrink` companion object. Most often you can simply pass a property function to `forAll`, and the compiler will grab the implicit values provided by ScalaCheck.

The `forAll` methods use the supplied `Arbitrary` generators to generate example arguments and pass them to the property function, and generate a `GeneratorDrivenPropertyCheckFailedException` if the function completes abruptly for any exception that would normally cause a test to fail in ScalaTest other than `DiscardedEvaluationException`. An`DiscardedEvaluationException`, which is thrown by the `whenever` method (defined in trait `Whenever`, which this trait extends) to indicate a condition required by the property function is not met by a row of passed data, will simply cause `forAll` to discard that row of data.

#### Supplying argument names

You can optionally specify string names for the arguments passed to a property function, which will be used in any error message when describing the argument values that caused the failure. To supply the names, place them in a comma separated list in parentheses after `forAll` before the property function (a curried form of `forAll`). Here's an example:

    forAll ("a", "b") { (a: String, b: String) =>
      a.length + b.length should equal ((a + b).length + 1) // Should fail
    }

When this fails, you'll see an error message that includes this:

    Occurred when passed generated values (
      a = "",
      b = ""
    )

When you don't supply argument names, the error message will say `arg0`, `arg1`, etc.. For example, this property check:

    forAll { (a: String, b: String) =>
      a.length + b.length should equal ((a + b).length + 1) // Should fail
    }

Will fail with an error message that includes:

    Occurred when passed generated values (
      arg0 = "",
      arg1 = ""
    )

#### Supplying generators

ScalaCheck provides a nice library of compositors that makes it easy to create your own custom generators. If you want to supply custom generators to a property check, place them in parentheses after `forAll`, before the property check function (a curried form of `forAll`).

For example, to create a generator of even integers between (and including) -2000 and 2000, you could write this:

    import org.scalacheck.Genval evenInts = for (n <- Gen.choose(-1000, 1000)) yield 2 * n

Given this generator, you could use it on a property check like this:

    forAll (evenInts) { (n) => n % 2 should equal (0) }

Custom generators are necessary when you want to pass data types not supported by ScalaCheck's arbitrary generators, but are also useful when some of the values in the full range for the passed types are not valid. For such values you would use a `whenever` clause. In the `Fraction` class shown above, neither the passed numerator or denominator can be `Integer.MIN_VALUE`, and the passed denominator cannot be zero. This shows up in the`whenever` clause like this:

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

You could in addition define generators for the numerator and denominator that only produce valid values, like this:

    val validNumers =
      for (n <- Gen.choose(Integer.MIN_VALUE + 1, Integer.MAX_VALUE)) yield n
    val validDenoms =
      for (d <- validNumers if d != 0) yield d

You could then use them in the property check like this:

    forAll (validNumers, validDenoms) { (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
      }
    }

Note that even if you are use generators that don't produce the invalid values, you still need the`whenever` clause. The reason is that once a property fails, ScalaCheck will try and shrink the values to the smallest values that still cause the property to fail. During this shrinking process ScalaCheck may pass invalid values. The `whenever` clause is still needed to guard against those values. (The`whenever` clause also clarifies to readers of the code exactly what the property is in a succinct way, without requiring that they find and understand the generator definitions.)

#### Supplying both generators and argument names

If you want to supply both generators and named arguments, you can do so by providing a list of `(<generator>, <name>)` pairs in parentheses after `forAll`, before the property function. Here's an example:

    forAll ((validNumers, "n"), (validDenoms, "d")) { (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
      }
    }

Were this property check to fail, it would mention the names n and d in the error message, like this:

    Occurred when passed generated values (
      n = 17,
      d = 21
    )

#### Property check configuration

The property checks performed by the `forAll` methods of this trait can be flexibly configured via the services provided by supertrait `Configuration`. The five configuration parameters for property checks along with their default values and meanings are described in the following table:

Configuration Parameter | Default Value | Meaning
--- | --- | ---
minSuccessful | 100 | the minimum number of successful property evaluations required for the property to pass
maxDiscarded | 500 | the maximum number of discarded property evaluations allowed during a property check
minSize | 0 | the minimum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists)
maxSize | 100 | the maximum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists)
workers | 1 | specifies the number of worker threads to use during property evaluation

The `forAll` methods of trait `GeneratorDrivenPropertyChecks` each take a `PropertyCheckConfig`object as an implicit parameter. This object provides values for each of the five configuration parameters. Trait `Configuration`provides an implicit `val` named `generatorDrivenConfig` with each configuration parameter set to its default value. If you want to set one or more configuration parameters to a different value for all property checks in a suite you can override this val (or hide it, for example, if you are importing the members of the `GeneratorDrivenPropertyChecks` companion object rather than mixing in the trait.) For example, if you want all parameters at their defaults except for `minSize` and `maxSize`, you can override`generatorDrivenConfig`, like this:

    implicit override val generatorDrivenConfig =
      PropertyCheckConfig(minSize = 10, maxSize = 20)

Or, if hide it by declaring a variable of the same name in whatever scope you want the changed values to be in effect:

    implicit val generatorDrivenConfig =
      PropertyCheckConfig(minSize = 10, maxSize = 20)

In addition to taking a `PropertyCheckConfig` object as an implicit parameter, the `forAll` methods of trait`GeneratorDrivenPropertyChecks` also take a variable length argument list of `PropertyCheckConfigParam`objects that you can use to override the values provided by the implicit `PropertyCheckConfig` for a single `forAll`invocation. For example, if you want to set `minSuccessful` to 500 for just one particular `forAll` invocation, you can do so like this:

    forAll (minSuccessful(500)) { (n: Int, d: Int) => ...

This invocation of `forAll` will use 500 for `minSuccessful` and whatever values are specified by the implicitly passed `PropertyCheckConfig` object for the other configuration parameters. If you want to set multiple configuration parameters in this way, just list them separated by commas:

    forAll (minSuccessful(500), maxDiscarded(300)) { (n: Int, d: Int) => ...

If you are using an overloaded form of `forAll` that already takes an initial parameter list, just add the configuration parameters after the list of generators, names, or generator/name pairs, as in:

    // If providing argument names
    forAll ("n", "d", minSuccessful(500), maxDiscarded(300)) {
      (n: Int, d: Int) => ...// If providing generators
    forAll (validNumers, validDenoms, minSuccessful(500), maxDiscarded(300)) {
      (n: Int, d: Int) => ...// If providing (&lt;generators&gt;, &lt;name&gt;) pairs
    forAll ((validNumers, "n"), (validDenoms, "d"), minSuccessful(500), maxDiscarded(300)) {
      (n: Int, d: Int) => ...

For more information, see the documentation for supertrait `Configuration`.

go to: companion
linear super types: Configuration, Whenever, AnyRef, Any
known subclasses: PropertyChecks, PropertyChecks, GeneratorDrivenPropertyChecks
Ordering

1. Alphabetic
2. By inheritance

Inherited

1. Hide All
2. Show all

1. GeneratorDrivenPropertyChecks
2. Configuration
3. Whenever
4. AnyRef
5. Any

Visibility

1. Public
2. All

Impl.

1. Concrete
2. Abstract

### Type Members

1. #### class ConfiguredPropertyCheck extends AnyRef

   Performs a configured property checks by applying property check functions passed to its `apply` methods to arguments supplied by implicitly passed generators, modifying the values in the`PropertyGenConfig` object passed implicitly to its `apply` methods with parameter values passed to its constructor.

2. #### case class MaxDiscarded (value: Int) extends PropertyCheckConfigParam with Product

   A `PropertyCheckConfigParam` that specifies the maximum number of discarded property evaluations allowed during property evaluation.

3. #### case class MaxSize (value: Int) extends PropertyCheckConfigParam with Product

   A `PropertyCheckConfigParam` that specifies the maximum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists).

4. #### case class MinSize (value: Int) extends PropertyCheckConfigParam with Product

   A `PropertyCheckConfigParam` that specifies the minimum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists).

5. #### case class MinSuccessful (value: Int) extends PropertyCheckConfigParam with Product

   A `PropertyCheckConfigParam` that specifies the minimum number of successful property evaluations required for the property to pass.

6. #### case class PropertyCheckConfig (minSuccessful: Int, maxDiscarded: Int, minSize: Int, maxSize: Int, workers: Int) extends Product

   Configuration object for property checks.

7. #### class PropertyCheckConfigParam extends AnyRef

   Abstract class defining a family of configuration parameters for property checks.

8. #### case class Workers (value: Int) extends PropertyCheckConfigParam with Product

   A `PropertyCheckConfigParam` that specifies the number of worker threads to use when evaluating a property.

### Value Members

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

   attributes: final
   definition classes: AnyRef

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

   `o != arg0` is the same as `!(o == (arg0))`.

   `o != arg0` is the same as `!(o == (arg0))`.

   arg0

     the object to compare against this object for dis-equality.

   returns

     `false` if the receiver object is equivalent to the argument; `true` otherwise.

   attributes: final
   definition classes: Any

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

   attributes: final
   definition classes: AnyRef → Any

4. #### def $asInstanceOf [T0] () : T0

   attributes: final
   definition classes: AnyRef

5. #### def $isInstanceOf [T0] () : Boolean

   attributes: final
   definition classes: AnyRef

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

   `o == arg0` is the same as `if (o eq null) arg0 eq null else o.equals(arg0)`.

   `o == arg0` is the same as `if (o eq null) arg0 eq null else o.equals(arg0)`.

   arg0

     the object to compare against this object for equality.

   returns

     `true` if the receiver object is equivalent to the argument; `false` otherwise.

   attributes: final
   definition classes: AnyRef

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

   `o == arg0` is the same as `o.equals(arg0)`.

   `o == arg0` is the same as `o.equals(arg0)`.

   arg0

     the object to compare against this object for equality.

   returns

     `true` if the receiver object is equivalent to the argument; `false` otherwise.

   attributes: final
   definition classes: Any

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

   This method is used to cast the receiver object to be of type `T0`.

   This method is used to cast the receiver object to be of type `T0`.

   Note that the success of a cast at runtime is modulo Scala's erasure semantics. Therefore the expression`1.asInstanceOf[String]` will throw a `ClassCastException` at runtime, while the expression`List(1).asInstanceOf[List[String]]` will not. In the latter example, because the type argument is erased as part of compilation it is not possible to check whether the contents of the list are of the requested typed.

   returns

     the receiver object.

   attributes: final
   definition classes: Any

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

   This method creates and returns a copy of the receiver object.

   This method creates and returns a copy of the receiver object.

   The default implementation of the `clone` method is platform dependent.

   returns

     a copy of the receiver object.

   attributes: protected
   definition classes: AnyRef

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

    This method is used to test whether the argument (`arg0`) is a reference to the receiver object (`this`).

    This method is used to test whether the argument (`arg0`) is a reference to the receiver object (`this`).

    The `eq` method implements an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence relation] on non-null instances of `AnyRef`: * It is reflexive: for any non-null instance `x` of type `AnyRef`, `x.eq(x)` returns `true`. * It is symmetric: for any non-null instances `x` and `y` of type `AnyRef`, `x.eq(y)` returns `true` if and only if `y.eq(x)` returns `true`. * It is transitive: for any non-null instances `x`, `y`, and `z` of type `AnyRef` if `x.eq(y)` returns `true` and `y.eq(z)` returns `true`, then `x.eq(z)` returns `true`.

    Additionally, the `eq` method has three other properties. * It is consistent: for any non-null instances `x` and `y` of type `AnyRef`, multiple invocations of `x.eq(y)` consistently returns `true` or consistently returns `false`. * For any non-null instance `x` of type `AnyRef`, `x.eq(null)` and `null.eq(x)` returns `false`. * `null.eq(null)` returns `true`.

    When overriding the `equals` or `hashCode` methods, it is important to ensure that their behavior is consistent with reference equality. Therefore, if two objects are references to each other (`o1 eq o2`), they should be equal to each other (`o1 == o2`) and they should hash to the same value (`o1.hashCode == o2.hashCode`).

    arg0

      the object to compare against this object for reference equality.

    returns

      `true` if the argument is a reference to the receiver object; `false` otherwise.

    attributes: final
    definition classes: AnyRef

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

    This method is used to compare the receiver object (`this`) with the argument object (`arg0`) for equivalence.

    This method is used to compare the receiver object (`this`) with the argument object (`arg0`) for equivalence.

    The default implementations of this method is an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence relation]: * It is reflexive: for any instance `x` of type `Any`, `x.equals(x)` should return `true`. * It is symmetric: for any instances `x` and `y` of type `Any`, `x.equals(y)` should return `true` if and only if `y.equals(x)` returns `true`. * It is transitive: for any instances `x`, `y`, and `z` of type `AnyRef` if `x.equals(y)` returns `true` and `y.equals(z)` returns `true`, then `x.equals(z)` should return `true`.

    If you override this method, you should verify that your implementation remains an equivalence relation. Additionally, when overriding this method it is often necessary to override `hashCode` to ensure that objects that are "equal" (`o1.equals(o2)` returns `true`) hash to the same scala.Int (`o1.hashCode.equals(o2.hashCode)`).

    arg0

      the object to compare against this object for equality.

    returns

      `true` if the receiver object is equivalent to the argument; `false` otherwise.

    definition classes: AnyRef → Any

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

    This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object.

    This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object.

    The details of when and if the `finalize` method are invoked, as well as the interaction between `finalize`and non-local returns and exceptions, are all platform dependent.

    attributes: protected
    definition classes: AnyRef

13. #### def forAll [A, B, C, D, E, F] (genAndNameA: (Gen[A], String), genAndNameB: (Gen[B], String), genAndNameC: (Gen[C], String), genAndNameD: (Gen[D], String), genAndNameE: (Gen[E], String), genAndNameF: (Gen[F], String), configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D, E, F) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], shrE: Shrink[E], shrF: Shrink[F]) : Unit

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll ((famousLastWords, "a"), (famousLastWords, "b"), (famousLastWords, "c"), (famousLastWords, "d"), (famousLastWords, "e"), (famousLastWords, "f")) { (a: String, b: String, c: String, d: String, e: String, f: String) =>
          a.length + b.length + c.length + d.length + e.length + f.length should equal ((a + b + c + d + e + f).length)
        }

    fun

      the property check function to apply to the generated arguments

14. #### def forAll [A, B, C, D, E, F] (genA: Gen[A], genB: Gen[B], genC: Gen[C], genD: Gen[D], genE: Gen[E], genF: Gen[F], configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D, E, F) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], shrE: Shrink[E], shrF: Shrink[F]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll (famousLastWords, famousLastWords, famousLastWords, famousLastWords, famousLastWords, famousLastWords) { (a: String, b: String, c: String, d: String, e: String, f: String) =>
          a.length + b.length + c.length + d.length + e.length + f.length should equal ((a + b + c + d + e + f).length)
        }

    fun

      the property check function to apply to the generated arguments

15. #### def forAll [A, B, C, D, E, F] (nameA: String, nameB: String, nameC: String, nameD: String, nameE: String, nameF: String, configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D, E, F) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], arbD: Arbitrary[D], shrD: Shrink[D], arbE: Arbitrary[E], shrE: Shrink[E], arbF: Arbitrary[F], shrF: Shrink[F]) : Unit

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll ("a", "b", "c", "d", "e", "f") { (a: String, b: String, c: String, d: String, e: String, f: String) =>
          a.length + b.length + c.length + d.length + e.length + f.length should equal ((a + b + c + d + e + f).length)
        }

    fun

      the property check function to apply to the generated arguments

16. #### def forAll [A, B, C, D, E, F] (fun: (A, B, C, D, E, F) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], arbD: Arbitrary[D], shrD: Shrink[D], arbE: Arbitrary[E], shrE: Shrink[E], arbF: Arbitrary[F], shrF: Shrink[F]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll { (a: String, b: String, c: String, d: String, e: String, f: String) =>
          a.length + b.length + c.length + d.length + e.length + f.length should equal ((a + b + c + d + e + f).length)
        }

    fun

      the property check function to apply to the generated arguments

17. #### def forAll [A, B, C, D, E] (genAndNameA: (Gen[A], String), genAndNameB: (Gen[B], String), genAndNameC: (Gen[C], String), genAndNameD: (Gen[D], String), genAndNameE: (Gen[E], String), configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D, E) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], shrE: Shrink[E]) : Unit

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll ((famousLastWords, "a"), (famousLastWords, "b"), (famousLastWords, "c"), (famousLastWords, "d"), (famousLastWords, "e")) { (a: String, b: String, c: String, d: String, e: String) =>
          a.length + b.length + c.length + d.length + e.length should equal ((a + b + c + d + e).length)
        }

    fun

      the property check function to apply to the generated arguments

18. #### def forAll [A, B, C, D, E] (genA: Gen[A], genB: Gen[B], genC: Gen[C], genD: Gen[D], genE: Gen[E], configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D, E) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], shrE: Shrink[E]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll (famousLastWords, famousLastWords, famousLastWords, famousLastWords, famousLastWords) { (a: String, b: String, c: String, d: String, e: String) =>
          a.length + b.length + c.length + d.length + e.length should equal ((a + b + c + d + e).length)
        }

    fun

      the property check function to apply to the generated arguments

19. #### def forAll [A, B, C, D, E] (nameA: String, nameB: String, nameC: String, nameD: String, nameE: String, configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D, E) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], arbD: Arbitrary[D], shrD: Shrink[D], arbE: Arbitrary[E], shrE: Shrink[E]) : Unit

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll ("a", "b", "c", "d", "e") { (a: String, b: String, c: String, d: String, e: String) =>
          a.length + b.length + c.length + d.length + e.length should equal ((a + b + c + d + e).length)
        }

    fun

      the property check function to apply to the generated arguments

20. #### def forAll [A, B, C, D, E] (fun: (A, B, C, D, E) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], arbD: Arbitrary[D], shrD: Shrink[D], arbE: Arbitrary[E], shrE: Shrink[E]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll { (a: String, b: String, c: String, d: String, e: String) =>
          a.length + b.length + c.length + d.length + e.length should equal ((a + b + c + d + e).length)
        }

    fun

      the property check function to apply to the generated arguments

21. #### def forAll [A, B, C, D] (genAndNameA: (Gen[A], String), genAndNameB: (Gen[B], String), genAndNameC: (Gen[C], String), genAndNameD: (Gen[D], String), configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D]) : Unit

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll ((famousLastWords, "a"), (famousLastWords, "b"), (famousLastWords, "c"), (famousLastWords, "d")) { (a: String, b: String, c: String, d: String) =>
          a.length + b.length + c.length + d.length should equal ((a + b + c + d).length)
        }

    fun

      the property check function to apply to the generated arguments

22. #### def forAll [A, B, C, D] (genA: Gen[A], genB: Gen[B], genC: Gen[C], genD: Gen[D], configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll (famousLastWords, famousLastWords, famousLastWords, famousLastWords) { (a: String, b: String, c: String, d: String) =>
          a.length + b.length + c.length + d.length should equal ((a + b + c + d).length)
        }

    fun

      the property check function to apply to the generated arguments

23. #### def forAll [A, B, C, D] (nameA: String, nameB: String, nameC: String, nameD: String, configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], arbD: Arbitrary[D], shrD: Shrink[D]) : Unit

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll ("a", "b", "c", "d") { (a: String, b: String, c: String, d: String) =>
          a.length + b.length + c.length + d.length should equal ((a + b + c + d).length)
        }

    fun

      the property check function to apply to the generated arguments

24. #### def forAll [A, B, C, D] (fun: (A, B, C, D) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], arbD: Arbitrary[D], shrD: Shrink[D]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll { (a: String, b: String, c: String, d: String) =>
          a.length + b.length + c.length + d.length should equal ((a + b + c + d).length)
        }

    fun

      the property check function to apply to the generated arguments

25. #### def forAll [A, B, C] (genAndNameA: (Gen[A], String), genAndNameB: (Gen[B], String), genAndNameC: (Gen[C], String), configParams: PropertyCheckConfigParam*)(fun: (A, B, C) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C]) : Unit

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll ((famousLastWords, "a"), (famousLastWords, "b"), (famousLastWords, "c")) { (a: String, b: String, c: String) =>
          a.length + b.length + c.length should equal ((a + b + c).length)
        }

    fun

      the property check function to apply to the generated arguments

26. #### def forAll [A, B, C] (genA: Gen[A], genB: Gen[B], genC: Gen[C], configParams: PropertyCheckConfigParam*)(fun: (A, B, C) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll (famousLastWords, famousLastWords, famousLastWords) { (a: String, b: String, c: String) =>
          a.length + b.length + c.length should equal ((a + b + c).length)
        }

    fun

      the property check function to apply to the generated arguments

27. #### def forAll [A, B, C] (nameA: String, nameB: String, nameC: String, configParams: PropertyCheckConfigParam*)(fun: (A, B, C) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C]) : Unit

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll ("a", "b", "c") { (a: String, b: String, c: String) =>
          a.length + b.length + c.length should equal ((a + b + c).length)
        }

    fun

      the property check function to apply to the generated arguments

28. #### def forAll [A, B, C] (fun: (A, B, C) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll { (a: String, b: String, c: String) =>
          a.length + b.length + c.length should equal ((a + b + c).length)
        }

    fun

      the property check function to apply to the generated arguments

29. #### def forAll [A, B] (genAndNameA: (Gen[A], String), genAndNameB: (Gen[B], String), configParams: PropertyCheckConfigParam*)(fun: (A, B) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B]) : Unit

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll ((famousLastWords, "a"), (famousLastWords, "b")) { (a: String, b: String) =>
          a.length + b.length should equal ((a + b).length)
        }

    fun

      the property check function to apply to the generated arguments

30. #### def forAll [A, B] (genA: Gen[A], genB: Gen[B], configParams: PropertyCheckConfigParam*)(fun: (A, B) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A], shrB: Shrink[B]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll (famousLastWords, famousLastWords) { (a: String, b: String) =>
          a.length + b.length should equal ((a + b).length)
        }

    fun

      the property check function to apply to the generated arguments

31. #### def forAll [A, B] (nameA: String, nameB: String, configParams: PropertyCheckConfigParam*)(fun: (A, B) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B]) : Unit

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll ("a", "b") { (a: String, b: String) =>
          a.length + b.length should equal ((a + b).length)
        }

    fun

      the property check function to apply to the generated arguments

32. #### def forAll [A, B] (fun: (A, B) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll { (a: String, b: String) =>
          a.length + b.length should equal ((a + b).length)
        }

    fun

      the property check function to apply to the generated arguments

33. #### def forAll [A] (genAndNameA: (Gen[A], String), configParams: PropertyCheckConfigParam*)(fun: (A) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A]) : Unit

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to named arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll ((famousLastWords, "a")) { (a: String) =>
          a.length should equal ((a).length)
        }

    fun

      the property check function to apply to the generated arguments

34. #### def forAll [A] (genA: Gen[A], configParams: PropertyCheckConfigParam*)(fun: (A) ⇒ Unit)(implicit config: PropertyCheckConfig, shrA: Shrink[A]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Performs a property check by applying the specified property check function to arguments supplied by the specified generators.

    Here's an example:

        import org.scalacheck.Gen// Define your own string generator:
        val famousLastWords = for {
          s <- Gen.oneOf("the", "program", "compiles", "therefore", "it", "should", "work")
        } yield sforAll (famousLastWords) { (a: String) =>
          a.length should equal ((a).length)
        }

    fun

      the property check function to apply to the generated arguments

35. #### def forAll [A] (nameA: String, configParams: PropertyCheckConfigParam*)(fun: (A) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A]) : Unit

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function with the specified argument names to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll ("a") { (a: String) =>
          a.length should equal ((a).length)
        }

    fun

      the property check function to apply to the generated arguments

36. #### def forAll [A] (fun: (A) ⇒ Unit)(implicit config: PropertyCheckConfig, arbA: Arbitrary[A], shrA: Shrink[A]) : Unit

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators.

    Here's an example:

        forAll { (a: String) =>
          a.length should equal ((a).length)
        }

    fun

      the property check function to apply to the generated arguments

37. #### def forAll (configParams: PropertyCheckConfigParam*) : ConfiguredPropertyCheck

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators, modifying the values in the implicitly passed`PropertyGenConfig` object with explicitly passed parameter values.

    Performs a property check by applying the specified property check function to arguments supplied by implicitly passed generators, modifying the values in the implicitly passed`PropertyGenConfig` object with explicitly passed parameter values.

    This method creates a `ConfiguredPropertyCheck` object that has six overloaded apply methods that take a function. Thus it is used with functions of all six arities. Here are some examples:

        forAll (minSize(1), maxSize(10)) { (a: String) =>
          a.length should equal ((a).length)
        }forAll (minSize(1), maxSize(10)) { (a: String, b: String) =>
          a.length + b.length should equal ((a + b).length)
        }forAll (minSize(1), maxSize(10)) { (a: String, b: String, c: String) =>
          a.length + b.length + c.length should equal ((a + b + c).length)
        }forAll (minSize(1), maxSize(10)) { (a: String, b: String, c: String, d: String) =>
          a.length + b.length + c.length + d.length should equal ((a + b + c + d).length)
        }forAll (minSize(1), maxSize(10)) { (a: String, b: String, c: String, d: String, e: String) =>
          a.length + b.length + c.length + d.length + e.length should equal ((a + b + c + d + e).length)
        }forAll (minSize(1), maxSize(10)) { (a: String, b: String, c: String, d: String, e: String, f: String) =>
          a.length + b.length + c.length + d.length + e.length + f.length should equal ((a + b + c + d + e + f).length)
        }

    configParams

      a variable length list of `PropertyCheckConfigParam` objects that should override corresponding values in the `PropertyCheckConfig` implicitly passed to the `apply` methods of the `ConfiguredPropertyCheck` object returned by this method.

38. #### implicit val generatorDrivenConfig : PropertyCheckConfig

    Implicit `PropertyCheckConfig` value providing default configuration values.

    Implicit `PropertyCheckConfig` value providing default configuration values.

    attributes: implicit
    definition classes: Configuration

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

    Returns a representation that corresponds to the dynamic class of the receiver object.

    Returns a representation that corresponds to the dynamic class of the receiver object.

    The nature of the representation is platform dependent.

    returns

      a representation that corresponds to the dynamic class of the receiver object.

    attributes: final
    definition classes: AnyRef

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

    Returns a hash code value for the object.

    Returns a hash code value for the object.

    The default hashing algorithm is platform dependent.

    Note that it is allowed for two objects to have identical hash codes (`o1.hashCode.equals(o2.hashCode)`) yet not be equal (`o1.equals(o2)` returns `false`). A degenerate implementation could always return `0`. However, it is required that if two objects are equal (`o1.equals(o2)` returns `true`) that they have identical hash codes (`o1.hashCode.equals(o2.hashCode)`). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the `equals` method.

    returns

      the hash code value for the object.

    definition classes: AnyRef → Any

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

    This method is used to test whether the dynamic type of the receiver object is `T0`.

    This method is used to test whether the dynamic type of the receiver object is `T0`.

    Note that the test result of the test is modulo Scala's erasure semantics. Therefore the expression`1.isInstanceOf[String]` will return `false`, while the expression `List(1).isInstanceOf[List[String]]` will return `true`. In the latter example, because the type argument is erased as part of compilation it is not possible to check whether the contents of the list are of the requested typed.

    returns

      `true` if the receiver object is an instance of erasure of type `T0`; `false` otherwise.

    attributes: final
    definition classes: Any

42. #### def maxDiscarded (value: Int) : MaxDiscarded

    Returns a `MaxDiscarded` property check configuration parameter containing the passed value, which specifies the maximum number of discarded property evaluations allowed during property evaluation.

    Returns a `MaxDiscarded` property check configuration parameter containing the passed value, which specifies the maximum number of discarded property evaluations allowed during property evaluation.

    definition classes: Configuration

43. #### def maxSize (value: Int) : MaxSize

    Returns a `MaxSize` property check configuration parameter containing the passed value, which specifies the maximum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists).

    Returns a `MaxSize` property check configuration parameter containing the passed value, which specifies the maximum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists).

    Note that the maximum size should be greater than or equal to the minimum size. This requirement is enforced by the `PropertyCheckConfig` constructor and the `forAll` methods of traits `PropertyChecks` and `Checkers`. In other words, it is enforced at the point both a maximum and minimum size are provided together.

    definition classes: Configuration

44. #### def minSize (value: Int) : MinSize

    Returns a `MinSize` property check configuration parameter containing the passed value, which specifies the minimum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists).

    Returns a `MinSize` property check configuration parameter containing the passed value, which specifies the minimum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists).

    definition classes: Configuration

45. #### def minSuccessful (value: Int) : MinSuccessful

    Returns a `MinSuccessful` property check configuration parameter containing the passed value, which specifies the minimum number of successful property evaluations required for the property to pass.

    Returns a `MinSuccessful` property check configuration parameter containing the passed value, which specifies the minimum number of successful property evaluations required for the property to pass.

    definition classes: Configuration

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

    `o.ne(arg0)` is the same as `!(o.eq(arg0))`.

    `o.ne(arg0)` is the same as `!(o.eq(arg0))`.

    arg0

      the object to compare against this object for reference dis-equality.

    returns

      `false` if the argument is not a reference to the receiver object; `true` otherwise.

    attributes: final
    definition classes: AnyRef

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

    Wakes up a single thread that is waiting on the receiver object's monitor.

    Wakes up a single thread that is waiting on the receiver object's monitor.

    attributes: final
    definition classes: AnyRef

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

    Wakes up all threads that are waiting on the receiver object's monitor.

    Wakes up all threads that are waiting on the receiver object's monitor.

    attributes: final
    definition classes: AnyRef

49. #### def synchronized [T0] (arg0: T0) : T0

    attributes: final
    definition classes: AnyRef

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

    Returns a string representation of the object.

    Returns a string representation of the object.

    The default representation is platform dependent.

    returns

      a string representation of the object.

    definition classes: AnyRef → Any

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

    attributes: final
    definition classes: AnyRef

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

    attributes: final
    definition classes: AnyRef

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

    attributes: final
    definition classes: AnyRef

54. #### 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

    definition classes: Whenever

55. #### def workers (value: Int) : Workers

    Returns a `Workers` property check configuration parameter containing the passed value, which specifies the number of worker threads to use when evaluating a property.

    Returns a `Workers` property check configuration parameter containing the passed value, which specifies the number of worker threads to use when evaluating a property.

    definition classes: Configuration

### Inherited from Configuration

### Inherited from Whenever

### Inherited from AnyRef

### Inherited from Any