Implement rich comparison operators for MinKey and MaxKey, PYTHON-604.
This commit is contained in:
parent
0a69b096b5
commit
c972894953
@ -18,17 +18,30 @@
|
||||
|
||||
class MaxKey(object):
|
||||
"""MongoDB internal MaxKey type.
|
||||
|
||||
.. versionchanged:: 2.7
|
||||
``MaxKey`` now implements comparison operators.
|
||||
"""
|
||||
|
||||
_type_marker = 127
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, MaxKey):
|
||||
return True
|
||||
return NotImplemented
|
||||
return isinstance(other, MaxKey)
|
||||
|
||||
def __ne__(self, other):
|
||||
return not self == other
|
||||
|
||||
def __le__(self, other):
|
||||
return isinstance(other, MaxKey)
|
||||
|
||||
def __lt__(self, dummy):
|
||||
return False
|
||||
|
||||
def __ge__(self, dummy):
|
||||
return True
|
||||
|
||||
def __gt__(self, other):
|
||||
return not isinstance(other, MaxKey)
|
||||
|
||||
def __repr__(self):
|
||||
return "MaxKey()"
|
||||
|
||||
@ -18,17 +18,30 @@
|
||||
|
||||
class MinKey(object):
|
||||
"""MongoDB internal MinKey type.
|
||||
|
||||
.. versionchanged:: 2.7
|
||||
``MinKey`` now implements comparison operators.
|
||||
"""
|
||||
|
||||
_type_marker = 255
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, MinKey):
|
||||
return True
|
||||
return NotImplemented
|
||||
return isinstance(other, MinKey)
|
||||
|
||||
def __ne__(self, other):
|
||||
return not self == other
|
||||
|
||||
def __le__(self, dummy):
|
||||
return True
|
||||
|
||||
def __lt__(self, other):
|
||||
return not isinstance(other, MinKey)
|
||||
|
||||
def __ge__(self, other):
|
||||
return isinstance(other, MinKey)
|
||||
|
||||
def __gt__(self, dummy):
|
||||
return False
|
||||
|
||||
def __repr__(self):
|
||||
return "MinKey()"
|
||||
return "MinKey()"
|
||||
@ -597,6 +597,49 @@ class TestBSON(unittest.TestCase):
|
||||
self.fail('Traceback not captured')
|
||||
else:
|
||||
self.fail('InvalidBSON not raised')
|
||||
|
||||
def test_minkey_maxkey_comparison(self):
|
||||
# MinKey's <, <=, >, >=, !=, and ==.
|
||||
self.assertTrue(MinKey() < None)
|
||||
self.assertTrue(MinKey() < 1)
|
||||
self.assertTrue(MinKey() <= 1)
|
||||
self.assertTrue(MinKey() <= MinKey())
|
||||
self.assertFalse(MinKey() > None)
|
||||
self.assertFalse(MinKey() > 1)
|
||||
self.assertFalse(MinKey() >= 1)
|
||||
self.assertTrue(MinKey() >= MinKey())
|
||||
self.assertTrue(MinKey() != 1)
|
||||
self.assertFalse(MinKey() == 1)
|
||||
self.assertTrue(MinKey() == MinKey())
|
||||
|
||||
# MinKey compared to MaxKey.
|
||||
self.assertTrue(MinKey() < MaxKey())
|
||||
self.assertTrue(MinKey() <= MaxKey())
|
||||
self.assertFalse(MinKey() > MaxKey())
|
||||
self.assertFalse(MinKey() >= MaxKey())
|
||||
self.assertTrue(MinKey() != MaxKey())
|
||||
self.assertFalse(MinKey() == MaxKey())
|
||||
|
||||
# MaxKey's <, <=, >, >=, !=, and ==.
|
||||
self.assertFalse(MaxKey() < None)
|
||||
self.assertFalse(MaxKey() < 1)
|
||||
self.assertFalse(MaxKey() <= 1)
|
||||
self.assertTrue(MaxKey() <= MaxKey())
|
||||
self.assertTrue(MaxKey() > None)
|
||||
self.assertTrue(MaxKey() > 1)
|
||||
self.assertTrue(MaxKey() >= 1)
|
||||
self.assertTrue(MaxKey() >= MaxKey())
|
||||
self.assertTrue(MaxKey() != 1)
|
||||
self.assertFalse(MaxKey() == 1)
|
||||
self.assertTrue(MaxKey() == MaxKey())
|
||||
|
||||
# MaxKey compared to MinKey.
|
||||
self.assertFalse(MaxKey() < MinKey())
|
||||
self.assertFalse(MaxKey() <= MinKey())
|
||||
self.assertTrue(MaxKey() > MinKey())
|
||||
self.assertTrue(MaxKey() >= MinKey())
|
||||
self.assertTrue(MaxKey() != MinKey())
|
||||
self.assertFalse(MaxKey() == MinKey())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Loading…
Reference in New Issue
Block a user