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)
}
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.
if specified value is less than zero.
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.
if specified value is less than zero.
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).
if specified value is less than zero.
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.
if specified value is less than or equal to zero.
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 |
the minimum number of successful property evaluations required for the property to pass.
the maximum number of discarded property evaluations allowed during a property check
the minimum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists).
the maximum size parameter to provide to ScalaCheck, which it will use when generating objects for which size matters (such as strings or lists).
specifies the number of worker threads to use during property evaluation
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.
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).
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.
if specified value is less than or equal to zero.
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
the property check function to apply to the generated arguments
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)
}
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.
Implicit PropertyCheckConfig value providing default configuration values.
Implicit PropertyCheckConfig value providing default configuration values.
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.
if specified value is less than zero.
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.
if specified value is less than zero.
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).
if specified value is less than zero.
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.
if specified value is less than or equal to zero.
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.
the boolean condition that determines whether whenever will evaluate the
fun function (condition is true) or throws DiscardedEvaluationException (condition is false)
the function to evaluate if the specified condition is true
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.
if specified value is less than or equal to zero.