Open skinass opened 5 years ago
in commit https://github.com/go-test/deep/commit/929fce90938cb6eb75b23056d23a3bbc4e64b926 the check of Equal() function was moved under the reflect.Struct case. and here is an example why this is wrong: https://play.golang.org/p/AlgXufFrO1g
Equal()
reflect.Struct
package main import ( "fmt" "net" "github.com/go-test/deep" ) func main() { ipA := net.ParseIP("1.2.3.4") ipB := net.ParseIP("1.2.3.4").To4() fmt.Println(deep.Equal(ipA, ipB)) fmt.Println(ipA.Equal(ipB)) }
ipA and ipB has different len of their slice inside, but they still represents the same ip. however deep.Equal() say there is a diff between ipA and ipB.
ipA
ipB
deep.Equal()
not only structs may have an Equal() method.
Thanks for the bug report. I'll see if/how to generalize the test for an Equal method to cover all such cases.
Equal
in commit https://github.com/go-test/deep/commit/929fce90938cb6eb75b23056d23a3bbc4e64b926 the check of
Equal()
function was moved under thereflect.Struct
case. and here is an example why this is wrong: https://play.golang.org/p/AlgXufFrO1gipA
andipB
has different len of their slice inside, but they still represents the same ip. howeverdeep.Equal()
say there is a diff betweenipA
andipB
.not only structs may have an
Equal()
method.