mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	SF #1479988: add methods to allow access to weakrefs for the
weakref.WeakKeyDictionary and weakref.WeakValueDictionary
This commit is contained in:
		
							parent
							
								
									a6d01cec3f
								
							
						
					
					
						commit
						017e68c413
					
				
					 3 changed files with 125 additions and 0 deletions
				
			
		|  | @ -769,10 +769,54 @@ def test_weak_keyed_iters(self): | |||
|         dict, objects = self.make_weak_keyed_dict() | ||||
|         self.check_iters(dict) | ||||
| 
 | ||||
|         # Test keyrefs() | ||||
|         refs = dict.keyrefs() | ||||
|         self.assertEqual(len(refs), len(objects)) | ||||
|         objects2 = list(objects) | ||||
|         for wr in refs: | ||||
|             ob = wr() | ||||
|             self.assert_(dict.has_key(ob)) | ||||
|             self.assert_(ob in dict) | ||||
|             self.assertEqual(ob.arg, dict[ob]) | ||||
|             objects2.remove(ob) | ||||
|         self.assertEqual(len(objects2), 0) | ||||
| 
 | ||||
|         # Test iterkeyrefs() | ||||
|         objects2 = list(objects) | ||||
|         self.assertEqual(len(list(dict.iterkeyrefs())), len(objects)) | ||||
|         for wr in dict.iterkeyrefs(): | ||||
|             ob = wr() | ||||
|             self.assert_(dict.has_key(ob)) | ||||
|             self.assert_(ob in dict) | ||||
|             self.assertEqual(ob.arg, dict[ob]) | ||||
|             objects2.remove(ob) | ||||
|         self.assertEqual(len(objects2), 0) | ||||
| 
 | ||||
|     def test_weak_valued_iters(self): | ||||
|         dict, objects = self.make_weak_valued_dict() | ||||
|         self.check_iters(dict) | ||||
| 
 | ||||
|         # Test valuerefs() | ||||
|         refs = dict.valuerefs() | ||||
|         self.assertEqual(len(refs), len(objects)) | ||||
|         objects2 = list(objects) | ||||
|         for wr in refs: | ||||
|             ob = wr() | ||||
|             self.assertEqual(ob, dict[ob.arg]) | ||||
|             self.assertEqual(ob.arg, dict[ob.arg].arg) | ||||
|             objects2.remove(ob) | ||||
|         self.assertEqual(len(objects2), 0) | ||||
| 
 | ||||
|         # Test itervaluerefs() | ||||
|         objects2 = list(objects) | ||||
|         self.assertEqual(len(list(dict.itervaluerefs())), len(objects)) | ||||
|         for wr in dict.itervaluerefs(): | ||||
|             ob = wr() | ||||
|             self.assertEqual(ob, dict[ob.arg]) | ||||
|             self.assertEqual(ob.arg, dict[ob.arg].arg) | ||||
|             objects2.remove(ob) | ||||
|         self.assertEqual(len(objects2), 0) | ||||
| 
 | ||||
|     def check_iters(self, dict): | ||||
|         # item iterator: | ||||
|         items = dict.items() | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fred Drake
						Fred Drake