|
6 | 6 |
|
7 | 7 | from sql import Flavor, Literal, Null, Table |
8 | 8 | from sql.operators import ( |
9 | | - Abs, And, Between, Div, Equal, Exists, FloorDiv, Greater, GreaterEqual, |
10 | | - ILike, In, Is, IsDistinct, IsNot, IsNotDistinct, Less, LessEqual, Like, |
11 | | - LShift, Mod, Mul, Neg, Not, NotBetween, NotEqual, NotILike, NotIn, NotLike, |
12 | | - Operator, Or, Pos, Pow, RShift, Sub) |
| 9 | + Abs, And, Any, Between, Div, Equal, Exists, FloorDiv, Greater, |
| 10 | + GreaterEqual, ILike, In, Is, IsDistinct, IsNot, IsNotDistinct, Less, |
| 11 | + LessEqual, Like, LShift, Mod, Mul, Neg, Not, NotBetween, NotEqual, |
| 12 | + NotILike, NotIn, NotLike, Operator, Or, Pos, Pow, RShift, Sub) |
13 | 13 |
|
14 | 14 |
|
15 | 15 | class TestOperators(unittest.TestCase): |
@@ -418,3 +418,21 @@ def test_floordiv(self): |
418 | 418 | self.assertIn( |
419 | 419 | 'FloorDiv operator is deprecated, use Div function', |
420 | 420 | str(w[-1].message)) |
| 421 | + |
| 422 | + def test_any(self): |
| 423 | + any_ = Any(self.table.select(self.table.c1, where=self.table.c2 == 1)) |
| 424 | + self.assertEqual(str(any_), |
| 425 | + 'ANY (SELECT "a"."c1" FROM "t" AS "a" WHERE "a"."c2" = %s)') |
| 426 | + self.assertEqual(any_.params, (1,)) |
| 427 | + |
| 428 | + for value in [[1, 2, 3], (1, 2, 3), array('l', [1, 2, 3])]: |
| 429 | + with self.subTest(value=value): |
| 430 | + any_ = Any(value) |
| 431 | + self.assertEqual(str(any_), 'ANY (%s)') |
| 432 | + self.assertEqual(any_.params, ([1, 2, 3],)) |
| 433 | + |
| 434 | + def test_binary_unary(self): |
| 435 | + operator = Equal(self.table.c1, Any([1, 2, 3])) |
| 436 | + |
| 437 | + self.assertEqual(str(operator), '"c1" = ANY (%s)') |
| 438 | + self.assertEqual(operator.params, ([1, 2, 3],)) |
0 commit comments