1"""A module to test whether doctest recognizes some 2.2 features, 2like static and class methods. 3 4>>> print('yup') # 1 5yup 6 7We include some (random) encoded (utf-8) text in the text surrounding 8the example. It should be ignored: 9 10ЉЊЈЁЂ 11 12""" 13 14import sys 15import unittest 16if sys.flags.optimize >= 2: 17 raise unittest.SkipTest("Cannot test docstrings with -O2") 18 19class C(object): 20 """Class C. 21 22 >>> print(C()) # 2 23 42 24 25 26 We include some (random) encoded (utf-8) text in the text surrounding 27 the example. It should be ignored: 28 29 ЉЊЈЁЂ 30 31 """ 32 33 def __init__(self): 34 """C.__init__. 35 36 >>> print(C()) # 3 37 42 38 """ 39 40 def __str__(self): 41 """ 42 >>> print(C()) # 4 43 42 44 """ 45 return "42" 46 47 class D(object): 48 """A nested D class. 49 50 >>> print("In D!") # 5 51 In D! 52 """ 53 54 def nested(self): 55 """ 56 >>> print(3) # 6 57 3 58 """ 59 60 def getx(self): 61 """ 62 >>> c = C() # 7 63 >>> c.x = 12 # 8 64 >>> print(c.x) # 9 65 -12 66 """ 67 return -self._x 68 69 def setx(self, value): 70 """ 71 >>> c = C() # 10 72 >>> c.x = 12 # 11 73 >>> print(c.x) # 12 74 -12 75 """ 76 self._x = value 77 78 x = property(getx, setx, doc="""\ 79 >>> c = C() # 13 80 >>> c.x = 12 # 14 81 >>> print(c.x) # 15 82 -12 83 """) 84 85 @staticmethod 86 def statm(): 87 """ 88 A static method. 89 90 >>> print(C.statm()) # 16 91 666 92 >>> print(C().statm()) # 17 93 666 94 """ 95 return 666 96 97 @classmethod 98 def clsm(cls, val): 99 """ 100 A class method. 101 102 >>> print(C.clsm(22)) # 18 103 22 104 >>> print(C().clsm(23)) # 19 105 23 106 """ 107 return val 108 109 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 120 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__': 126 unittest.main() 127