mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			213 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			213 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-%d.%d" % (get_platform(), *sys.version_info[:2])
 | |
| src = os.path.join("build", "lib.%s" % PLAT_SPEC)
 | |
| sys.path.append(src)
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     import doctest, __main__
 | |
|     doctest.testmod(__main__)
 | 
