mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			38 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import unittest | ||
|  | from idlelib.Delegator import Delegator | ||
|  | 
 | ||
|  | class DelegatorTest(unittest.TestCase): | ||
|  | 
 | ||
|  |     def test_mydel(self): | ||
|  |         # test a simple use scenario | ||
|  | 
 | ||
|  |         # initialize | ||
|  |         mydel = Delegator(int) | ||
|  |         self.assertIs(mydel.delegate, int) | ||
|  |         self.assertEqual(mydel._Delegator__cache, set()) | ||
|  | 
 | ||
|  |         # add an attribute: | ||
|  |         self.assertRaises(AttributeError, mydel.__getattr__, 'xyz') | ||
|  |         bl = mydel.bit_length | ||
|  |         self.assertIs(bl, int.bit_length) | ||
|  |         self.assertIs(mydel.__dict__['bit_length'], int.bit_length) | ||
|  |         self.assertEqual(mydel._Delegator__cache, {'bit_length'}) | ||
|  | 
 | ||
|  |         # add a second attribute | ||
|  |         mydel.numerator | ||
|  |         self.assertEqual(mydel._Delegator__cache, {'bit_length', 'numerator'}) | ||
|  | 
 | ||
|  |         # delete the second (which, however, leaves it in the name cache) | ||
|  |         del mydel.numerator | ||
|  |         self.assertNotIn('numerator', mydel.__dict__) | ||
|  |         self.assertIn('numerator', mydel._Delegator__cache) | ||
|  | 
 | ||
|  |         # reset by calling .setdelegate, which calls .resetcache | ||
|  |         mydel.setdelegate(float) | ||
|  |         self.assertIs(mydel.delegate, float) | ||
|  |         self.assertNotIn('bit_length', mydel.__dict__) | ||
|  |         self.assertEqual(mydel._Delegator__cache, set()) | ||
|  | 
 | ||
|  | if __name__ == '__main__': | ||
|  |     unittest.main(verbosity=2, exit=2) |