| 1648 | argnames="fixture", |
| 1649 | ) |
| 1650 | def test_comparison(self, py_op, fwd_op, rev_op, fixture): |
| 1651 | User = self.classes.User |
| 1652 | |
| 1653 | fixture_session().query(User) |
| 1654 | ualias = aliased(User) |
| 1655 | |
| 1656 | lhs, rhs, l_sql, r_sql = fixture(User=User, ualias=ualias) |
| 1657 | |
| 1658 | # the compiled clause should match either (e.g.): |
| 1659 | # 'a' < 'b' -or- 'b' > 'a'. |
| 1660 | compiled = str( |
| 1661 | py_op(lhs, rhs).compile(dialect=default.DefaultDialect()) |
| 1662 | ) |
| 1663 | fwd_sql = "%s %s %s" % (l_sql, fwd_op, r_sql) |
| 1664 | rev_sql = "%s %s %s" % (r_sql, rev_op, l_sql) |
| 1665 | |
| 1666 | self.assert_( |
| 1667 | compiled == fwd_sql or compiled == rev_sql, |
| 1668 | "\n'" |
| 1669 | + compiled |
| 1670 | + "'\n does not match\n'" |
| 1671 | + fwd_sql |
| 1672 | + "'\n or\n'" |
| 1673 | + rev_sql |
| 1674 | + "'", |
| 1675 | ) |
| 1676 | |
| 1677 | def test_o2m_compare_to_null(self): |
| 1678 | User = self.classes.User |