File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3,14 +3,26 @@ package matrix
33import (
44 "iter"
55 "reflect"
6+ "slices"
67)
78
89type testingT interface {
910 Helper ()
1011 Fatalf (format string , args ... any )
1112}
1213
14+ // GenerateAndCollect generates all possible combinations of values for fields of the type T.
15+ // It returns a collected slice of generated test cases.
16+ // Use this function if you need all test cases at once, use a for-range loop on Generate otherwise.
17+ // - len(dims) must equal len(fields(T))
18+ // - dimensions[i].(type) must equal [](fields(T)[i].(type))
19+ // - T must only have exported fields.
20+ func GenerateAndCollect [T any ](t testingT , tcase T , dimensions ... any ) []T {
21+ return slices .Collect (Generate (t , tcase , dimensions ... ))
22+ }
23+
1324// Generate generates all possible combinations of values for fields of the type T.
25+ // It returns an iter.Seq[T] that can be for-ranged over.
1426// - len(dims) must equal len(fields(T))
1527// - dimensions[i].(type) must equal [](fields(T)[i].(type))
1628// - T must only have exported fields.
Original file line number Diff line number Diff line change @@ -134,11 +134,23 @@ func TestNilPointers(t *testing.T) {
134134 {Y : nil },
135135 {Y : ptrTo (1 )},
136136 }
137- generated := slices .Collect (Generate (t , tcase {},
138- []* int {nil , ptrTo (1 )}))
137+ generated := GenerateAndCollect (t , tcase {}, []* int {nil , ptrTo (1 )})
139138
140- if ! reflect .DeepEqual (expected , generated ) {
141- t .Logf ("Expected: %v, got: %v" , expected , generated )
142- t .Fail ()
139+ assert .Equal (t , expected , generated )
140+ }
141+
142+ func TestGenerateAndCollect (t * testing.T ) {
143+ t .Parallel ()
144+
145+ type tcase struct {
146+ Y bool
147+ }
148+
149+ expected := []tcase {
150+ {Y : false },
151+ {Y : true },
143152 }
153+ generated := GenerateAndCollect (t , tcase {}, []bool {false , true })
154+
155+ assert .Equal (t , expected , generated )
144156}
You can’t perform that action at this time.
0 commit comments