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