reflect.DeepEqual fails when comparing reflect.Value containing float64. I
think it cannot make sense of reflect.Value pointer tricks and directly
compare reflect.Value.val fields which contain the float value in 64 bits,
but a pointer to the float in 32 bits.
Fortunately, interface{} which have a similar memory layout, compare correctly,
so we just turn the []reflect.Value into []interface{}.
This commit moves the TestSortValues function from dump_test.go to
common_test.go to mirror the new implementation location. It also
slightly formats the tests to be consistent with the rest of the package.
The name indent better describes the function. This also will help
differentiate the function from planned functions that are intended to
perform padding for the purposes of aligning fields, types, and values.
This commit adds tests for a struct which has an embedded struct pointer
and a field that is a pointer to the same object. This ensures the cycle
detection is properly reset between fields.
This commit adds tests for the DisableMethods and DisablePointerMethods
options. All combinations of method options and Stringer interface
invocation for both pointer receivers and non-pointer receivers are
tested.