summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
Diffstat (limited to 'test/sql')
-rw-r--r--test/sql/test_operators.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/test/sql/test_operators.py b/test/sql/test_operators.py
index f4b3cf584..00961a2e8 100644
--- a/test/sql/test_operators.py
+++ b/test/sql/test_operators.py
@@ -2105,9 +2105,41 @@ class NegationTest(fixtures.TestBase, testing.AssertsCompiledSQL):
self.assert_compile(
expr,
- "NOT (mytable.myid = :myid_1 OR mytable.myid = :myid_2)"
+ "NOT (mytable.myid = :myid_1 OR mytable.myid = :myid_2)",
+ dialect=default.DefaultDialect(supports_native_boolean=False)
)
+ def test_negate_operator_self_group(self):
+ orig_expr = or_(
+ self.table1.c.myid == 1, self.table1.c.myid == 2).self_group()
+ expr = not_(orig_expr)
+ is_not_(expr, orig_expr)
+
+ self.assert_compile(
+ expr,
+ "NOT (mytable.myid = :myid_1 OR mytable.myid = :myid_2)",
+ dialect=default.DefaultDialect(supports_native_boolean=False)
+ )
+
+ def test_implicitly_boolean(self):
+ # test for expressions that the database always considers as boolean
+ # even if there is no boolean datatype.
+ assert not self.table1.c.myid._is_implicitly_boolean
+ assert (self.table1.c.myid == 5)._is_implicitly_boolean
+ assert (self.table1.c.myid == 5).self_group()._is_implicitly_boolean
+ assert (self.table1.c.myid == 5).label('x')._is_implicitly_boolean
+ assert not_(self.table1.c.myid == 5)._is_implicitly_boolean
+ assert or_(
+ self.table1.c.myid == 5, self.table1.c.myid == 7
+ )._is_implicitly_boolean
+ assert not column('x', Boolean)._is_implicitly_boolean
+ assert not (self.table1.c.myid + 5)._is_implicitly_boolean
+ assert not not_(column('x', Boolean))._is_implicitly_boolean
+ assert not select([self.table1.c.myid]).\
+ as_scalar()._is_implicitly_boolean
+ assert not text("x = y")._is_implicitly_boolean
+ assert not literal_column("x = y")._is_implicitly_boolean
+
class LikeTest(fixtures.TestBase, testing.AssertsCompiledSQL):
__dialect__ = 'default'