mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			214 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			214 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | """Test module for the noddy examples
 | ||
|  | 
 | ||
|  | Noddy 1: | ||
|  | 
 | ||
|  | >>> import noddy | ||
|  | >>> n1 = noddy.Noddy() | ||
|  | >>> n2 = noddy.Noddy() | ||
|  | >>> del n1 | ||
|  | >>> del n2 | ||
|  | 
 | ||
|  | 
 | ||
|  | Noddy 2 | ||
|  | 
 | ||
|  | >>> import noddy2 | ||
|  | >>> n1 = noddy2.Noddy('jim', 'fulton', 42) | ||
|  | >>> n1.first | ||
|  | 'jim' | ||
|  | >>> n1.last | ||
|  | 'fulton' | ||
|  | >>> n1.number | ||
|  | 42 | ||
|  | >>> n1.name() | ||
|  | 'jim fulton' | ||
|  | >>> n1.first = 'will' | ||
|  | >>> n1.name() | ||
|  | 'will fulton' | ||
|  | >>> n1.last = 'tell' | ||
|  | >>> n1.name() | ||
|  | 'will tell' | ||
|  | >>> del n1.first | ||
|  | >>> n1.name() | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | AttributeError: first | ||
|  | >>> n1.first | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | AttributeError: first | ||
|  | >>> n1.first = 'drew' | ||
|  | >>> n1.first | ||
|  | 'drew' | ||
|  | >>> del n1.number | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | TypeError: can't delete numeric/char attribute | ||
|  | >>> n1.number=2 | ||
|  | >>> n1.number | ||
|  | 2 | ||
|  | >>> n1.first = 42 | ||
|  | >>> n1.name() | ||
|  | '42 tell' | ||
|  | >>> n2 = noddy2.Noddy() | ||
|  | >>> n2.name() | ||
|  | ' ' | ||
|  | >>> n2.first | ||
|  | '' | ||
|  | >>> n2.last | ||
|  | '' | ||
|  | >>> del n2.first | ||
|  | >>> n2.first | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | AttributeError: first | ||
|  | >>> n2.first | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | AttributeError: first | ||
|  | >>> n2.name() | ||
|  | Traceback (most recent call last): | ||
|  |   File "<stdin>", line 1, in ? | ||
|  | AttributeError: first | ||
|  | >>> n2.number | ||
|  | 0 | ||
|  | >>> n3 = noddy2.Noddy('jim', 'fulton', 'waaa') | ||
|  | Traceback (most recent call last): | ||
|  |   File "<stdin>", line 1, in ? | ||
|  | TypeError: an integer is required | ||
|  | >>> del n1 | ||
|  | >>> del n2 | ||
|  | 
 | ||
|  | 
 | ||
|  | Noddy 3 | ||
|  | 
 | ||
|  | >>> import noddy3 | ||
|  | >>> n1 = noddy3.Noddy('jim', 'fulton', 42) | ||
|  | >>> n1 = noddy3.Noddy('jim', 'fulton', 42) | ||
|  | >>> n1.name() | ||
|  | 'jim fulton' | ||
|  | >>> del n1.first | ||
|  | Traceback (most recent call last): | ||
|  |   File "<stdin>", line 1, in ? | ||
|  | TypeError: Cannot delete the first attribute | ||
|  | >>> n1.first = 42 | ||
|  | Traceback (most recent call last): | ||
|  |   File "<stdin>", line 1, in ? | ||
|  | TypeError: The first attribute value must be a string | ||
|  | >>> n1.first = 'will' | ||
|  | >>> n1.name() | ||
|  | 'will fulton' | ||
|  | >>> n2 = noddy3.Noddy() | ||
|  | >>> n2 = noddy3.Noddy() | ||
|  | >>> n2 = noddy3.Noddy() | ||
|  | >>> n3 = noddy3.Noddy('jim', 'fulton', 'waaa') | ||
|  | Traceback (most recent call last): | ||
|  |   File "<stdin>", line 1, in ? | ||
|  | TypeError: an integer is required | ||
|  | >>> del n1 | ||
|  | >>> del n2 | ||
|  | 
 | ||
|  | Noddy 4 | ||
|  | 
 | ||
|  | >>> import noddy4 | ||
|  | >>> n1 = noddy4.Noddy('jim', 'fulton', 42) | ||
|  | >>> n1.first | ||
|  | 'jim' | ||
|  | >>> n1.last | ||
|  | 'fulton' | ||
|  | >>> n1.number | ||
|  | 42 | ||
|  | >>> n1.name() | ||
|  | 'jim fulton' | ||
|  | >>> n1.first = 'will' | ||
|  | >>> n1.name() | ||
|  | 'will fulton' | ||
|  | >>> n1.last = 'tell' | ||
|  | >>> n1.name() | ||
|  | 'will tell' | ||
|  | >>> del n1.first | ||
|  | >>> n1.name() | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | AttributeError: first | ||
|  | >>> n1.first | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | AttributeError: first | ||
|  | >>> n1.first = 'drew' | ||
|  | >>> n1.first | ||
|  | 'drew' | ||
|  | >>> del n1.number | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | TypeError: can't delete numeric/char attribute | ||
|  | >>> n1.number=2 | ||
|  | >>> n1.number | ||
|  | 2 | ||
|  | >>> n1.first = 42 | ||
|  | >>> n1.name() | ||
|  | '42 tell' | ||
|  | >>> n2 = noddy4.Noddy() | ||
|  | >>> n2 = noddy4.Noddy() | ||
|  | >>> n2 = noddy4.Noddy() | ||
|  | >>> n2 = noddy4.Noddy() | ||
|  | >>> n2.name() | ||
|  | ' ' | ||
|  | >>> n2.first | ||
|  | '' | ||
|  | >>> n2.last | ||
|  | '' | ||
|  | >>> del n2.first | ||
|  | >>> n2.first | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | AttributeError: first | ||
|  | >>> n2.first | ||
|  | Traceback (most recent call last): | ||
|  | ... | ||
|  | AttributeError: first | ||
|  | >>> n2.name() | ||
|  | Traceback (most recent call last): | ||
|  |   File "<stdin>", line 1, in ? | ||
|  | AttributeError: first | ||
|  | >>> n2.number | ||
|  | 0 | ||
|  | >>> n3 = noddy4.Noddy('jim', 'fulton', 'waaa') | ||
|  | Traceback (most recent call last): | ||
|  |   File "<stdin>", line 1, in ? | ||
|  | TypeError: an integer is required | ||
|  | 
 | ||
|  | 
 | ||
|  | Test cyclic gc(?) | ||
|  | 
 | ||
|  | >>> import gc | ||
|  | >>> gc.disable() | ||
|  | 
 | ||
|  | >>> x = [] | ||
|  | >>> l = [x] | ||
|  | >>> n2.first = l | ||
|  | >>> n2.first | ||
|  | [[]] | ||
|  | >>> l.append(n2) | ||
|  | >>> del l | ||
|  | >>> del n1 | ||
|  | >>> del n2 | ||
|  | >>> sys.getrefcount(x) | ||
|  | 3 | ||
|  | >>> ignore = gc.collect() | ||
|  | >>> sys.getrefcount(x) | ||
|  | 2 | ||
|  | 
 | ||
|  | >>> gc.enable() | ||
|  | """
 | ||
|  | 
 | ||
|  | import os | ||
|  | import sys | ||
|  | from distutils.util import get_platform | ||
|  | PLAT_SPEC = "%s-%s" % (get_platform(), sys.version[0:3]) | ||
|  | src = os.path.join("build", "lib.%s" % PLAT_SPEC) | ||
|  | sys.path.append(src) | ||
|  | 
 | ||
|  | if __name__ == "__main__": | ||
|  |     import doctest, __main__ | ||
|  |     doctest.testmod(__main__) |