Overview

Package quick implements utility functions to help with black box testing.

The testing/quick package is frozen and is not accepting new features.

Index

Check looks for an input to f, any function that returns bool, such that f
returns false. It calls f repeatedly, with arbitrary values for each argument.
If f returns false on a given input, Check returns that input as a *CheckError.
For example:

  1. func TestOddMultipleOfThree(t *testing.T) {
  2. f := func(x int) bool {
  3. return y%2 == 1 && y%3 == 0
  4. }
  5. t.Error(err)
  6. }

func CheckEqual

  1. func CheckEqual(f, g interface{}, config *Config)

CheckEqual looks for an input on which f and g return different results. It
calls f and g repeatedly with arbitrary values for each argument. If f and g
return different answers, CheckEqual returns a *CheckEqualError describing the
input and the outputs.

func Value

  1. func Value(t reflect., rand *rand.) (value reflect., ok bool)

Value returns an arbitrary value of the given type. If the type implements the
Generator interface, that will be used. Note: To create arbitrary values for
structs, all the fields must be exported.

A CheckEqualError is the result CheckEqual finding an error.

    type

    1. type CheckError struct {
    2. Count
    3. In []interface{}
    4. }

    A CheckError is the result of Check finding an error.

    1. func (s *CheckError) Error()

    type Config

    A Config structure contains options for running a test.

    1. type Generator interface {
    2. // Generate returns a random instance of the type on which it is a
    3. // method using the size as a size hint.
    4. Generate(rand *rand., size int) .Value
    5. }

    A Generator can generate random values of its own type.

    type

    1. type SetupError

    A SetupError is the result of an error in the way that check is being used,
    independent of the functions being tested.

    1. func (s SetupError) Error()