Merge "Fix Resource.__eq__ mismatch semantics of object equal"
This commit is contained in:
@@ -521,8 +521,6 @@ class Resource(object):
|
|||||||
# two resources of different types are not equal
|
# two resources of different types are not equal
|
||||||
if not isinstance(other, self.__class__):
|
if not isinstance(other, self.__class__):
|
||||||
return False
|
return False
|
||||||
if hasattr(self, 'id') and hasattr(other, 'id'):
|
|
||||||
return self.id == other.id
|
|
||||||
return self._info == other._info
|
return self._info == other._info
|
||||||
|
|
||||||
def is_loaded(self):
|
def is_loaded(self):
|
||||||
|
@@ -53,9 +53,14 @@ class BaseTest(utils.TestCase):
|
|||||||
self.assertRaises(AttributeError, getattr, f, 'blahblah')
|
self.assertRaises(AttributeError, getattr, f, 'blahblah')
|
||||||
|
|
||||||
def test_eq(self):
|
def test_eq(self):
|
||||||
# Two resources of the same type with the same id: equal
|
# Two resources with same ID: never equal if their info is not equal
|
||||||
r1 = base.Resource(None, {'id': 1, 'name': 'hi'})
|
r1 = base.Resource(None, {'id': 1, 'name': 'hi'})
|
||||||
r2 = base.Resource(None, {'id': 1, 'name': 'hello'})
|
r2 = base.Resource(None, {'id': 1, 'name': 'hello'})
|
||||||
|
self.assertNotEqual(r1, r2)
|
||||||
|
|
||||||
|
# Two resources with same ID: equal if their info is equal
|
||||||
|
r1 = base.Resource(None, {'id': 1, 'name': 'hello'})
|
||||||
|
r2 = base.Resource(None, {'id': 1, 'name': 'hello'})
|
||||||
self.assertEqual(r1, r2)
|
self.assertEqual(r1, r2)
|
||||||
|
|
||||||
# Two resoruces of different types: never equal
|
# Two resoruces of different types: never equal
|
||||||
|
Reference in New Issue
Block a user