summaryrefslogtreecommitdiff
path: root/lib/python2.7/test/test_property.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/test/test_property.py')
-rw-r--r--lib/python2.7/test/test_property.py231
1 files changed, 0 insertions, 231 deletions
diff --git a/lib/python2.7/test/test_property.py b/lib/python2.7/test/test_property.py
deleted file mode 100644
index e5a029b..0000000
--- a/lib/python2.7/test/test_property.py
+++ /dev/null
@@ -1,231 +0,0 @@
-# Test case for property
-# more tests are in test_descr
-
-import sys
-import unittest
-from test.test_support import run_unittest
-
-class PropertyBase(Exception):
- pass
-
-class PropertyGet(PropertyBase):
- pass
-
-class PropertySet(PropertyBase):
- pass
-
-class PropertyDel(PropertyBase):
- pass
-
-class BaseClass(object):
- def __init__(self):
- self._spam = 5
-
- @property
- def spam(self):
- """BaseClass.getter"""
- return self._spam
-
- @spam.setter
- def spam(self, value):
- self._spam = value
-
- @spam.deleter
- def spam(self):
- del self._spam
-
-class SubClass(BaseClass):
-
- @BaseClass.spam.getter
- def spam(self):
- """SubClass.getter"""
- raise PropertyGet(self._spam)
-
- @spam.setter
- def spam(self, value):
- raise PropertySet(self._spam)
-
- @spam.deleter
- def spam(self):
- raise PropertyDel(self._spam)
-
-class PropertyDocBase(object):
- _spam = 1
- def _get_spam(self):
- return self._spam
- spam = property(_get_spam, doc="spam spam spam")
-
-class PropertyDocSub(PropertyDocBase):
- @PropertyDocBase.spam.getter
- def spam(self):
- """The decorator does not use this doc string"""
- return self._spam
-
-class PropertySubNewGetter(BaseClass):
- @BaseClass.spam.getter
- def spam(self):
- """new docstring"""
- return 5
-
-class PropertyNewGetter(object):
- @property
- def spam(self):
- """original docstring"""
- return 1
- @spam.getter
- def spam(self):
- """new docstring"""
- return 8
-
-class PropertyTests(unittest.TestCase):
- def test_property_decorator_baseclass(self):
- # see #1620
- base = BaseClass()
- self.assertEqual(base.spam, 5)
- self.assertEqual(base._spam, 5)
- base.spam = 10
- self.assertEqual(base.spam, 10)
- self.assertEqual(base._spam, 10)
- delattr(base, "spam")
- self.assertTrue(not hasattr(base, "spam"))
- self.assertTrue(not hasattr(base, "_spam"))
- base.spam = 20
- self.assertEqual(base.spam, 20)
- self.assertEqual(base._spam, 20)
-
- def test_property_decorator_subclass(self):
- # see #1620
- sub = SubClass()
- self.assertRaises(PropertyGet, getattr, sub, "spam")
- self.assertRaises(PropertySet, setattr, sub, "spam", None)
- self.assertRaises(PropertyDel, delattr, sub, "spam")
-
- @unittest.skipIf(sys.flags.optimize >= 2,
- "Docstrings are omitted with -O2 and above")
- def test_property_decorator_subclass_doc(self):
- sub = SubClass()
- self.assertEqual(sub.__class__.spam.__doc__, "SubClass.getter")
-
- @unittest.skipIf(sys.flags.optimize >= 2,
- "Docstrings are omitted with -O2 and above")
- def test_property_decorator_baseclass_doc(self):
- base = BaseClass()
- self.assertEqual(base.__class__.spam.__doc__, "BaseClass.getter")
-
- def test_property_decorator_doc(self):
- base = PropertyDocBase()
- sub = PropertyDocSub()
- self.assertEqual(base.__class__.spam.__doc__, "spam spam spam")
- self.assertEqual(sub.__class__.spam.__doc__, "spam spam spam")
-
- @unittest.skipIf(sys.flags.optimize >= 2,
- "Docstrings are omitted with -O2 and above")
- def test_property_getter_doc_override(self):
- newgettersub = PropertySubNewGetter()
- self.assertEqual(newgettersub.spam, 5)
- self.assertEqual(newgettersub.__class__.spam.__doc__, "new docstring")
- newgetter = PropertyNewGetter()
- self.assertEqual(newgetter.spam, 8)
- self.assertEqual(newgetter.__class__.spam.__doc__, "new docstring")
-
-
-# Issue 5890: subclasses of property do not preserve method __doc__ strings
-class PropertySub(property):
- """This is a subclass of property"""
-
-class PropertySubSlots(property):
- """This is a subclass of property that defines __slots__"""
- __slots__ = ()
-
-class PropertySubclassTests(unittest.TestCase):
-
- def test_slots_docstring_copy_exception(self):
- try:
- class Foo(object):
- @PropertySubSlots
- def spam(self):
- """Trying to copy this docstring will raise an exception"""
- return 1
- except AttributeError:
- pass
- else:
- raise Exception("AttributeError not raised")
-
- @unittest.skipIf(sys.flags.optimize >= 2,
- "Docstrings are omitted with -O2 and above")
- def test_docstring_copy(self):
- class Foo(object):
- @PropertySub
- def spam(self):
- """spam wrapped in property subclass"""
- return 1
- self.assertEqual(
- Foo.spam.__doc__,
- "spam wrapped in property subclass")
-
- @unittest.skipIf(sys.flags.optimize >= 2,
- "Docstrings are omitted with -O2 and above")
- def test_property_setter_copies_getter_docstring(self):
- class Foo(object):
- def __init__(self): self._spam = 1
- @PropertySub
- def spam(self):
- """spam wrapped in property subclass"""
- return self._spam
- @spam.setter
- def spam(self, value):
- """this docstring is ignored"""
- self._spam = value
- foo = Foo()
- self.assertEqual(foo.spam, 1)
- foo.spam = 2
- self.assertEqual(foo.spam, 2)
- self.assertEqual(
- Foo.spam.__doc__,
- "spam wrapped in property subclass")
- class FooSub(Foo):
- @Foo.spam.setter
- def spam(self, value):
- """another ignored docstring"""
- self._spam = 'eggs'
- foosub = FooSub()
- self.assertEqual(foosub.spam, 1)
- foosub.spam = 7
- self.assertEqual(foosub.spam, 'eggs')
- self.assertEqual(
- FooSub.spam.__doc__,
- "spam wrapped in property subclass")
-
- @unittest.skipIf(sys.flags.optimize >= 2,
- "Docstrings are omitted with -O2 and above")
- def test_property_new_getter_new_docstring(self):
-
- class Foo(object):
- @PropertySub
- def spam(self):
- """a docstring"""
- return 1
- @spam.getter
- def spam(self):
- """a new docstring"""
- return 2
- self.assertEqual(Foo.spam.__doc__, "a new docstring")
- class FooBase(object):
- @PropertySub
- def spam(self):
- """a docstring"""
- return 1
- class Foo2(FooBase):
- @FooBase.spam.getter
- def spam(self):
- """a new docstring"""
- return 2
- self.assertEqual(Foo.spam.__doc__, "a new docstring")
-
-
-
-def test_main():
- run_unittest(PropertyTests, PropertySubclassTests)
-
-if __name__ == '__main__':
- test_main()