Merge "Fix Resource.__eq__ mismatch semantics of object equal"
This commit is contained in:
commit
c6ff80ffe2
|
@ -517,8 +517,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):
|
||||||
|
|
|
@ -32,10 +32,16 @@ class TestBase(testtools.TestCase):
|
||||||
id = 4
|
id = 4
|
||||||
self.assertEqual(4, base.getid(TmpObject))
|
self.assertEqual(4, base.getid(TmpObject))
|
||||||
|
|
||||||
def test_two_resources_with_same_id_are_equal(self):
|
def test_two_resources_with_same_id_are_not_equal(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)
|
||||||
|
|
||||||
|
def test_two_resources_with_same_id_and_info_are_equal(self):
|
||||||
|
# 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)
|
||||||
|
|
||||||
def test_two_resources_with_eq_info_are_equal(self):
|
def test_two_resources_with_eq_info_are_equal(self):
|
||||||
|
|
Loading…
Reference in New Issue