| Jim Fulton | 7d42878 | 2004-10-13 14:15:32 +0000 | [diff] [blame] | 1 | # -*- coding: utf-8 -*- | 
| Guido van Rossum | ef87d6e | 2007-05-02 19:09:54 +0000 | [diff] [blame] | 2 | """A module to test whether doctest recognizes some 2.2 features, | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 3 | like static and class methods. | 
| 4 | |||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 5 | >>> print('yup') # 1 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 6 | yup | 
| Jim Fulton | 7d42878 | 2004-10-13 14:15:32 +0000 | [diff] [blame] | 7 | |
| 8 | We include some (random) encoded (utf-8) text in the text surrounding | ||||
| 9 | the example. It should be ignored: | ||||
| 10 | |||||
| 11 | ЉЊЈЁЂ | ||||
| 12 | |||||
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 13 | """ | 
| 14 | |||||
| Benjamin Peterson | ee8712c | 2008-05-20 21:35:26 +0000 | [diff] [blame] | 15 | from test import support | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 16 | |
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 17 | class C(object): | 
| Guido van Rossum | ef87d6e | 2007-05-02 19:09:54 +0000 | [diff] [blame] | 18 | """Class C. | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 19 | |
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 20 | >>> print(C()) # 2 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 21 | 42 | 
| Jim Fulton | 7d42878 | 2004-10-13 14:15:32 +0000 | [diff] [blame] | 22 | |
| 23 | |||||
| 24 | We include some (random) encoded (utf-8) text in the text surrounding | ||||
| 25 | the example. It should be ignored: | ||||
| 26 | |||||
| 27 | ЉЊЈЁЂ | ||||
| 28 | |||||
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 29 | """ | 
| 30 | |||||
| 31 | def __init__(self): | ||||
| 32 | """C.__init__. | ||||
| 33 | |||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 34 | >>> print(C()) # 3 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 35 | 42 | 
| 36 | """ | ||||
| 37 | |||||
| 38 | def __str__(self): | ||||
| 39 | """ | ||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 40 | >>> print(C()) # 4 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 41 | 42 | 
| 42 | """ | ||||
| 43 | return "42" | ||||
| 44 | |||||
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 45 | class D(object): | 
| 46 | """A nested D class. | ||||
| 47 | |||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 48 | >>> print("In D!") # 5 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 49 | In D! | 
| 50 | """ | ||||
| 51 | |||||
| 52 | def nested(self): | ||||
| 53 | """ | ||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 54 | >>> print(3) # 6 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 55 | 3 | 
| 56 | """ | ||||
| 57 | |||||
| 58 | def getx(self): | ||||
| 59 | """ | ||||
| 60 | >>> c = C() # 7 | ||||
| 61 | >>> c.x = 12 # 8 | ||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 62 | >>> print(c.x) # 9 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 63 | -12 | 
| 64 | """ | ||||
| 65 | return -self._x | ||||
| 66 | |||||
| 67 | def setx(self, value): | ||||
| 68 | """ | ||||
| 69 | >>> c = C() # 10 | ||||
| 70 | >>> c.x = 12 # 11 | ||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 71 | >>> print(c.x) # 12 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 72 | -12 | 
| 73 | """ | ||||
| 74 | self._x = value | ||||
| 75 | |||||
| 76 | x = property(getx, setx, doc="""\ | ||||
| 77 | >>> c = C() # 13 | ||||
| 78 | >>> c.x = 12 # 14 | ||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 79 | >>> print(c.x) # 15 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 80 | -12 | 
| 81 | """) | ||||
| 82 | |||||
| Guido van Rossum | 5a8a037 | 2005-01-16 00:25:31 +0000 | [diff] [blame] | 83 | @staticmethod | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 84 | def statm(): | 
| 85 | """ | ||||
| 86 | A static method. | ||||
| 87 | |||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 88 | >>> print(C.statm()) # 16 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 89 | 666 | 
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 90 | >>> print(C().statm()) # 17 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 91 | 666 | 
| 92 | """ | ||||
| 93 | return 666 | ||||
| 94 | |||||
| Guido van Rossum | 5a8a037 | 2005-01-16 00:25:31 +0000 | [diff] [blame] | 95 | @classmethod | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 96 | def clsm(cls, val): | 
| 97 | """ | ||||
| 98 | A class method. | ||||
| 99 | |||||
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 100 | >>> print(C.clsm(22)) # 18 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 101 | 22 | 
| Guido van Rossum | 7131f84 | 2007-02-09 20:13:25 +0000 | [diff] [blame] | 102 | >>> print(C().clsm(23)) # 19 | 
| Tim Peters | 1b0e549 | 2001-10-03 04:15:28 +0000 | [diff] [blame] | 103 | 23 | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 104 | """ | 
| Tim Peters | 1b0e549 | 2001-10-03 04:15:28 +0000 | [diff] [blame] | 105 | return val | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 106 | |
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 107 | def test_main(): | 
| Barry Warsaw | 408b6d3 | 2002-07-30 23:27:12 +0000 | [diff] [blame] | 108 | from test import test_doctest2 | 
| Tim Peters | 2f93e28 | 2001-10-04 05:27:00 +0000 | [diff] [blame] | 109 | EXPECTED = 19 | 
| Benjamin Peterson | ee8712c | 2008-05-20 21:35:26 +0000 | [diff] [blame] | 110 | f, t = support.run_doctest(test_doctest2) | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 111 | if t != EXPECTED: | 
| Benjamin Peterson | ee8712c | 2008-05-20 21:35:26 +0000 | [diff] [blame] | 112 | raise support.TestFailed("expected %d tests to run, not %d" % | 
| Tim Peters | 17111f3 | 2001-10-03 04:08:26 +0000 | [diff] [blame] | 113 | (EXPECTED, t)) | 
| 114 | |||||
| 115 | # Pollute the namespace with a bunch of imported functions and classes, | ||||
| 116 | # to make sure they don't get tested. | ||||
| 117 | from doctest import * | ||||
| 118 | |||||
| 119 | if __name__ == '__main__': | ||||
| 120 | test_main() | ||||