blob: ab8a0696736e2377140eaa92296ef5fdcfb667dc [file] [log] [blame]
Guido van Rossumef87d6e2007-05-02 19:09:54 +00001"""A module to test whether doctest recognizes some 2.2 features,
Tim Peters17111f32001-10-03 04:08:26 +00002like static and class methods.
3
Guido van Rossum7131f842007-02-09 20:13:25 +00004>>> print('yup') # 1
Tim Peters17111f32001-10-03 04:08:26 +00005yup
Jim Fulton7d428782004-10-13 14:15:32 +00006
7We include some (random) encoded (utf-8) text in the text surrounding
8the example. It should be ignored:
9
10ЉЊЈЁЂ
11
Tim Peters17111f32001-10-03 04:08:26 +000012"""
13
R. David Murray378c0cf2010-02-24 01:46:21 +000014import sys
15import unittest
R. David Murray378c0cf2010-02-24 01:46:21 +000016if sys.flags.optimize >= 2:
17 raise unittest.SkipTest("Cannot test docstrings with -O2")
Tim Peters17111f32001-10-03 04:08:26 +000018
Tim Peters17111f32001-10-03 04:08:26 +000019class C(object):
Guido van Rossumef87d6e2007-05-02 19:09:54 +000020 """Class C.
Tim Peters17111f32001-10-03 04:08:26 +000021
Guido van Rossum7131f842007-02-09 20:13:25 +000022 >>> print(C()) # 2
Tim Peters17111f32001-10-03 04:08:26 +000023 42
Jim Fulton7d428782004-10-13 14:15:32 +000024
25
26 We include some (random) encoded (utf-8) text in the text surrounding
27 the example. It should be ignored:
28
29 ЉЊЈЁЂ
30
Tim Peters17111f32001-10-03 04:08:26 +000031 """
32
33 def __init__(self):
34 """C.__init__.
35
Guido van Rossum7131f842007-02-09 20:13:25 +000036 >>> print(C()) # 3
Tim Peters17111f32001-10-03 04:08:26 +000037 42
38 """
39
40 def __str__(self):
41 """
Guido van Rossum7131f842007-02-09 20:13:25 +000042 >>> print(C()) # 4
Tim Peters17111f32001-10-03 04:08:26 +000043 42
44 """
45 return "42"
46
Tim Peters17111f32001-10-03 04:08:26 +000047 class D(object):
48 """A nested D class.
49
Guido van Rossum7131f842007-02-09 20:13:25 +000050 >>> print("In D!") # 5
Tim Peters17111f32001-10-03 04:08:26 +000051 In D!
52 """
53
54 def nested(self):
55 """
Guido van Rossum7131f842007-02-09 20:13:25 +000056 >>> print(3) # 6
Tim Peters17111f32001-10-03 04:08:26 +000057 3
58 """
59
60 def getx(self):
61 """
62 >>> c = C() # 7
63 >>> c.x = 12 # 8
Guido van Rossum7131f842007-02-09 20:13:25 +000064 >>> print(c.x) # 9
Tim Peters17111f32001-10-03 04:08:26 +000065 -12
66 """
67 return -self._x
68
69 def setx(self, value):
70 """
71 >>> c = C() # 10
72 >>> c.x = 12 # 11
Guido van Rossum7131f842007-02-09 20:13:25 +000073 >>> print(c.x) # 12
Tim Peters17111f32001-10-03 04:08:26 +000074 -12
75 """
76 self._x = value
77
78 x = property(getx, setx, doc="""\
79 >>> c = C() # 13
80 >>> c.x = 12 # 14
Guido van Rossum7131f842007-02-09 20:13:25 +000081 >>> print(c.x) # 15
Tim Peters17111f32001-10-03 04:08:26 +000082 -12
83 """)
84
Guido van Rossum5a8a0372005-01-16 00:25:31 +000085 @staticmethod
Tim Peters17111f32001-10-03 04:08:26 +000086 def statm():
87 """
88 A static method.
89
Guido van Rossum7131f842007-02-09 20:13:25 +000090 >>> print(C.statm()) # 16
Tim Peters17111f32001-10-03 04:08:26 +000091 666
Guido van Rossum7131f842007-02-09 20:13:25 +000092 >>> print(C().statm()) # 17
Tim Peters17111f32001-10-03 04:08:26 +000093 666
94 """
95 return 666
96
Guido van Rossum5a8a0372005-01-16 00:25:31 +000097 @classmethod
Tim Peters17111f32001-10-03 04:08:26 +000098 def clsm(cls, val):
99 """
100 A class method.
101
Guido van Rossum7131f842007-02-09 20:13:25 +0000102 >>> print(C.clsm(22)) # 18
Tim Peters17111f32001-10-03 04:08:26 +0000103 22
Guido van Rossum7131f842007-02-09 20:13:25 +0000104 >>> print(C().clsm(23)) # 19
Tim Peters1b0e5492001-10-03 04:15:28 +0000105 23
Tim Peters17111f32001-10-03 04:08:26 +0000106 """
Tim Peters1b0e5492001-10-03 04:15:28 +0000107 return val
Tim Peters17111f32001-10-03 04:08:26 +0000108
Miss Islington (bot)65de8082021-10-20 09:52:22 -0700109
110class Test(unittest.TestCase):
111 def test_testmod(self):
112 import doctest, sys
113 EXPECTED = 19
114 f, t = doctest.testmod(sys.modules[__name__])
115 if f:
116 self.fail("%d of %d doctests failed" % (f, t))
117 if t != EXPECTED:
118 self.fail("expected %d tests to run, not %d" % (EXPECTED, t))
119
Tim Peters17111f32001-10-03 04:08:26 +0000120
121# Pollute the namespace with a bunch of imported functions and classes,
122# to make sure they don't get tested.
123from doctest import *
124
125if __name__ == '__main__':
Miss Islington (bot)65de8082021-10-20 09:52:22 -0700126 unittest.main()