| 161 | } |
| 162 | |
| 163 | func TestExpression(t *testing.T) { |
| 164 | column := "column-name" |
| 165 | results := []struct { |
| 166 | Expressions []clause.Expression |
| 167 | ExpectedVars []interface{} |
| 168 | Result string |
| 169 | }{{ |
| 170 | Expressions: []clause.Expression{ |
| 171 | clause.Eq{Column: column, Value: "column-value"}, |
| 172 | }, |
| 173 | ExpectedVars: []interface{}{"column-value"}, |
| 174 | Result: "`column-name` = ?", |
| 175 | }, { |
| 176 | Expressions: []clause.Expression{ |
| 177 | clause.Eq{Column: column, Value: nil}, |
| 178 | clause.Eq{Column: column, Value: (*string)(nil)}, |
| 179 | clause.Eq{Column: column, Value: (*int)(nil)}, |
| 180 | clause.Eq{Column: column, Value: (*bool)(nil)}, |
| 181 | clause.Eq{Column: column, Value: (interface{})(nil)}, |
| 182 | clause.Eq{Column: column, Value: sql.NullString{String: "", Valid: false}}, |
| 183 | }, |
| 184 | Result: "`column-name` IS NULL", |
| 185 | }, { |
| 186 | Expressions: []clause.Expression{ |
| 187 | clause.Neq{Column: column, Value: "column-value"}, |
| 188 | }, |
| 189 | ExpectedVars: []interface{}{"column-value"}, |
| 190 | Result: "`column-name` <> ?", |
| 191 | }, { |
| 192 | Expressions: []clause.Expression{ |
| 193 | clause.Neq{Column: column, Value: nil}, |
| 194 | clause.Neq{Column: column, Value: (*string)(nil)}, |
| 195 | clause.Neq{Column: column, Value: (*int)(nil)}, |
| 196 | clause.Neq{Column: column, Value: (*bool)(nil)}, |
| 197 | clause.Neq{Column: column, Value: (interface{})(nil)}, |
| 198 | }, |
| 199 | Result: "`column-name` IS NOT NULL", |
| 200 | }, { |
| 201 | Expressions: []clause.Expression{ |
| 202 | clause.Eq{Column: column, Value: []string{"a", "b"}}, |
| 203 | }, |
| 204 | ExpectedVars: []interface{}{"a", "b"}, |
| 205 | Result: "`column-name` IN (?,?)", |
| 206 | }, { |
| 207 | Expressions: []clause.Expression{ |
| 208 | clause.Neq{Column: column, Value: []string{"a", "b"}}, |
| 209 | }, |
| 210 | ExpectedVars: []interface{}{"a", "b"}, |
| 211 | Result: "`column-name` NOT IN (?,?)", |
| 212 | }, { |
| 213 | Expressions: []clause.Expression{ |
| 214 | clause.Eq{Column: column, Value: []string{}}, |
| 215 | }, |
| 216 | Result: "`column-name` IN (NULL)", |
| 217 | }, { |
| 218 | Expressions: []clause.Expression{ |
| 219 | clause.Eq{Column: clause.Expr{SQL: "SUM(?)", Vars: []interface{}{clause.Column{Name: "id"}}}, Value: 100}, |
| 220 | }, |