| 120 | } |
| 121 | |
| 122 | func AssertEqual(x, y interface{}) bool { |
| 123 | if reflect.DeepEqual(x, y) { |
| 124 | return true |
| 125 | } |
| 126 | if x == nil || y == nil { |
| 127 | return false |
| 128 | } |
| 129 | |
| 130 | xval := reflect.ValueOf(x) |
| 131 | yval := reflect.ValueOf(y) |
| 132 | if xval.Kind() == reflect.Ptr && xval.IsNil() || |
| 133 | yval.Kind() == reflect.Ptr && yval.IsNil() { |
| 134 | return false |
| 135 | } |
| 136 | |
| 137 | if valuer, ok := x.(driver.Valuer); ok { |
| 138 | x, _ = valuer.Value() |
| 139 | } |
| 140 | if valuer, ok := y.(driver.Valuer); ok { |
| 141 | y, _ = valuer.Value() |
| 142 | } |
| 143 | return reflect.DeepEqual(x, y) |
| 144 | } |
| 145 | |
| 146 | func ToString(value interface{}) string { |
| 147 | switch v := value.(type) { |