import "testing/quick"

このパケージは、ブラックボックステストを支援するためのユーティリティ機能を実装しています。

パッケージファイル

quick.go

Check関数

func Check(function interface{}, config *Config) (err os.Error)

Checkは、関数function(bool型を返せばどんな関数でも良い)がfalseを返すような入力値を探します。Checkは、各引数にランダムな値を使ってfunctionを繰り返し呼び出します。与えた入力値に対してfunctionがfalseを返すとき、Checkはその入力値を*CheckErrorとして返します。例を示します。

func TestOddMultipleOfThree(t *testing.T) {
	f := func(x int) bool {
		y := OddMultipleOfThree(x)
		return y%2 == 1 && y%3 == 0
	}
	if err := quick.Check(f, nil); err != nil {
		t.Error(err)
	}
}

CheckEqual関数

func CheckEqual(f, g interface{}, config *Config) (err os.Error)

CheckEqualは、関数fとgが異なる結果を返すような入力値を探します。CheckEqualは、各引数にランダムな値を使ってfとgを繰り返し呼び出します。fとgから返される値が異なるとき、CheckEqualはその入力値と出力値を格納した *CheckEqualErrorを返します。

Value関数

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

Valueは、指定した型のランダムな値を返します。型がGeneratorインタフェースを実装しているときは、そちらが使われます。注:構造体のランダムな値を作成するには、その構造体の全メンバがエクスポートされていなければなりません。

CheckEqualError型

CheckEqualErrorは、誤りを検出するCheckEqual関数の結果です。

type CheckEqualError struct {
    CheckError
    Out1 []interface{}
    Out2 []interface{}
}

(*CheckEqualError) String関数

func (s *CheckEqualError) String() string

CheckError型

CheckErrorは、誤りを検出するCheck関数の結果です。

type CheckError struct {
    Count int
    In    []interface{}
}

(*CheckError) String関数

func (s *CheckError) String() string

Config型

Config構造体は、テストを実行するためのオプションを含んでいます。

type Config struct {
    // MaxCountには、繰り返しの最大数をセットします。
    // ゼロのときは、MaxCountScaleが使われます。
    MaxCount int
    // MaxCountScaleは、0以上のスケールファクタであり、最大値のデフォルトとして使います。
    // ゼロのときは、デフォルトは変更されません。
    MaxCountScale float
    // nilでないときは、Randは乱数のソースです。
    // nilのときは、代わりにデフォルトの擬似乱数ソースが使用されます。
    Rand *rand.Rand
    // nilでないとき、Valuesに設定された関数は、テストする関数の
    // 引数に対応したランダムな値を生成し、スライスに格納します。
    // nilのときは、代わりにValue関数を使います。
    Values func([]reflect.Value, *rand.Rand)
}

Generator型

Generatorは、その型のランダムな値を生成可能です。

type Generator interface {
    // Generateは、その型のランダムなインスタンスを返します。
    // このメソッドは、サイズのヒントととしてsizeの値を使います。
    Generate(rand *rand.Rand, size int) reflect.Value
}

SetupError型

SetupErrorは、Checkのエラー結果です。テスト対象の関数とは無関係です。

type SetupError string

(SetupError) String関数

func (s SetupError) String() string