mirror of
https://github.com/python/cpython.git
synced 2024-12-15 04:44:47 +08:00
6c71091fbe
the new way that once writes types. Deleted the old section and sample code and added a new section building on the Noddy example.
215 lines
3.7 KiB
Python
215 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__)
|
|
|