trait ScalaCheckDrivenPropertyChecks extends Whenever with ScalaCheckConfiguration
Trait containing methods that faciliate property checks against generated data.
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 ScalaCheckDrivenPropertyChecks
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 ScalaCheckDrivenPropertyChecks
(and Matchers
) 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 ScalaCheckDrivenPropertyChecks
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 ScalaCheckDrivenPropertyCheckFailedException
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 |
maxDiscardedFactor | 500 | the maximum discarded factor 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) |
sizeRange | 100 | the size range 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 ScalaCheckDrivenPropertyChecks
each take a PropertyCheckConfiguration
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 ScalaCheckDrivenPropertyChecks
companion object rather
than mixing in the trait.) For example, if
you want all parameters at their defaults except for minSize
and sizeRange
, you can override
generatorDrivenConfig
, like this:
implicit override val generatorDrivenConfig = PropertyCheckConfiguration(minSize = 10, sizeRange = 10)
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 = PropertyCheckConfiguration(minSize = 10, sizeRange = 10)
In addition to taking a PropertyCheckConfiguration
object as an implicit parameter, the forAll
methods of trait
ScalaCheckDrivenPropertyChecks
also take a variable length argument list of PropertyCheckConfigParam
objects that you can use to override the values provided by the implicit PropertyCheckConfiguration
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 PropertyCheckConfiguration
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), maxDiscardedFactor(0.6)) { (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), maxDiscardedFactor(0.6)) { (n: Int, d: Int) => ... // If providing generators forAll (validNumers, validDenoms, minSuccessful(500), maxDiscardedFactor(0.6)) { (n: Int, d: Int) => ... // If providing (<generators>, <name>) pairs forAll ((validNumers, "n"), (validDenoms, "d"), minSuccessful(500), maxDiscardedFactor(0.6)) { (n: Int, d: Int) => ...
For more information, see the documentation for supertrait Configuration
.
- Alphabetic
- By Inheritance
- ScalaCheckDrivenPropertyChecks
- ScalaCheckConfiguration
- Configuration
- Whenever
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- 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 thePropertyGenConfig
object passed implicitly to itsapply
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 thePropertyGenConfig
object passed implicitly to itsapply
methods with parameter values passed to its constructor.Instances of this class are returned by trait
ScalaCheckDrivenPropertyChecks
forAll
method that accepts a variable length argument list ofPropertyCheckConfigParam
objects. Thus it is used with functions of all six arities. Here are some examples:forAll (minSize(1), sizeRange(9)) { (a: String) => a.length should equal ((a).length) } forAll (minSize(1), sizeRange(9)) { (a: String, b: String) => a.length + b.length should equal ((a + b).length) } forAll (minSize(1), sizeRange(9)) { (a: String, b: String, c: String) => a.length + b.length + c.length should equal ((a + b + c).length) } forAll (minSize(1), sizeRange(9)) { (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), sizeRange(9)) { (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), sizeRange(9)) { (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), sizeRange(9))
The code that follows is an invocation of one of the
ConfiguredPropertyCheck
apply
methods:{ (a: String) => a.length should equal ((a).length) }
- case class MaxDiscardedFactor extends PropertyCheckConfigParam with Product with Serializable
- Definition Classes
- Configuration
- case class MinSize extends PropertyCheckConfigParam with Product with Serializable
- Definition Classes
- Configuration
- case class MinSuccessful extends PropertyCheckConfigParam with Product with Serializable
- Definition Classes
- Configuration
- sealed abstract class PropertyCheckConfigParam extends Product with Serializable
- Definition Classes
- Configuration
- case class PropertyCheckConfiguration extends Product with Serializable
- Definition Classes
- Configuration
- case class SizeRange extends PropertyCheckConfigParam with Product with Serializable
- Definition Classes
- Configuration
- case class Workers extends PropertyCheckConfigParam with Product with Serializable
- Definition Classes
- Configuration
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def forAll[A, B, C, D, E, F, ASSERTION](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) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], shrE: Shrink[E], shrF: Shrink[F], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, E, F, ASSERTION](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) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], shrE: Shrink[E], shrF: Shrink[F], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, E, F, ASSERTION](nameA: String, nameB: String, nameC: String, nameD: String, nameE: String, nameF: String, configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D, E, F) => ASSERTION)(implicit config: PropertyCheckConfiguration, 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], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, E, F, ASSERTION](fun: (A, B, C, D, E, F) => ASSERTION)(implicit config: PropertyCheckConfiguration, 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], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, E, ASSERTION](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) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], shrE: Shrink[E], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, E, ASSERTION](genA: Gen[A], genB: Gen[B], genC: Gen[C], genD: Gen[D], genE: Gen[E], configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D, E) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], shrE: Shrink[E], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, E, ASSERTION](nameA: String, nameB: String, nameC: String, nameD: String, nameE: String, configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D, E) => ASSERTION)(implicit config: PropertyCheckConfiguration, 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], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, E, ASSERTION](fun: (A, B, C, D, E) => ASSERTION)(implicit config: PropertyCheckConfiguration, 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], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, ASSERTION](genAndNameA: (Gen[A], String), genAndNameB: (Gen[B], String), genAndNameC: (Gen[C], String), genAndNameD: (Gen[D], String), configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, ASSERTION](genA: Gen[A], genB: Gen[B], genC: Gen[C], genD: Gen[D], configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], shrD: Shrink[D], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, ASSERTION](nameA: String, nameB: String, nameC: String, nameD: String, configParams: PropertyCheckConfigParam*)(fun: (A, B, C, D) => ASSERTION)(implicit config: PropertyCheckConfiguration, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], arbD: Arbitrary[D], shrD: Shrink[D], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, D, ASSERTION](fun: (A, B, C, D) => ASSERTION)(implicit config: PropertyCheckConfiguration, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], arbD: Arbitrary[D], shrD: Shrink[D], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, ASSERTION](genAndNameA: (Gen[A], String), genAndNameB: (Gen[B], String), genAndNameC: (Gen[C], String), configParams: PropertyCheckConfigParam*)(fun: (A, B, C) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, ASSERTION](genA: Gen[A], genB: Gen[B], genC: Gen[C], configParams: PropertyCheckConfigParam*)(fun: (A, B, C) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], shrC: Shrink[C], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, ASSERTION](nameA: String, nameB: String, nameC: String, configParams: PropertyCheckConfigParam*)(fun: (A, B, C) => ASSERTION)(implicit config: PropertyCheckConfiguration, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, C, ASSERTION](fun: (A, B, C) => ASSERTION)(implicit config: PropertyCheckConfiguration, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], arbC: Arbitrary[C], shrC: Shrink[C], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, ASSERTION](genAndNameA: (Gen[A], String), genAndNameB: (Gen[B], String), configParams: PropertyCheckConfigParam*)(fun: (A, B) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, ASSERTION](genA: Gen[A], genB: Gen[B], configParams: PropertyCheckConfigParam*)(fun: (A, B) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], shrB: Shrink[B], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, ASSERTION](nameA: String, nameB: String, configParams: PropertyCheckConfigParam*)(fun: (A, B) => ASSERTION)(implicit config: PropertyCheckConfiguration, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, B, ASSERTION](fun: (A, B) => ASSERTION)(implicit config: PropertyCheckConfiguration, arbA: Arbitrary[A], shrA: Shrink[A], arbB: Arbitrary[B], shrB: Shrink[B], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, ASSERTION](genAndNameA: (Gen[A], String), configParams: PropertyCheckConfigParam*)(fun: (A) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, ASSERTION](genA: Gen[A], configParams: PropertyCheckConfigParam*)(fun: (A) => ASSERTION)(implicit config: PropertyCheckConfiguration, shrA: Shrink[A], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, ASSERTION](nameA: String, configParams: PropertyCheckConfigParam*)(fun: (A) => ASSERTION)(implicit config: PropertyCheckConfiguration, arbA: Arbitrary[A], shrA: Shrink[A], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- def forAll[A, ASSERTION](fun: (A) => ASSERTION)(implicit config: PropertyCheckConfiguration, arbA: Arbitrary[A], shrA: Shrink[A], asserting: CheckerAsserting[ASSERTION], prettifier: Prettifier, pos: Position): Result
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
- 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), sizeRange(9)) { (a: String) => a.length should equal ((a).length) } forAll (minSize(1), sizeRange(9)) { (a: String, b: String) => a.length + b.length should equal ((a + b).length) } forAll (minSize(1), sizeRange(9)) { (a: String, b: String, c: String) => a.length + b.length + c.length should equal ((a + b + c).length) } forAll (minSize(1), sizeRange(9)) { (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), sizeRange(9)) { (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), sizeRange(9)) { (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 thePropertyCheckConfiguration
implicitly passed to theapply
methods of theConfiguredPropertyCheck
object returned by this method.
- implicit val generatorDrivenConfig: PropertyCheckConfiguration
- Definition Classes
- Configuration
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def getParameter(configParams: Seq[PropertyCheckConfigParam], config: PropertyCheckConfiguration): Parameter
- Definition Classes
- Configuration
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def maxDiscardedFactor(value: PosZDouble): MaxDiscardedFactor
- Definition Classes
- Configuration
- def minSize(value: PosZInt): MinSize
- Definition Classes
- Configuration
- def minSuccessful(value: PosInt): MinSuccessful
- Definition Classes
- Configuration
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def sizeRange(value: PosZInt): SizeRange
- Definition Classes
- Configuration
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def whenever[T](condition: Boolean)(fun: => T)(implicit wa: WheneverAsserting[T]): Result
- Definition Classes
- Whenever
- def workers(value: PosInt): Workers
- Definition Classes
- Configuration