o
    eJ                     @   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   sL   ddl m} |j\}}}}| |d |j||fD ]
}| ||ju  qd S )Nr   advisory_testingmodule)zope.interface.testsr   ZmoduleLevelFrameInfoassertEqual__dict__
assertTrue
my_globalsselfr   kindr   f_locals	f_globalsd r   PD:\Projects\ConvertPro\env\Lib\site-packages\zope/interface/tests/test_advice.pytest_w_module"   s   zFrameInfoTest.test_w_modulec                 C   sL   ddl m} |jj\}}}}| |d |j|fD ]
}| ||ju  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   s`   ddl m} |t \}}}}| |d | |t u  |j|fD ]
}| |t u  q#d S )Nr   getFrameInfozfunction call)	zope.interface.advicer   sys	_getframer   r
   localsr	   globals)r   r   r   r   r   r   r   r   r   r   test_inside_function_call5   s   z'FrameInfoTest.test_inside_function_callc                 C   sn   ddl m} d|i}i }tt|| | |d d | |d |u  | |d d u  | |d |u  d S )	Nr   r   r   r   execr   r   r   )r   r   r   _FUNKY_EXECr   r
   )r   r   Z_globalsZ_localsr   r   r   test_inside_exec=   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   _callFUTO      zTest_isClassAdvisor._callFUTc                 C   s   |  | | d d S )NFr   r*   r   r   r   r   test_w_non_functionS      z'Test_isClassAdvisor.test_w_non_functionc                 C   s   dd }|  | |d d S )Nc                   S      t  NNotImplementedErrorr   r   r   r   fooW      z7Test_isClassAdvisor.test_w_normal_function.<locals>.fooFr,   )r   r4   r   r   r   test_w_normal_functionV   s   z*Test_isClassAdvisor.test_w_normal_functionc                 C   s&   dd }t  |_| | |d d S )Nc                   S   r0   r1   r2   r   r   r   r   bar\   r5   z8Test_isClassAdvisor.test_w_advisor_function.<locals>.barT)objectZpreviousMetaclassr   r*   )r   r7   r   r   r   test_w_advisor_function[   s   z+Test_isClassAdvisor.test_w_advisor_functionN)r"   r#   r$   r*   r.   r6   r9   r   r   r   r   r%   M   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*   d   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   Metai       r?   r   typer   r*   r   r?   r   r   r   test_empty_w_explicit_metatypeh      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?   n   r@   r?   rA   rC   r   r   r   test_singlem   rE   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   Metametas   r@   rG   c                   @   r=   )z8Test_determineMetaclass.test_meta_of_class.<locals>.MetaNr>   r   r   r   r   r?   u   r@   r?   	metaclassrA   )r   rG   r?   r   r   r   test_meta_of_classr   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{   r@   rK   c                   @   r=   )zGTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_BNr>   r   r   r   r   Meta_B~   r@   rL   c                   @   r=   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.ANr>   r   r   r   r   A   r@   rM   rH   c                   @   r=   )zBTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.BNr>   r   r   r   r   B   r@   rN   rA   r   rK   rL   rM   rN   r   r   r   test_multiple_in_hierarchy_py3kz   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   rK      r@   rK   c                   @   r=   )zKTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_BNr>   r   r   r   r   rL      r@   rL   c                   @   r=   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.ANr>   r   r   r   r   rM      r@   rM   rH   c                   @   r=   )zFTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.BNr>   r   r   r   r   rN      r@   rN   )rB   assertRaises	TypeErrorr*   rO   r   r   r   #test_multiple_not_in_hierarchy_py3k   s
   z;Test_determineMetaclass.test_multiple_not_in_hierarchy_py3kN)	r"   r#   r$   r*   rD   rF   rJ   rP   rS   r   r   r   r   r;   b   s    r;   c                   @   r:   )Test_minimalBasesc                 C   s   ddl m} ||S )Nr   )minimalBases)r   rU   )r   ZklassesrU   r   r   r   r*      s   zTest_minimalBases._callFUTc                 C   s   |  | g g  d S r1   r,   r-   r   r   r   
test_empty   r/   zTest_minimalBases.test_emptyc                 C   s   |  | tgtg d S r1   )r   r*   rB   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   r@   rX   r,   )r   rX   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   rM      r@   rM   c                   @   r=   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.BNr>   r   r   r   r   rN      r@   rN   c                   @   r=   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.CNr>   r   r   r   r   rX      r@   rX   c                   @   r=   )z@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.DNr>   r   r   r   r   D   r@   rZ   r,   )r   rM   rN   rX   rZ   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   rM      r@   rM   c                   @   r=   )z@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.BNr>   r   r   r   r   rN      r@   rN   r,   )r   rM   rN   r   r   r   #test_repeats_kicked_to_end_of_queue   s    z5Test_minimalBases.test_repeats_kicked_to_end_of_queueN)	r"   r#   r$   r*   rV   rW   rY   r[   r\   r   r   r   r   rT      s    rT   )	__doc__Zunittestr   ZTestCaser   r    r%   r;   rT   r   r   r   r   <module>   s   (8