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__)
|