cpython/Doc/includes/test.py

200 lines
3.6 KiB
Python
Raw Normal View History

"""Test module for the custom examples
2007-08-15 11:28:22 -03:00
Custom 1:
2007-08-15 11:28:22 -03:00
>>> import custom
>>> c1 = custom.Custom()
>>> c2 = custom.Custom()
>>> del c1
>>> del c2
2007-08-15 11:28:22 -03:00
Custom 2
2007-08-15 11:28:22 -03:00
>>> import custom2
>>> c1 = custom2.Custom('jim', 'fulton', 42)
>>> c1.first
2007-08-15 11:28:22 -03:00
'jim'
>>> c1.last
2007-08-15 11:28:22 -03:00
'fulton'
>>> c1.number
2007-08-15 11:28:22 -03:00
42
>>> c1.name()
2007-08-15 11:28:22 -03:00
'jim fulton'
>>> c1.first = 'will'
>>> c1.name()
2007-08-15 11:28:22 -03:00
'will fulton'
>>> c1.last = 'tell'
>>> c1.name()
2007-08-15 11:28:22 -03:00
'will tell'
>>> del c1.first
>>> c1.name()
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
...
AttributeError: first
>>> c1.first
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
...
AttributeError: first
>>> c1.first = 'drew'
>>> c1.first
2007-08-15 11:28:22 -03:00
'drew'
>>> del c1.number
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
...
TypeError: can't delete numeric/char attribute
>>> c1.number=2
>>> c1.number
2007-08-15 11:28:22 -03:00
2
>>> c1.first = 42
>>> c1.name()
2007-08-15 11:28:22 -03:00
'42 tell'
>>> c2 = custom2.Custom()
>>> c2.name()
2007-08-15 11:28:22 -03:00
' '
>>> c2.first
2007-08-15 11:28:22 -03:00
''
>>> c2.last
2007-08-15 11:28:22 -03:00
''
>>> del c2.first
>>> c2.first
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
...
AttributeError: first
>>> c2.first
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
...
AttributeError: first
>>> c2.name()
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: first
>>> c2.number
2007-08-15 11:28:22 -03:00
0
>>> n3 = custom2.Custom('jim', 'fulton', 'waaa')
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: an integer is required (got type str)
>>> del c1
>>> del c2
2007-08-15 11:28:22 -03:00
Custom 3
2007-08-15 11:28:22 -03:00
>>> import custom3
>>> c1 = custom3.Custom('jim', 'fulton', 42)
>>> c1 = custom3.Custom('jim', 'fulton', 42)
>>> c1.name()
2007-08-15 11:28:22 -03:00
'jim fulton'
>>> del c1.first
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: Cannot delete the first attribute
>>> c1.first = 42
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: The first attribute value must be a string
>>> c1.first = 'will'
>>> c1.name()
2007-08-15 11:28:22 -03:00
'will fulton'
>>> c2 = custom3.Custom()
>>> c2 = custom3.Custom()
>>> c2 = custom3.Custom()
>>> n3 = custom3.Custom('jim', 'fulton', 'waaa')
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: an integer is required (got type str)
>>> del c1
>>> del c2
2007-08-15 11:28:22 -03:00
Custom 4
2007-08-15 11:28:22 -03:00
>>> import custom4
>>> c1 = custom4.Custom('jim', 'fulton', 42)
>>> c1.first
2007-08-15 11:28:22 -03:00
'jim'
>>> c1.last
2007-08-15 11:28:22 -03:00
'fulton'
>>> c1.number
2007-08-15 11:28:22 -03:00
42
>>> c1.name()
2007-08-15 11:28:22 -03:00
'jim fulton'
>>> c1.first = 'will'
>>> c1.name()
2007-08-15 11:28:22 -03:00
'will fulton'
>>> c1.last = 'tell'
>>> c1.name()
2007-08-15 11:28:22 -03:00
'will tell'
>>> del c1.first
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
...
TypeError: Cannot delete the first attribute
>>> c1.name()
'will tell'
>>> c1.first = 'drew'
>>> c1.first
2007-08-15 11:28:22 -03:00
'drew'
>>> del c1.number
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
...
TypeError: can't delete numeric/char attribute
>>> c1.number=2
>>> c1.number
2007-08-15 11:28:22 -03:00
2
>>> c1.first = 42
Traceback (most recent call last):
...
TypeError: The first attribute value must be a string
>>> c1.name()
'drew tell'
>>> c2 = custom4.Custom()
>>> c2 = custom4.Custom()
>>> c2 = custom4.Custom()
>>> c2 = custom4.Custom()
>>> c2.name()
2007-08-15 11:28:22 -03:00
' '
>>> c2.first
2007-08-15 11:28:22 -03:00
''
>>> c2.last
2007-08-15 11:28:22 -03:00
''
>>> c2.number
2007-08-15 11:28:22 -03:00
0
>>> n3 = custom4.Custom('jim', 'fulton', 'waaa')
2007-08-15 11:28:22 -03:00
Traceback (most recent call last):
...
TypeError: an integer is required (got type str)
2007-08-15 11:28:22 -03:00
Test cyclic gc(?)
>>> import gc
>>> gc.disable()
>>> class Subclass(custom4.Custom): pass
...
>>> s = Subclass()
>>> s.cycle = [s]
>>> s.cycle.append(s.cycle)
>>> x = object()
>>> s.x = x
>>> del s
2007-08-15 11:28:22 -03:00
>>> 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])
2007-08-15 11:28:22 -03:00
src = os.path.join("build", "lib.%s" % PLAT_SPEC)
sys.path.append(src)
if __name__ == "__main__":
import doctest, __main__
doctest.testmod(__main__)