o
    Êó·im  ã                   @   sd   d Z ddlZddlZG dd„ dejƒZdZG dd„ dejƒZG dd	„ d	ejƒZG d
d„ dejƒZdS )as  Tests for advice

This module was adapted from 'protocols.tests.advice', part of the Python
Enterprise Application Kit (PEAK).  Please notify the PEAK authors
(pje@telecommunity.com and tsarna@sarna.org) if bugs are found or
Zope-specific changes are required, so that the PEAK version of this module
can be kept in sync.

PEAK is a Python application framework that interoperates with (but does
not require) Zope 3 and Twisted.  It provides tools for manipulating UML
models, object-relational persistence, aspect-oriented programming, and more.
Visit the PEAK home page at http://peak.telecommunity.com for more information.
é    Nc                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚFrameInfoTestc                 C   sJ   ddl m} |j\}}}}|  |d¡ |j||fD ]	}|  ||j¡ qd S )Nr   ©Úadvisory_testingÚmodule)Úzope.interface.testsr   ZmoduleLevelFrameInfoÚassertEqualÚ__dict__ÚassertIsÚ
my_globals©Úselfr   Úkindr   Úf_localsÚ	f_globalsÚd© r   úfC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\zope/interface/tests/test_advice.pyÚtest_w_module"   s   ÿÿzFrameInfoTest.test_w_modulec                 C   sJ   ddl m} |jj\}}}}|  |d¡ |j|fD ]	}|  ||j¡ qd S )Nr   r   Úclass)r   r   ZNewStyleClassZclassLevelFrameInfor   r	   r
   r   r   r   r   r   Útest_w_class*   s   ýÿzFrameInfoTest.test_w_classc                 C   sr   ddl m} |t ¡ ƒ\}}}}|  |d¡ t ¡ }|  ||j¡ |  |tƒ ¡ |j|fD ]	}|  |t	ƒ ¡ q-d S )Nr   ©ÚgetFrameInfozfunction call)
Úzope.interface.advicer   ÚsysÚ	_getframer   r   Úlocalsr	   r
   Úglobals)r   r   r   r   r   r   Úframer   r   r   r   Útest_inside_function_call5   s   ÿz'FrameInfoTest.test_inside_function_callc                 C   sf   ddl m} d|i}i }tt||ƒ |  |d d¡ |  |d |¡ |  |d ¡ |  |d |¡ d S )	Nr   r   r   r   Úexecr   r   r   )r   r   r    Ú_FUNKY_EXECr   r
   ZassertIsNone)r   r   Z_globalsZ_localsr   r   r   Útest_inside_execA   s   zFrameInfoTest.test_inside_execN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r"   r   r   r   r   r       s
    r   zMimport sys
kind, module, f_locals, f_globals = getFrameInfo(sys._getframe())
c                   @   r   )
ÚTest_isClassAdvisorc                 O   ó   ddl m} ||i |¤ŽS )Nr   )ÚisClassAdvisor)r   r(   )r   ÚargsÚkwr(   r   r   r   Ú_callFUTT   ó   zTest_isClassAdvisor._callFUTc                 C   s   |   |  | ¡d¡ d S )NF©r   r+   ©r   r   r   r   Útest_w_non_functionX   ó   z'Test_isClassAdvisor.test_w_non_functionc                 C   s   dd„ }|   |  |¡d¡ d S )Nc                   S   ó   t ƒ ‚©N©ÚNotImplementedErrorr   r   r   r   Úfoo]   ó   z7Test_isClassAdvisor.test_w_normal_function.<locals>.fooFr-   )r   r5   r   r   r   Útest_w_normal_function[   s   z*Test_isClassAdvisor.test_w_normal_functionc                 C   s&   dd„ }t ƒ |_|  |  |¡d¡ d S )Nc                   S   r1   r2   r3   r   r   r   r   Úbard   r6   z8Test_isClassAdvisor.test_w_advisor_function.<locals>.barT)ÚobjectZpreviousMetaclassr   r+   )r   r8   r   r   r   Útest_w_advisor_functionb   s   z+Test_isClassAdvisor.test_w_advisor_functionN)r#   r$   r%   r+   r/   r7   r:   r   r   r   r   r&   R   s
    r&   c                   @   ó<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTest_determineMetaclassc                 O   r'   )Nr   )ÚdetermineMetaclass)r   r=   )r   r)   r*   r=   r   r   r   r+   m   r,   z Test_determineMetaclass._callFUTc                 C   s(   G dd„ dt ƒ}|  |  d|¡|¡ d S )Nc                   @   ó   e Zd ZdS )zDTest_determineMetaclass.test_empty_w_explicit_metatype.<locals>.MetaN©r#   r$   r%   r   r   r   r   ÚMetas   ó    r@   r   ©Útyper   r+   ©r   r@   r   r   r   Útest_empty_w_explicit_metatypeq   ó   z6Test_determineMetaclass.test_empty_w_explicit_metatypec                 C   s(   G dd„ dt ƒ}|  |  |f¡t ¡ d S )Nc                   @   r>   )z1Test_determineMetaclass.test_single.<locals>.MetaNr?   r   r   r   r   r@   z   rA   r@   rB   rD   r   r   r   Útest_singlex   rF   z#Test_determineMetaclass.test_singlec                 C   s>   G dd„ dt ƒ}G dd„ dt |d�}|  |  |t f¡|¡ d S )Nc                   @   r>   )z<Test_determineMetaclass.test_meta_of_class.<locals>.MetametaNr?   r   r   r   r   ÚMetameta�   rA   rH   c                   @   r>   )z8Test_determineMetaclass.test_meta_of_class.<locals>.MetaNr?   r   r   r   r   r@   „   rA   r@   ©Ú	metaclassrB   )r   rH   r@   r   r   r   Útest_meta_of_class   s   z*Test_determineMetaclass.test_meta_of_classc                 C   sb   G dd„ dt ƒ}G dd„ d|ƒ}G dd„ dt |d�}G dd	„ d	t |d�}|  |  ||f¡|¡ d S )
Nc                   @   r>   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_ANr?   r   r   r   r   ÚMeta_A‹   rA   rL   c                   @   r>   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNr?   r   r   r   r   ÚMeta_BŽ   rA   rM   c                   @   r>   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANr?   r   r   r   r   ÚA‘   rA   rN   rI   c                   @   r>   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.BNr?   r   r   r   r   ÚB”   rA   rO   rB   ©r   rL   rM   rN   rO   r   r   r   Útest_multiple_in_hierarchy_py3k‰   s
   z7Test_determineMetaclass.test_multiple_in_hierarchy_py3kc                 C   s`   G dd„ dt ƒ}G dd„ dt ƒ}G dd„ dt |d�}G dd	„ d	t |d�}|  t| j||f¡ d S )
Nc                   @   r>   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_ANr?   r   r   r   r   rL   ›   rA   rL   c                   @   r>   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNr?   r   r   r   r   rM   ž   rA   rM   c                   @   r>   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANr?   r   r   r   r   rN   ¡   rA   rN   rI   c                   @   r>   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.BNr?   r   r   r   r   rO   ¤   rA   rO   )rC   ÚassertRaisesÚ	TypeErrorr+   rP   r   r   r   Ú#test_multiple_not_in_hierarchy_py3k™   s
   z;Test_determineMetaclass.test_multiple_not_in_hierarchy_py3kN)	r#   r$   r%   r+   rE   rG   rK   rQ   rT   r   r   r   r   r<   k   s    
r<   c                   @   r;   )ÚTest_minimalBasesc                 C   s   ddl m} ||ƒS )Nr   )ÚminimalBases)r   rV   )r   ZklassesrV   r   r   r   r+   ¬   s   zTest_minimalBases._callFUTc                 C   s   |   |  g ¡g ¡ d S r2   r-   r.   r   r   r   Ú
test_empty°   r0   zTest_minimalBases.test_emptyc                 C   s   |   |  tg¡tg¡ d S r2   )r   r+   rC   r.   r   r   r   Útest_w_newstyle_meta³   s   z&Test_minimalBases.test_w_newstyle_metac                 C   s(   G dd„ dƒ}|   |  |g¡|g¡ d S )Nc                   @   r>   )z2Test_minimalBases.test_w_newstyle_class.<locals>.CNr?   r   r   r   r   ÚC¸   rA   rY   r-   )r   rY   r   r   r   Útest_w_newstyle_class¶   s   z'Test_minimalBases.test_w_newstyle_classc                 C   s¾   G dd„ dƒ}G dd„ d|ƒ}G dd„ d|ƒ}G dd„ dƒ}|   |  |||g¡|g¡ |   |  ||g¡|g¡ |   |  ||g¡|g¡ |   |  ||g¡|g¡ |   |  |||g¡||g¡ d S )	Nc                   @   r>   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.ANr?   r   r   r   r   rN   ¿   rA   rN   c                   @   r>   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNr?   r   r   r   r   rO   Â   rA   rO   c                   @   r>   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNr?   r   r   r   r   rY   Å   rA   rY   c                   @   r>   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.DNr?   r   r   r   r   ÚDÈ   rA   r[   r-   )r   rN   rO   rY   r[   r   r   r   Ú#test_simple_hierarchy_skips_implied½   s    z5Test_minimalBases.test_simple_hierarchy_skips_impliedc                 C   s<   G dd„ dƒ}G dd„ dƒ}|   |  |||g¡||g¡ d S )Nc                   @   r>   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.ANr?   r   r   r   r   rN   Ó   rA   rN   c                   @   r>   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.BNr?   r   r   r   r   rO   Ö   rA   rO   r-   )r   rN   rO   r   r   r   Ú#test_repeats_kicked_to_end_of_queueÑ   s    z5Test_minimalBases.test_repeats_kicked_to_end_of_queueN)	r#   r$   r%   r+   rW   rX   rZ   r\   r]   r   r   r   r   rU   ª   s    rU   )	Ú__doc__r   ZunittestZTestCaser   r!   r&   r<   rU   r   r   r   r   Ú<module>   s   ,?