ScalaCheck 1.11.0 Release Notes

ScalaCheck is a powerful tool for property-based testing of Scala and Java
programs. It features automatic test case generation and simplification of
failing test cases. ScalaCheck started out as a straightforward Scala port of
the Haskell library QuickCheck, and has since wandered off on its own. Most
features of QuickCheck can be found in ScalaCheck and vice versa, though.

ScalaCheck highlights:

  * Specifications are written in Scala, in a DSL-like fashion using
    combinators from the ScalaCheck library.

  * Properties are tested automatically, with test data generated by
    ScalaCheck. Data generation can be precisely controlled, and generation
    of custom data types is simple to define.

  * Failing test cases are simplified automatically, which makes pin-pointing
    error causes easier.

  * Support for stateful testing of command sequences, and simplification of
    failing command sequences.

  * The ScalaCheck library has no dependencies other than the Scala
    runtime.

  * ScalaCheck is well integrated with ScalaTest, sbt and Specs.

What's new in version 1.11.0?

The biggest change in this release of ScalaCheck is the generator
implementation that has been rewritten more or less from scratch. The new
implementation is smarter when it comes to test case simplification.
Previously, the test case simplification process had no knowledge about the
generator that produced the original value. This would lead to some confusion
since ScalaCheck could present a failing test case that couldn't have been
produced directly by the generator used. The new implementation lets the
shrinker take the generator boundaries into account when simplifying values. In
most cases this works transparantely without any assistance needed from the
user, but sometimes explicit boundaries must be assigned to the generator. This
is done with the standard Gen.suchThat method.

Apart from the new generator implementation, several new methods and
combinators have been added in several parts of the API. Some methods have been
renamed and some classes have been moved around to make the API more clear.

ScalaCheck 1.11.0 introduces API changes, but most users should hopefully only
need to change their code if they're using code that was deprecated in the
previous ScalaCheck release. However, recompilation is needed since ScalaCheck
1.11.0 is not binary compatible with previous versions.

Support for Scala versions prior 2.9.3 has been dropped.

A new ScalaCheck web site has been launched at http://www.scalacheck.org. The
new site collects ScalaCheck documentation and downloads in an accessible way.

ScalaCheck links:

  * Official documentation, downloads etc: http://www.scalacheck.org

  * Twitter: @scalacheck

  * Source repository and bug reporting: https://github.com/rickynils/scalacheck

  * SBT dependency

    resolvers ++= Seq(
      "snapshots" at "http://oss.sonatype.org/content/repositories/snapshots",
      "releases"  at "http://oss.sonatype.org/content/repositories/releases"
    )

    libraryDependencies ++= Seq(
      "org.scalacheck" %% "scalacheck" % "1.11.0" % "test"
    )

  * Maven dependency

    Add this to your pom.xml (example for Scala 2.10.1):

    <repositories>
      <repository>
        <id>oss.sonatype.org</id>
        <name>releases</name>
        <url>http://oss.sonatype.org/content/repositories/releases</url>
      </repository>
      <repository>
        <id>oss.sonatype.org</id>
        <name>snapshots</name>
        <url>http://oss.sonatype.org/content/repositories/snapshots</url>
      </repository>
    </repositories>

    <dependency>
      <groupId>org.scalacheck</groupId>
      <artifactId>scalacheck_2.10</artifactId>
      <version>1.11.0</version>
    </dependency>
