Description
EqualExportedValues does not handle slices for now, although Equal and EqualValues compare each element of 2 slices.
Proposed solution
Removing the check that the provided variables are structs or pointers to structs here allows comparing two slices.
|
if aType.Kind() != reflect.Struct { |
Happy to propose a PR if you agree with this design!
I made a PR to remove the described checks.
Use case
The implementation of EqualExportedValues can actually compare slices, if they are inside a struct.
Here is an example.
func TestSomething(t *testing.T) {
type sliceWrapper struct {
ExportedSlice []int
}
a := sliceWrapper{ExportedSlice: []int{1, 2, 3}}
b := sliceWrapper{ExportedSlice: []int{1, 2, 3}}
assert.Equal(t, a.ExportedSlice, b.ExportedSlice) // OK
assert.EqualValues(t, a.ExportedSlice, b.ExportedSlice) // OK
assert.EqualExportedValues(t, a.ExportedSlice, b.ExportedSlice) // Types expected to both be struct or pointer to struct
// Possible workaround: use a struct wrapper.
assert.Equal(t, a, b) // OK
assert.EqualValues(t, a, b) // OK
assert.EqualExportedValues(t, a, b) // OK
}
Description
EqualExportedValuesdoes not handle slices for now, althoughEqualandEqualValuescompare each element of 2 slices.Proposed solution
Removing the check that the provided variables are structs or pointers to structs here allows comparing two slices.
testify/assert/assertions.go
Line 629 in 352d243
Happy to propose a PR if you agree with this design!I made a PR to remove the described checks.
Use case
The implementation of EqualExportedValues can actually compare slices, if they are inside a struct.
Here is an example.