| # -*- coding: utf-8 -*- |
| """A module to test whether doctest recognizes some 2.2 features, |
| like static and class methods. |
| |
| >>> print('yup') # 1 |
| yup |
| |
| We include some (random) encoded (utf-8) text in the text surrounding |
| the example. It should be ignored: |
| |
| ЉЊЈЁЂ |
| |
| """ |
| |
| import sys |
| import unittest |
| from test import support |
| if sys.flags.optimize >= 2: |
| raise unittest.SkipTest("Cannot test docstrings with -O2") |
| |
| class C(object): |
| """Class C. |
| |
| >>> print(C()) # 2 |
| 42 |
| |
| |
| We include some (random) encoded (utf-8) text in the text surrounding |
| the example. It should be ignored: |
| |
| ЉЊЈЁЂ |
| |
| """ |
| |
| def __init__(self): |
| """C.__init__. |
| |
| >>> print(C()) # 3 |
| 42 |
| """ |
| |
| def __str__(self): |
| """ |
| >>> print(C()) # 4 |
| 42 |
| """ |
| return "42" |
| |
| class D(object): |
| """A nested D class. |
| |
| >>> print("In D!") # 5 |
| In D! |
| """ |
| |
| def nested(self): |
| """ |
| >>> print(3) # 6 |
| 3 |
| """ |
| |
| def getx(self): |
| """ |
| >>> c = C() # 7 |
| >>> c.x = 12 # 8 |
| >>> print(c.x) # 9 |
| -12 |
| """ |
| return -self._x |
| |
| def setx(self, value): |
| """ |
| >>> c = C() # 10 |
| >>> c.x = 12 # 11 |
| >>> print(c.x) # 12 |
| -12 |
| """ |
| self._x = value |
| |
| x = property(getx, setx, doc="""\ |
| >>> c = C() # 13 |
| >>> c.x = 12 # 14 |
| >>> print(c.x) # 15 |
| -12 |
| """) |
| |
| @staticmethod |
| def statm(): |
| """ |
| A static method. |
| |
| >>> print(C.statm()) # 16 |
| 666 |
| >>> print(C().statm()) # 17 |
| 666 |
| """ |
| return 666 |
| |
| @classmethod |
| def clsm(cls, val): |
| """ |
| A class method. |
| |
| >>> print(C.clsm(22)) # 18 |
| 22 |
| >>> print(C().clsm(23)) # 19 |
| 23 |
| """ |
| return val |
| |
| def test_main(): |
| from test import test_doctest2 |
| EXPECTED = 19 |
| f, t = support.run_doctest(test_doctest2) |
| if t != EXPECTED: |
| raise support.TestFailed("expected %d tests to run, not %d" % |
| (EXPECTED, t)) |
| |
| # Pollute the namespace with a bunch of imported functions and classes, |
| # to make sure they don't get tested. |
| from doctest import * |
| |
| if __name__ == '__main__': |
| test_main() |