| commit | aef70dacbc78771e35beb261bb3a72986adf7906 | [log] [tgz] |
|---|---|---|
| author | Daniel Smith <[email protected]> | Sat Aug 09 00:26:21 2014 |
| committer | Daniel Smith <[email protected]> | Sat Aug 09 00:26:21 2014 |
| tree | f1afb98fdabbefa0a8f4228dc32e0ed6230d9b0c | |
| parent | 6897f01a51d9afe3f54e4911f7e1ce6dd399202a [diff] | |
| parent | 77d2131a966bedfc86d32c02b68d51180cdd4f92 [diff] |
Merge pull request #5 from lavalamp/master Fix golint complaints
gofuzz is a library for populating go objects with random values.
This is useful for testing:
Import with import "github.com/google/gofuzz"
You can use it on single variables:
f := fuzz.New() var myInt int f.Fuzz(&myInt) // myInt gets a random value.
You can use it on maps:
f := fuzz.New().NilChance(0).NumElements(1, 1) var myMap map[ComplexKeyType]string f.Fuzz(&myMap) // myMap will have exactly one element.
Customize the chance of getting a nil pointer:
f := fuzz.New().NilChance(.5)
var fancyStruct struct {
A, B, C, D *string
}
f.Fuzz(&fancyStruct) // About half the pointers should be set.
You can even customize the randomization completely if needed:
type MyEnum string
const (
A MyEnum = "A"
B MyEnum = "B"
)
type MyInfo struct {
Type MyEnum
AInfo *string
BInfo *string
}
f := fuzz.New().NilChance(0).Funcs(
func(e *MyInfo, c fuzz.Continue) {
switch c.Intn(2) {
case 0:
e.Type = A
c.Fuzz(&e.AInfo)
case 1:
e.Type = B
c.Fuzz(&e.BInfo)
}
},
)
var myObject MyInfo
f.Fuzz(&myObject) // Type will correspond to whether A or B info is set.
See more examples in example_test.go.
Happy testing!