@@ -135,24 +135,42 @@ func TestObjectsAreEqual(t *testing.T) {
135
135
136
136
})
137
137
}
138
+ }
138
139
139
- // Cases where type differ but values are equal
140
- if ! ObjectsAreEqualValues (uint32 (10 ), int32 (10 )) {
141
- t .Error ("ObjectsAreEqualValues should return true" )
142
- }
143
- if ObjectsAreEqualValues (0 , nil ) {
144
- t .Fail ()
145
- }
146
- if ObjectsAreEqualValues (nil , 0 ) {
147
- t .Fail ()
148
- }
140
+ func TestObjectsAreEqualValues (t * testing.T ) {
141
+ now := time .Now ()
149
142
150
- tm := time .Now ()
151
- tz := tm .In (time .Local )
152
- if ! ObjectsAreEqualValues (tm , tz ) {
153
- t .Error ("ObjectsAreEqualValues should return true for time.Time objects with different time zones" )
143
+ cases := []struct {
144
+ expected interface {}
145
+ actual interface {}
146
+ result bool
147
+ }{
148
+ {uint32 (10 ), int32 (10 ), true },
149
+ {0 , nil , false },
150
+ {nil , 0 , false },
151
+ {now , now .In (time .Local ), true }, // should be time zone independent
152
+ {int (270 ), int8 (14 ), false }, // should handle overflow/underflow
153
+ {int8 (14 ), int (270 ), false },
154
+ {[]int {270 , 270 }, []int8 {14 , 14 }, false },
155
+ {complex128 (1e+100 + 1e+100i ), complex64 (complex (math .Inf (0 ), math .Inf (0 ))), false },
156
+ {complex64 (complex (math .Inf (0 ), math .Inf (0 ))), complex128 (1e+100 + 1e+100i ), false },
157
+ {complex128 (1e+100 + 1e+100i ), 270 , false },
158
+ {270 , complex128 (1e+100 + 1e+100i ), false },
159
+ {complex128 (1e+100 + 1e+100i ), 3.14 , false },
160
+ {3.14 , complex128 (1e+100 + 1e+100i ), false },
161
+ {complex128 (1e+10 + 1e+10i ), complex64 (1e+10 + 1e+10i ), true },
162
+ {complex64 (1e+10 + 1e+10i ), complex128 (1e+10 + 1e+10i ), true },
154
163
}
155
164
165
+ for _ , c := range cases {
166
+ t .Run (fmt .Sprintf ("ObjectsAreEqualValues(%#v, %#v)" , c .expected , c .actual ), func (t * testing.T ) {
167
+ res := ObjectsAreEqualValues (c .expected , c .actual )
168
+
169
+ if res != c .result {
170
+ t .Errorf ("ObjectsAreEqualValues(%#v, %#v) should return %#v" , c .expected , c .actual , c .result )
171
+ }
172
+ })
173
+ }
156
174
}
157
175
158
176
type Nested struct {
0 commit comments