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.Gen

val 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 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, 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 (<generators>, <name>) pairs forAll ((validNumers, "n"), (validDenoms, "d"), minSuccessful(500), maxDiscarded(300)) { (n: Int, d: Int) => ...
For more information, see the documentation for supertrait Configuration.

Source
GeneratorDrivenPropertyChecks.scala
Linear Supertypes
Configuration, Whenever, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. GeneratorDrivenPropertyChecks
  2. Configuration
  3. Whenever
  4. AnyRef
  5. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

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.

    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.

    Instances of this class are returned by trait GeneratorDrivenPropertyChecks forAll method that accepts a variable length argument list of PropertyCheckConfigParam objects. 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) }
    In the first example above, the ConfiguredPropertyCheck object is returned by:
    forAll (minSize(1), maxSize(10))
    
    The code that follows is an invocation of one of the ConfiguredPropertyCheck apply methods:
    { (a: String) =>
      a.length should equal ((a).length)
    }
    

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

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

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

    In GeneratorDrivenPropertyChecks, a property evaluation is discarded if it throws DiscardedEvaluationException, which is produce by whenever clause that evaluates to false. For example, consider this ScalaTest property check:

    // forAll defined in GeneratorDrivenPropertyChecks
    forAll { (n: Int) =>
      whenever (n > 0) {
        doubleIt(n) should equal (n * 2)
      }
    }
    
    In the above code, whenever a non-positive n is passed, the property function will complete abruptly with DiscardedEvaluationException. Similarly, in Checkers, a property evaluation is discarded if the expression to the left of ScalaCheck's ==> operator is false. Here's an example:
    // forAll defined in Checkers
    forAll { (n: Int) =>
      (n > 0) ==> doubleIt(n) == (n * 2)
    }
    
    For either kind of property check, MaxDiscarded indicates the maximum number of discarded evaluations that will be allowed. As soon as one past this number of evaluations indicates it needs to be discarded, the property check will fail.

    Definition Classes
    Configuration
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than zero.

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

    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).

    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).

    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
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than zero.

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

    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).

    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).

    Definition Classes
    Configuration
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than zero.

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

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

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

    Definition Classes
    Configuration
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than or equal to zero.

  6. case class PropertyCheckConfig(minSuccessful: Int = 100, maxDiscarded: Int = 500, minSize: Int = 0, maxSize: Int = 100, workers: Int = 1) extends Product with Serializable

    Configuration object for property checks.

    Configuration object for property checks.

    The default values for the parameters are:

    minSuccessful 100
    maxDiscarded 500
    minSize 0
    maxSize 100
    workers 1

    minSuccessful

    the minimum number of successful property evaluations required for the property to pass.

    maxDiscarded

    the maximum number of discarded property evaluations allowed during a property check

    minSize

    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

    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

    specifies the number of worker threads to use during property evaluation

    Definition Classes
    Configuration
    Exceptions thrown
    IllegalArgumentException

    if the specified minSuccessful value is less than or equal to zero, the specified maxDiscarded value is less than zero, the specified minSize value is less than zero, the specified maxSize value is less than zero, the specified minSize is greater than the specified or default value of maxSize, or the specified workers value is less than or equal to zero.

  7. sealed abstract class PropertyCheckConfigParam extends AnyRef

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

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

    The subclasses of this abstract class are used to pass configuration information to the forAll methods of traits PropertyChecks (for ScalaTest-style property checks) and Checkers(for ScalaCheck-style property checks).

    Definition Classes
    Configuration
  8. case class Workers(value: Int) extends PropertyCheckConfigParam with Product with Serializable

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

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

    Definition Classes
    Configuration
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than or equal to zero.

Value Members

  1. final def !=(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  5. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. 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 s
    forAll ((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

  10. 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 s
    forAll (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

  11. 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

  12. 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

  13. 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 s
    forAll ((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

  14. 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 s
    forAll (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

  15. 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

  16. 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

  17. 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 s
    forAll ((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

  18. 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 s
    forAll (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

  19. 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

  20. 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

  21. 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 s
    forAll ((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

  22. 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 s
    forAll (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

  23. 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

  24. 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

  25. 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 s
    forAll ((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

  26. 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 s
    forAll (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

  27. 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

  28. 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

  29. 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 s
    forAll ((famousLastWords, "a")) { (a: String) => a.length should equal ((a).length) }

    fun

    the property check function to apply to the generated arguments

  30. 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 s
    forAll (famousLastWords) { (a: String) => a.length should equal ((a).length) }

    fun

    the property check function to apply to the generated arguments

  31. 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

  32. 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

  33. 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.

  34. implicit val generatorDrivenConfig: PropertyCheckConfig

    Implicit PropertyCheckConfig value providing default configuration values.

    Implicit PropertyCheckConfig value providing default configuration values.

    Definition Classes
    Configuration
  35. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  36. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  37. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  38. 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
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than zero.

  39. 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
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than zero.

  40. 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
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than zero.

  41. 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
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than or equal to zero.

  42. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  43. final def notify(): Unit

    Definition Classes
    AnyRef
  44. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  45. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  46. def toString(): String

    Definition Classes
    AnyRef → Any
  47. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  48. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  49. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  50. 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
  51. 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
    Exceptions thrown
    IllegalArgumentException

    if specified value is less than or equal to zero.

Inherited from Configuration

Inherited from Whenever

Inherited from AnyRef

Inherited from Any

Ungrouped