diff --git a/clause/where_test.go b/clause/where_test.go index 9b69972e5..5938ea63d 100644 --- a/clause/where_test.go +++ b/clause/where_test.go @@ -152,6 +152,28 @@ func TestWhere(t *testing.T) { "SELECT * FROM `users` WHERE (`score` <= ? || `score` > ?) AND `score` > ?", []interface{}{100, 20, 0}, }, + { + []clause.Interface{clause.Select{}, clause.From{}, clause.Where{ + Exprs: []clause.Expression{clause.Not( + clause.Expr{SQL: "`score` <= ? || `score` > ?", + Vars: []interface{}{100, 20}}, + )}, + }}, + "SELECT * FROM `users` WHERE NOT (`score` <= ? || `score` > ?)", + []interface{}{100, 20}, + }, + { + []clause.Interface{clause.Select{}, clause.From{}, clause.Where{ + Exprs: []clause.Expression{clause.Not( + clause.Expr{SQL: "`score` <= ? || `score` > ?", + Vars: []interface{}{100, 20}}, + clause.Expr{SQL: "`score` > ?", + Vars: []interface{}{0}}, + )}, + }}, + "SELECT * FROM `users` WHERE NOT ((`score` <= ? || `score` > ?) AND `score` > ?)", + []interface{}{100, 20, 0}, + }, } for idx, result := range results {