Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_property.py @ 54294:dba767bc3155 legacy-trunk
remove mention of old ctypes version
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sat, 23 May 2009 20:59:09 +0000 |
| parents | bba7ee9daee0 |
| children | 6768b2350c57 |
| rev | line source |
|---|---|
|
44310
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
1 # Test case for property |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
2 # more tests are in test_descr |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
3 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
4 import unittest |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
5 from test.test_support import run_unittest |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
6 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
7 class PropertyBase(Exception): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
8 pass |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
9 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
10 class PropertyGet(PropertyBase): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
11 pass |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
12 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
13 class PropertySet(PropertyBase): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
14 pass |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
15 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
16 class PropertyDel(PropertyBase): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
17 pass |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
18 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
19 class BaseClass(object): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
20 def __init__(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
21 self._spam = 5 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
22 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
23 @property |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
24 def spam(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
25 """BaseClass.getter""" |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
26 return self._spam |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
27 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
28 @spam.setter |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
29 def spam(self, value): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
30 self._spam = value |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
31 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
32 @spam.deleter |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
33 def spam(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
34 del self._spam |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
35 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
36 class SubClass(BaseClass): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
37 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
38 @BaseClass.spam.getter |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
39 def spam(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
40 """SubClass.getter""" |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
41 raise PropertyGet(self._spam) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
42 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
43 @spam.setter |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
44 def spam(self, value): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
45 raise PropertySet(self._spam) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
46 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
47 @spam.deleter |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
48 def spam(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
49 raise PropertyDel(self._spam) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
50 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
51 class PropertyDocBase(object): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
52 _spam = 1 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
53 def _get_spam(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
54 return self._spam |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
55 spam = property(_get_spam, doc="spam spam spam") |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
56 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
57 class PropertyDocSub(PropertyDocBase): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
58 @PropertyDocBase.spam.getter |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
59 def spam(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
60 """The decorator does not use this doc string""" |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
61 return self._spam |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
62 |
|
53759
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
63 class PropertySubNewGetter(BaseClass): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
64 @BaseClass.spam.getter |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
65 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
66 """new docstring""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
67 return 5 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
68 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
69 class PropertyNewGetter(object): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
70 @property |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
71 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
72 """original docstring""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
73 return 1 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
74 @spam.getter |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
75 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
76 """new docstring""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
77 return 8 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
78 |
|
44310
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
79 class PropertyTests(unittest.TestCase): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
80 def test_property_decorator_baseclass(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
81 # see #1620 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
82 base = BaseClass() |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
83 self.assertEqual(base.spam, 5) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
84 self.assertEqual(base._spam, 5) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
85 base.spam = 10 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
86 self.assertEqual(base.spam, 10) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
87 self.assertEqual(base._spam, 10) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
88 delattr(base, "spam") |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
89 self.assert_(not hasattr(base, "spam")) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
90 self.assert_(not hasattr(base, "_spam")) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
91 base.spam = 20 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
92 self.assertEqual(base.spam, 20) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
93 self.assertEqual(base._spam, 20) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
94 self.assertEqual(base.__class__.spam.__doc__, "BaseClass.getter") |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
95 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
96 def test_property_decorator_subclass(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
97 # see #1620 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
98 sub = SubClass() |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
99 self.assertRaises(PropertyGet, getattr, sub, "spam") |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
100 self.assertRaises(PropertySet, setattr, sub, "spam", None) |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
101 self.assertRaises(PropertyDel, delattr, sub, "spam") |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
102 self.assertEqual(sub.__class__.spam.__doc__, "SubClass.getter") |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
103 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
104 def test_property_decorator_doc(self): |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
105 base = PropertyDocBase() |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
106 sub = PropertyDocSub() |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
107 self.assertEqual(base.__class__.spam.__doc__, "spam spam spam") |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
108 self.assertEqual(sub.__class__.spam.__doc__, "spam spam spam") |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
109 |
|
53759
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
110 def test_property_getter_doc_override(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
111 newgettersub = PropertySubNewGetter() |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
112 self.assertEqual(newgettersub.spam, 5) |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
113 self.assertEqual(newgettersub.__class__.spam.__doc__, "new docstring") |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
114 newgetter = PropertyNewGetter() |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
115 self.assertEqual(newgetter.spam, 8) |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
116 self.assertEqual(newgetter.__class__.spam.__doc__, "new docstring") |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
117 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
118 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
119 # Issue 5890: subclasses of property do not preserve method __doc__ strings |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
120 class PropertySub(property): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
121 """This is a subclass of property""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
122 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
123 class PropertySubSlots(property): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
124 """This is a subclass of property that defines __slots__""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
125 __slots__ = () |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
126 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
127 class PropertySubclassTests(unittest.TestCase): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
128 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
129 def test_docstring_copy(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
130 class Foo(object): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
131 @PropertySub |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
132 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
133 """spam wrapped in property subclass""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
134 return 1 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
135 self.assertEqual( |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
136 Foo.spam.__doc__, |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
137 "spam wrapped in property subclass") |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
138 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
139 def test_slots_docstring_copy_exception(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
140 try: |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
141 class Foo(object): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
142 @PropertySubSlots |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
143 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
144 """Trying to copy this docstring will raise an exception""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
145 return 1 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
146 except AttributeError: |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
147 pass |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
148 else: |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
149 raise Exception("AttributeError not raised") |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
150 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
151 def test_property_setter_copies_getter_docstring(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
152 class Foo(object): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
153 def __init__(self): self._spam = 1 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
154 @PropertySub |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
155 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
156 """spam wrapped in property subclass""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
157 return self._spam |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
158 @spam.setter |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
159 def spam(self, value): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
160 """this docstring is ignored""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
161 self._spam = value |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
162 foo = Foo() |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
163 self.assertEqual(foo.spam, 1) |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
164 foo.spam = 2 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
165 self.assertEqual(foo.spam, 2) |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
166 self.assertEqual( |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
167 Foo.spam.__doc__, |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
168 "spam wrapped in property subclass") |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
169 class FooSub(Foo): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
170 @Foo.spam.setter |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
171 def spam(self, value): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
172 """another ignored docstring""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
173 self._spam = 'eggs' |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
174 foosub = FooSub() |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
175 self.assertEqual(foosub.spam, 1) |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
176 foosub.spam = 7 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
177 self.assertEqual(foosub.spam, 'eggs') |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
178 self.assertEqual( |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
179 FooSub.spam.__doc__, |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
180 "spam wrapped in property subclass") |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
181 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
182 def test_property_new_getter_new_docstring(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
183 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
184 class Foo(object): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
185 @PropertySub |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
186 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
187 """a docstring""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
188 return 1 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
189 @spam.getter |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
190 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
191 """a new docstring""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
192 return 2 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
193 self.assertEqual(Foo.spam.__doc__, "a new docstring") |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
194 class FooBase(object): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
195 @PropertySub |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
196 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
197 """a docstring""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
198 return 1 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
199 class Foo2(FooBase): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
200 @FooBase.spam.getter |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
201 def spam(self): |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
202 """a new docstring""" |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
203 return 2 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
204 self.assertEqual(Foo.spam.__doc__, "a new docstring") |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
205 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
206 |
|
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
207 |
|
44310
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
208 def test_main(): |
|
53759
bba7ee9daee0
Merged revisions 72299 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
44310
diff
changeset
|
209 run_unittest(PropertyTests, PropertySubclassTests) |
|
44310
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
210 |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
211 if __name__ == '__main__': |
|
e70acbf26cda
Merged revisions 59488-59511 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
212 test_main() |
