mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	importing encoded modules that do not depend on specific stdlib modules being encoded in a certain way.
		
			
				
	
	
		
			123 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""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()
 |