class TestIdentityRef(unittest.TestCase): def setUp(self): self.ident = mockup() self.cache = IdentityCache() self.cache.update_ident(self.ident) self.ref = IdentRef(self.ident.key, self.cache) def thorough_equality(self, other_ref): self.assertEqual(self.ref, other_ref) self.assertEqual(hash(self.ref), hash(other_ref)) def thorough_inequality(self, ineq_ref): self.assertNotEqual(self.ref, ineq_ref) self.assertNotEqual(hash(self.ref), hash(ineq_ref)) def test_eq(self): self.thorough_equality(IdentRef(self.ident.key, self.cache)) self.thorough_inequality(IdentRef("random key", self.cache)) self.thorough_inequality(IdentRef(self.ident.key, IdentityCache())) def test_deref(self): self.assertEqual(self.ident, self.ref.deref()) def test_from_cache(self): self.assertEqual(self.ref, self.cache.ref(self.ident)) self.assertEqual(self.ref, self.cache.ref(self.ident.key)) def test_from_ident(self): self.assertEqual(self.ref, self.ident.ref(self.cache)) def test_hashable(self): # What can I say, I'm paranoid. myset = set([self.ref]) self.assertIn(self.ref, myset) self.assertEquals(list(myset), [self.ref])