| 
									
										
										
										
											2004-10-13 14:15:32 +00:00
										 |  |  | # -*- coding: utf-8 -*- | 
					
						
							|  |  |  | u"""A module to test whether doctest recognizes some 2.2 features,
 | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  | like static and class methods. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | >>> print 'yup'  # 1 | 
					
						
							|  |  |  | yup | 
					
						
							| 
									
										
										
										
											2004-10-13 14:15:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | We include some (random) encoded (utf-8) text in the text surrounding | 
					
						
							|  |  |  | the example.  It should be ignored: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ЉЊЈЁЂ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-07-23 19:04:11 +00:00
										 |  |  | from test import test_support | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class C(object): | 
					
						
							| 
									
										
										
										
											2004-10-13 14:15:32 +00:00
										 |  |  |     u"""Class C.
 | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     >>> print C()  # 2 | 
					
						
							|  |  |  |     42 | 
					
						
							| 
									
										
										
										
											2004-10-13 14:15:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     We include some (random) encoded (utf-8) text in the text surrounding | 
					
						
							|  |  |  |     the example.  It should be ignored: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ЉЊЈЁЂ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  |     """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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 | 
					
						
							|  |  |  |         """)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-01-16 00:25:31 +00:00
										 |  |  |     @staticmethod | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  |     def statm(): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         A static method. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         >>> print C.statm()    # 16 | 
					
						
							|  |  |  |         666 | 
					
						
							|  |  |  |         >>> print C().statm()  # 17 | 
					
						
							|  |  |  |         666 | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         return 666 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-01-16 00:25:31 +00:00
										 |  |  |     @classmethod | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  |     def clsm(cls, val): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         A class method. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         >>> print C.clsm(22)    # 18 | 
					
						
							|  |  |  |         22 | 
					
						
							| 
									
										
										
										
											2001-10-03 04:15:28 +00:00
										 |  |  |         >>> print C().clsm(23)  # 19 | 
					
						
							|  |  |  |         23 | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  |         """
 | 
					
						
							| 
									
										
										
										
											2001-10-03 04:15:28 +00:00
										 |  |  |         return val | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def test_main(): | 
					
						
							| 
									
										
										
										
											2002-07-30 23:27:12 +00:00
										 |  |  |     from test import test_doctest2 | 
					
						
							| 
									
										
										
										
											2001-10-04 05:27:00 +00:00
										 |  |  |     EXPECTED = 19 | 
					
						
							| 
									
										
										
										
											2001-10-03 04:08:26 +00:00
										 |  |  |     f, t = test_support.run_doctest(test_doctest2) | 
					
						
							|  |  |  |     if t != EXPECTED: | 
					
						
							|  |  |  |         raise test_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() |