summaryrefslogtreecommitdiff
path: root/test/sql/test_operators.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-03-30 21:20:20 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-03-30 21:20:20 -0400
commite16ede8cae00fd5cbbd5fb33d63c14df0153c2bc (patch)
tree3116fa46093c735c59982600489b6d2a80c112fe /test/sql/test_operators.py
parentefd3c311e0c62ae976733cf97e495a3c8ca76906 (diff)
downloadsqlalchemy-e16ede8cae00fd5cbbd5fb33d63c14df0153c2bc.tar.gz
- Added new flag :paramref:`.expression.between.symmetric`, when set to True
renders "BETWEEN SYMMETRIC". Also added a new negation operator "notbetween_op", which now allows an expression like ``~col.between(x, y)`` to render as "col NOT BETWEEN x AND y", rather than a parentheiszed NOT string. fixes #2990
Diffstat (limited to 'test/sql/test_operators.py')
-rw-r--r--test/sql/test_operators.py46
1 files changed, 43 insertions, 3 deletions
diff --git a/test/sql/test_operators.py b/test/sql/test_operators.py
index 1001e598c..31af7d273 100644
--- a/test/sql/test_operators.py
+++ b/test/sql/test_operators.py
@@ -679,8 +679,8 @@ class OperatorPrecedenceTest(fixtures.TestBase, testing.AssertsCompiledSQL):
def test_operator_precedence_9(self):
self.assert_compile(self.table2.select(
not_(self.table2.c.field.between(5, 6))),
- "SELECT op.field FROM op WHERE NOT "
- "(op.field BETWEEN :field_1 AND :field_2)")
+ "SELECT op.field FROM op WHERE "
+ "op.field NOT BETWEEN :field_1 AND :field_2")
def test_operator_precedence_10(self):
self.assert_compile(self.table2.select(not_(self.table2.c.field) == 5),
@@ -1248,7 +1248,7 @@ class NegationTest(fixtures.TestBase, testing.AssertsCompiledSQL):
~(self.table1.c.name.between('jack', 'john'))),
"SELECT mytable.myid, mytable.name FROM "
"mytable WHERE mytable.myid != :myid_1 AND "\
- "NOT (mytable.name BETWEEN :name_1 AND :name_2)"
+ "mytable.name NOT BETWEEN :name_1 AND :name_2"
)
def test_negate_operators_4(self):
@@ -1344,6 +1344,46 @@ class LikeTest(fixtures.TestBase, testing.AssertsCompiledSQL):
"mytable.name NOT ILIKE %(name_1)s",
dialect=postgresql.dialect())
+class BetweenTest(fixtures.TestBase, testing.AssertsCompiledSQL):
+ __dialect__ = 'default'
+
+ table1 = table('mytable',
+ column('myid', Integer),
+ column('name', String),
+ )
+
+ def test_between_1(self):
+ self.assert_compile(
+ self.table1.c.myid.between(1, 2),
+ "mytable.myid BETWEEN :myid_1 AND :myid_2")
+
+ def test_between_2(self):
+ self.assert_compile(
+ ~self.table1.c.myid.between(1, 2),
+ "mytable.myid NOT BETWEEN :myid_1 AND :myid_2")
+
+ def test_between_3(self):
+ self.assert_compile(
+ self.table1.c.myid.between(1, 2, symmetric=True),
+ "mytable.myid BETWEEN SYMMETRIC :myid_1 AND :myid_2")
+
+ def test_between_4(self):
+ self.assert_compile(
+ ~self.table1.c.myid.between(1, 2, symmetric=True),
+ "mytable.myid NOT BETWEEN SYMMETRIC :myid_1 AND :myid_2")
+
+ def test_between_5(self):
+ self.assert_compile(
+ between(self.table1.c.myid, 1, 2, symmetric=True),
+ "mytable.myid BETWEEN SYMMETRIC :myid_1 AND :myid_2")
+
+ def test_between_6(self):
+ self.assert_compile(
+ ~between(self.table1.c.myid, 1, 2, symmetric=True),
+ "mytable.myid NOT BETWEEN SYMMETRIC :myid_1 AND :myid_2")
+
+
+
class MatchTest(fixtures.TestBase, testing.AssertsCompiledSQL):
__dialect__ = 'default'