o
    E¾±hÏ2  ã                   @   sz  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZ d dlmZmZmZ G dd„ dejƒZG dd„ de
ƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZ G dd„ dejƒZ!G dd „ d ejƒZ"G d!d"„ d"ejƒZ#dS )#é    N)Úutf8)Úraise_exc_infoÚConfigurableÚexec_inÚArgReplacerÚtimedelta_to_secondsÚimport_objectÚre_unescape)ÚcastÚDictÚAnyc                   @   ó   e Zd Zdd„ ZdS )ÚRaiseExcInfoTestc              
   C   s†   G dd„ dt ƒ}z|ddƒ‚ |y   t ¡ }Y nw zt|ƒ |  d¡ W d S  |yB } z|  ||d ¡ W Y d }~d S d }~ww )Nc                       s   e Zd Z‡ fdd„Z‡  ZS )z@RaiseExcInfoTest.test_two_arg_exception.<locals>.TwoArgExceptionc                    s   t ƒ  ¡  ||| _| _d S ©N)ÚsuperÚ__init__ÚaÚb)Úselfr   r   ©Ú	__class__© úW/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/tornado/test/util_test.pyr      s   
zIRaiseExcInfoTest.test_two_arg_exception.<locals>.TwoArgException.__init__)Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__r   r   r   r   ÚTwoArgException   s    r   é   é   zdidn't get expected exception)Ú	ExceptionÚsysÚexc_infor   ÚfailÚassertIs)r   r   r"   Úer   r   r   Útest_two_arg_exception   s   
ÿ€ÿz'RaiseExcInfoTest.test_two_arg_exceptionN)r   r   r   r&   r   r   r   r   r      ó    r   c                   @   ó$   e Zd Zedd„ ƒZedd„ ƒZdS )ÚTestConfigurablec                 C   ó   t S r   )r)   ©Úclsr   r   r   Úconfigurable_base,   ó   z"TestConfigurable.configurable_basec                 C   r*   r   )ÚTestConfig1r+   r   r   r   Úconfigurable_default0   r.   z%TestConfigurable.configurable_defaultN©r   r   r   Úclassmethodr-   r0   r   r   r   r   r)   +   s
    
r)   c                   @   ó   e Zd Zddd„ZdS )r/   Nc                 C   ó   || _ || _d S r   )r   Úpos_arg)r   r5   r   r   r   r   Ú
initialize6   ó   
zTestConfig1.initialize©NN©r   r   r   r6   r   r   r   r   r/   5   ó    r/   c                   @   r3   )ÚTestConfig2Nc                 C   r4   r   )r   r5   )r   r5   r   r   r   r   r6   <   r7   zTestConfig2.initializer8   r9   r   r   r   r   r;   ;   r:   r;   c                   @   r(   )ÚTestConfig3c                 C   r*   r   )r<   r+   r   r   r   r-   C   r.   zTestConfig3.configurable_basec                 C   r*   r   )ÚTestConfig3Ar+   r   r   r   r0   G   r.   z TestConfig3.configurable_defaultNr1   r   r   r   r   r<   A   s
    
r<   c                   @   r3   )r=   Nc                 C   ó
   || _ d S r   ©r   )r   r   r   r   r   r6   M   ó   
zTestConfig3A.initializer   r9   r   r   r   r   r=   L   r:   r=   c                   @   r3   )ÚTestConfig3BNc                 C   r>   r   ©r   )r   r   r   r   r   r6   R   r@   zTestConfig3B.initializer   r9   r   r   r   r   rA   Q   r:   rA   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚConfigurableTestc                 C   s   t  ¡ | _t ¡ | _d S r   )r)   Ú_save_configurationÚsavedr<   Úsaved3©r   r   r   r   ÚsetUpW   s   
zConfigurableTest.setUpc                 C   s   t  | j¡ t | j¡ d S r   )r)   Ú_restore_configurationrE   r<   rF   rG   r   r   r   ÚtearDown[   s   zConfigurableTest.tearDownc                 C   sP   |   tƒ t¡ |   tƒ t¡ tdd}|  |jd¡ tdd}|  |jd¡ d S ©Nr   r?   r   rB   )ÚassertIsInstancer/   r;   ÚassertEqualr   r   ©r   ÚobjÚobj2r   r   r   ÚcheckSubclasses_   s   

z ConfigurableTest.checkSubclassesc                 C   sZ   t ttƒ ƒ}|  |t¡ |  |j¡ t ttddƒ}|  |t¡ |  |jd¡ |  ¡  d S )Nr   r?   )r
   r/   r)   rL   ÚassertIsNoner   rM   rQ   ©r   rO   r   r   r   Útest_defaultj   s   zConfigurableTest.test_defaultc                 C   sd   t  t¡ ttt ƒ ƒ}|  |t¡ |  |j¡ ttt ddƒ}|  |t¡ |  |jd¡ |  ¡  d S )Nr   rB   )	r)   Ú	configurer;   r
   rL   rR   r   rM   rQ   rS   r   r   r   Útest_config_classx   ó   
z"ConfigurableTest.test_config_classc                 C   sd   t  d¡ ttt ƒ ƒ}|  |t¡ |  |j¡ ttt ddƒ}|  |t¡ |  |jd¡ |  ¡  d S )Nz"tornado.test.util_test.TestConfig2r   rB   )	r)   rU   r
   r;   rL   rR   r   rM   rQ   rS   r   r   r   Útest_config_str„   rW   z ConfigurableTest.test_config_strc                 C   sŒ   t jd dd ttt ƒ ƒ}|  |t¡ |  |jd¡ ttt dddƒ}|  |t¡ |  |jd¡ |  |jd¡ |  ¡  tƒ }|  	|j¡ d S )Né   r?   é*   é   )
r)   rU   r
   r/   rL   rM   r   r5   rQ   rR   rS   r   r   r   Útest_config_args   ó   z!ConfigurableTest.test_config_argsc                 C   sŒ   t jtdd ttt ƒ ƒ}|  |t¡ |  |jd¡ ttt dddƒ}|  |t¡ |  |jd¡ |  |jd¡ |  ¡  tƒ }|  	|j¡ d S )Né   rB   rZ   é   )
r)   rU   r;   r
   rL   rM   r   r5   rQ   rR   rS   r   r   r   Útest_config_class_args    r]   z'ConfigurableTest.test_config_class_argsc                 C   sv   t jtdd ttt ƒ ƒ}|  |t¡ |  |jd¡ t  t¡ tjtdd ttt ƒ ƒ}|  |t¡ |  |j	d¡ d S rK   )
r)   rU   r<   r
   r=   rL   rM   r   rA   r   rN   r   r   r   Útest_config_multi_level°   s   
z(ConfigurableTest.test_config_multi_levelc                 C   sr   t ƒ }|  |t¡ t  t¡ t ƒ }|  |t¡ tƒ }|  |t¡ t t¡ tƒ }|  |t¡ t ƒ }|  |t¡ d S r   )r<   rL   r=   rU   rA   r)   r/   r;   )r   rO   rP   Úobj3r   r   r   Útest_config_inner_level¼   s   

z(ConfigurableTest.test_config_inner_levelN)r   r   r   rH   rJ   rQ   rT   rV   rX   r\   r`   ra   rc   r   r   r   r   rC   V   s    rC   c                   @   r   )ÚUnicodeLiteralTestc                 C   s   |   tdƒd¡ d S )Nõ   Ã©s   Ã©)rM   r   rG   r   r   r   Útest_unicode_escapesÓ   ó   z'UnicodeLiteralTest.test_unicode_escapesN)r   r   r   rf   r   r   r   r   rd   Ò   r'   rd   c                   @   r   )Ú
ExecInTestc                 C   sF   t  d¡}t  d¡}d g}t|t||dƒ |  |d ttdœ¡ d S )Nz
            from __future__ import annotations
            from tornado.util import exec_in

            exec_in(code2, globals())
            zv
            def f(x: int) -> int:
                return x + 1
            output[0] = f.__annotations__
            )Úcode2Úoutputr   )ÚxÚreturn)ÚtextwrapÚdedentr   ÚdictrM   Úint)r   Úcode1ri   rj   r   r   r   Útest_no_inherit_futureØ   s   ÿ	ÿ	z!ExecInTest.test_no_inherit_futureN)r   r   r   rr   r   r   r   r   rh   ×   r'   rh   c                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚArgReplacerTestc                 C   s   ddd„}t |dƒ| _d S )Nc                 S   s   d S r   r   )rk   ÚyÚcallbackÚzr   r   r   Úfunctionù   s   z'ArgReplacerTest.setUp.<locals>.functionrv   r8   )r   Úreplacer)r   rx   r   r   r   rH   ø   s   
zArgReplacerTest.setUpc                 C   sF   d}t ƒ }|  | j ||¡¡ |  | j d||¡d dt ddf¡ d S )N)r   r   Únew)rv   )ro   rR   ry   Úget_old_valuerM   Úreplace©r   ÚargsÚkwargsr   r   r   Útest_omittedþ   s   þzArgReplacerTest.test_omittedc                 C   sH   d}t ƒ }|  | j ||¡d¡ |  | j d||¡dg d¢t ƒ f¡ d S )N)r   r   ÚoldrY   r   rz   )r   r   rz   rY   ©ro   rM   ry   r{   r|   r}   r   r   r   Útest_position  s   þzArgReplacerTest.test_positionc              
   C   sT   d}t dddd}|  | j ||¡d¡ |  | j d||¡ddt ddddf¡ d S )N)r   r   r   rY   )ru   rv   rw   rz   r‚   r}   r   r   r   Útest_keyword  s   þzArgReplacerTest.test_keywordN)r   r   r   rH   r€   rƒ   r„   r   r   r   r   rt   ÷   s
    		rt   c                   @   r   )ÚTimedeltaToSecondsTestc                 C   s    t jdd}|  t|ƒd¡ d S )Nr   )Úhoursg      ¬@)ÚdatetimeÚ	timedeltarM   r   )r   Ú
time_deltar   r   r   Útest_timedelta_to_seconds  s   z0TimedeltaToSecondsTest.test_timedelta_to_secondsN)r   r   r   rŠ   r   r   r   r   r…     r'   r…   c                   @   rs   )
ÚImportObjectTestc                 C   ó   |   tdƒt¡ d S ©Nztornado.escape.utf8©r$   r   r   rG   r   r   r   Útest_import_member!  rg   z#ImportObjectTest.test_import_memberc                 C   rŒ   r   rŽ   rG   r   r   r   Útest_import_member_unicode$  rg   z+ImportObjectTest.test_import_member_unicodec                 C   ó   |   tdƒtj¡ d S ©Nztornado.escape©r$   r   ÚtornadoÚescaperG   r   r   r   Útest_import_module'  s   z#ImportObjectTest.test_import_modulec                 C   r‘   r’   r“   rG   r   r   r   Útest_import_module_unicode*  s   z+ImportObjectTest.test_import_module_unicodeN)r   r   r   r   r   r–   r—   r   r   r   r   r‹      s
    r‹   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚReUnescapeTestc                 C   s(   d}|D ]}|   |tt |¡ƒ¡ qd S )N)z/favicon.icoz
index.htmlzHello, World!z!$@#%;)rM   r	   Úrer•   )r   Útest_stringsÚstringr   r   r   Útest_re_unescape2  s   ÿzReUnescapeTest.test_re_unescapec                 C   sœ   |   t¡ tdƒ W d   ƒ n1 sw   Y  |   t¡ tdƒ W d   ƒ n1 s-w   Y  |   t¡ tdƒ W d   ƒ d S 1 sGw   Y  d S )Nz\dz\bz\Z)ÚassertRaisesÚ
ValueErrorr	   rG   r   r   r   Ú.test_re_unescape_raises_error_on_invalid_input7  s   
ÿ
ÿ
"ÿz=ReUnescapeTest.test_re_unescape_raises_error_on_invalid_inputN)r   r   r   rœ   rŸ   r   r   r   r   r˜   1  s    r˜   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚVersionInfoTestc                 C   sþ   d } }}d}t  d|¡ }r| ¡ \}}}n:t  d|¡ }r'| ¡ \}}n+t  d|¡ }r9| ¡ \}}}d}nt  d|¡ }rJ| ¡ \}}d}n|  d|› ¡ |  |d d	… t|ƒt|ƒt|ƒf¡ |rs|  t|d	 ƒd
¡ d S |  t|d	 ƒd
¡ d S )NÚ0Fz(\d+)\.(\d+)\.(\d+)z(\d+)\.(\d+)z&(\d+)\.(\d+)\.(\d+)(?:\.dev|a|b|rc)\d+Tz(\d+)\.(\d+)(?:\.dev|a|b|rc)\d+zUnrecognized version format: rY   r   )r™   Ú	fullmatchÚgroupsr#   rM   rp   Ú
assertLess)r   ÚversionÚversion_infoÚmajorÚminorÚpatchÚis_preÚmr   r   r   Úassert_version_info_compatibleA  s"   &z.VersionInfoTest.assert_version_info_compatiblec                 C   sŽ   |   dd¡ |   dd¡ |   dd¡ |   dd¡ |   dd¡ |   d	d¡ |   d
d¡ |  t| j dd¡ |  t| j dd¡ |  t| j dd¡ d S )Nz6.5.0)r_   r^   r   r   z6.5z6.5.1)r_   r^   r   r   z6.6.dev1)r_   r_   r   iœÿÿÿz6.6a1z6.6b1z6.6rc1)r_   r^   r   r   )r_   r[   r   r   )r¬   r   ÚAssertionErrorrG   r   r   r   Útest_version_info_compatibleb  s    
ÿ
ÿ
ÿz,VersionInfoTest.test_version_info_compatiblec                 C   s   |   tjtj¡ d S r   )r¬   r”   r¥   r¦   rG   r   r   r   Útest_current_versiont  rg   z$VersionInfoTest.test_current_versionN)r   r   r   r¬   r®   r¯   r   r   r   r   r    @  s    !r    )$r™   r!   r‡   rm   Úunittestr”   Útornado.escaper   Útornado.utilr   r   r   r   r   r   r	   Útypingr
   r   r   ÚTestCaser   r)   r/   r;   r<   r=   rA   rC   rd   rh   rt   r…   r‹   r˜   r    r   r   r   r   Ú<module>   s0    $

| #